Cosign
O que é Cosign?
CosignCLI open source do projeto Sigstore para assinar, verificar e atestar artefactos OCI e outros softwares, usando fluxos com ou sem chaves.
O Cosign é a ferramenta virada para o utilizador da stack Sigstore, criada para responder aos ataques à cadeia de fornecimento — desde o SolarWinds a pacotes npm sequestrados — que visam o pipeline de compilação e distribuição em vez dos sistemas em execução. Consegue assinar imagens de contentor, artefactos OCI, blobs, SBOM e atestações in-toto, guardando as assinaturas junto do artefacto num registo OCI.
A sua inovação definidora é a assinatura sem chaves (keyless). Em vez de pedir aos programadores que guardem uma chave privada de longa duração, o Cosign solicita um certificado ao Fulcio, uma autoridade de certificação que verifica uma identidade OIDC (um workflow do GitHub Actions, um utilizador Google ou GitHub) e emite um certificado válido por cerca de dez minutos. O Cosign assina dentro dessa janela e depois descarta a chave privada efémera; como os certificados têm vida tão curta, não há necessidade de listas de revogação nem de OCSP. O evento de assinatura é registado no Rekor, um registo de transparência apenas de acréscimo (append-only) e à prova de adulteração, para que qualquer pessoa possa mais tarde provar o que foi assinado, por qual identidade e quando.
As políticas de verificação podem, assim, exigir quem assinou em vez de qual chave assinou — por exemplo, "só são admitidas imagens compiladas pelo nosso reusable workflow release.yml". Controladores de admissão do Kubernetes como o Kyverno, o Connaisseur e o OPA Gatekeeper impõem estas verificações no momento do deploy, e as atestações produzidas pelo Cosign sustentam a proveniência SLSA, transformando afirmações de compilação de outro modo autodeclaradas em afirmações criptograficamente verificáveis.
flowchart TD
A[Job de CI compila a imagem] --> B[cosign sign --identity-token OIDC]
B --> C[Fulcio verifica a identidade OIDC<br/>emite certificado de ~10 min]
C --> D[Cosign assina, descarta a chave]
D --> E[Assinatura + cert registados no Rekor<br/>registo de transparência]
E --> F[Envia imagem + assinatura para o registo]
F --> G[Controlador de admissão<br/>Kyverno / Connaisseur]
G --> H{Assinado por identidade/<br/>workflow de confiança?}
H -->|Sim| I[Deploy permitido]
H -->|Não| J[Bloqueado]● Exemplos
- 01
cosign sign --identity-token $OIDC_TOKEN ghcr.io/org/app:v1.2
- 02
Política Kyverno que verifica se as imagens de produção foram assinadas por um workflow específico do GitHub Actions.
● Perguntas frequentes
O que é Cosign?
CLI open source do projeto Sigstore para assinar, verificar e atestar artefactos OCI e outros softwares, usando fluxos com ou sem chaves. Pertence à categoria Segurança de aplicações da cibersegurança.
O que significa Cosign?
CLI open source do projeto Sigstore para assinar, verificar e atestar artefactos OCI e outros softwares, usando fluxos com ou sem chaves.
Como se defender contra Cosign?
As defesas contra Cosign costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Cosign?
Nomes alternativos comuns: cosign.