Claudio Mascaro

Uma cadeia de suprimento de software com um lugar só para bloquear

Times em npm, Go, PyPI, Maven e NuGet, cada um buscando pacotes de uma fonte própria.

lugar para bloquear uma versão vulnerável, em vez de um por fonte
1
barreiras contra um pacote adulterado: o hub o retém, e a admissão o recusaria
2

O problema

Cada time resolvia pacotes do registro público, de um espelho próprio ou de uma cópia vendorizada. Bloquear uma versão vulnerável era passar fonte por fonte.

O que eu mudei

Centralizei a resolução num hub, o Nexus, e desativei as outras fontes. O hub virou um serviço da plataforma interna de desenvolvimento (IDP): publicar passa só pelo pipeline, com build atestado e assinado e scan no OWASP Dependency-Track. Na outra ponta, o build que consome só admite um pacote com assinatura e atestado que se verificam.

Como funciona

Antes: cada time na sua fonte.
Depois: um hub e uma saída para todos os times.

Os parâmetros

Ecossistemas
5 ecossistemas
Times por ecossistema (n)
3 times
Bloqueio num lugar (B)
2 h
Build atestado
0,5 h
Scan
0,25 h

As regras

lugares    antes = n   depois = 1
janela     lugares · B
publicado  ⇔ atestado ∧ identidade OIDC = pipeline ∧ digest = digest atestado ∧ violações = 0
admitido   ⇔ assinatura do pipeline sobre o digest ∧ atestado do pipeline sobre o digest

Quer um lugar só para bloquear o que não deve entrar? Vamos conversar.

Agendar uma conversa →