O Que É Assinatura de Artifact?
A assinatura de artifact anexa uma assinatura criptográfica a uma saída de build, para que qualquer um verifique que ela não foi adulterada e veio de você.
Assim que um artifact deixa seu pipeline, ele passa por registries e redes. A assinatura permite que um consumidor confirme duas coisas antes de confiar nele: que está inalterado desde que você o construiu e que você foi quem o construiu.
Como funciona a assinatura
O pipeline calcula um digest do artifact e o assina com uma chave privada. Os consumidores verificam a assinatura com a chave pública correspondente - se o artifact mudou nem que seja um byte, a verificação falha.
Assinatura sem chave
Gerenciar chaves de assinatura de longa duração é arriscado. A assinatura sem chave (por exemplo via Sigstore/cosign) usa certificados de curta duração vinculados a uma identidade OIDC, então não há chave privada para vazar - o mesmo modelo de identidade da autenticação OIDC na nuvem.
Um pequeno exemplo
Na CI, cosign sign <image> assina sua imagem de container usando a identidade OIDC do workflow; nenhuma chave é armazenada. Um gate de deploy roda cosign verify e recusa qualquer imagem sem uma assinatura válida da sua identidade esperada.
Assinatura vs proveniência
A assinatura prova a integridade e a origem do próprio artifact. A proveniência descreve como ele foi construído. Elas se combinam naturalmente: você assina o artifact e assina a declaração de proveniência que o acompanha.
A verificação é o ponto
A assinatura só ajuda se algo checa a assinatura. Imponha a verificação na fronteira que importa - seu passo de deploy ou admission controller - para que um artifact não assinado ou adulterado seja rejeitado antes de rodar.
Principais conclusões
- A assinatura permite que consumidores verifiquem a integridade e a origem de um artifact.
- A assinatura sem chave evita chaves de longa duração usando identidades OIDC de curta duração.
- A assinatura só é útil se algo impõe a verificação.