
cosign v3.1.3
Assinatura de código e transparência para contêineres e binários
cosign
Assinando contêineres OCI (e outros artefatos) usando Sigstore!
O Cosign visa tornar as assinaturas uma infraestrutura invisível.
O Cosign suporta:
- "Assinatura sem chave" com a autoridade certificadora Fulcio de bem público do Sigstore e o log de transparência Rekor (padrão)
- Assinatura por hardware e KMS
- Assinatura com um par de chaves privada/pública criptografado gerado pelo cosign
- Assinatura, verificação e armazenamento de contêineres em um registro OCI.
- Traga sua própria PKI
Informações
O Cosign é desenvolvido como parte do projeto sigstore.
Também usamos um canal no Slack!
Clique aqui para o link de convite.
Instalação
Para instalações via Homebrew, Arch, Nix, GitHub Action e Kubernetes, consulte a documentação de instalação.
Para binários Linux e macOS, consulte os ativos de release do GitHub.
🚨 Se você está baixando releases do cosign do nosso bucket GCS - consulte mais informações no aviso de descontinuação de 31 de julho de 2023 🚨
Instalação para Desenvolvedores
Se você tiver Go 1.22+, pode configurar um ambiente de desenvolvimento:```shell $ git clone https://github.com/sigstore/cosign $ cd cosign $ go install ./cmd/cosign $ $(go env GOPATH)/bin/cosign
## Contribuindo
Se você estiver interessado em contribuir com o `cosign`, leia a [documentação de contribuição](https://github.com/sigstore/cosign/blob/main/CONTRIBUTING.md).
O desenvolvimento futuro do Cosign será focado na próxima versão principal, que será baseada em
[sigstore-go](https://github.com/sigstore/sigstore-go). Os mantenedores estarão focados no desenvolvimento de funcionalidades dentro do
sigstore-go. Contribuições para o sigstore-go, especialmente em relação a trazer suas próprias chaves e assinatura, são apreciadas.
Por favor, consulte o [rastreador de issues](https://github.com/sigstore/sigstore-go/issues) para boas primeiras issues.
O Cosign 2.x é uma versão estável e continuará recebendo atualizações periódicas de funcionalidades e correções de bugs. PRs
que sejam pequenos em escopo e tamanho têm maior probabilidade de serem revisados rapidamente.
PRs que modifiquem significativamente ou quebrem a API não serão aceitos. PRs que sejam significativos em tamanho, mas que não
introduzam mudanças que quebrem a compatibilidade podem ser aceitos, mas serão considerados de prioridade menor do que PRs no sigstore-go.
## Dockerfile
Veja como instalar e usar o cosign dentro de um Dockerfile por meio da imagem ghcr.io/sigstore/cosign/cosign:```shell
FROM ghcr.io/sigstore/cosign/cosign:v2.4.1 as cosign-bin
# Source: https://github.com/chainguard-images/static
FROM cgr.dev/chainguard/static:latest
COPY --from=cosign-bin /ko-app/cosign /usr/local/bin/cosign
ENTRYPOINT [ "cosign" ]
Início Rápido
Isto mostra como:
- assinar uma imagem de contêiner com o método padrão de "assinatura sem chave" baseado em identidade (consulte a documentação para obter mais informações)
- verificar a imagem do contêiner
- explorar fluxos mais amplos de assinatura/verificação de blobs sem chave no Sigstore Cosign Quickstart
Assinar um contêiner e armazenar a assinatura no registro
Observe que você deve sempre assinar imagens com base no digest (@sha256:...)
em vez de uma tag (:latest), pois, caso contrário, você pode assinar algo que
não pretendia!```shell
cosign sign $IMAGE
Generating ephemeral keys... Retrieving signed certificate...
Note that there may be personally identifiable information associated with this signed artifact.
This may include the email address associated with the account with which you authenticate.
This information will be used for signing this artifact and will be stored in public transparency logs and cannot be removed later.
By typing 'y', you attest that you grant (or have permission to grant) and agree to have this information stored permanently in transparency logs. Are you sure you would like to continue? [y/N] y Your browser will now be opened to: https://oauth2.sigstore.dev/auth/auth?access_type=online&client_id=sigstore&code_challenge=OrXitVKUZm2lEWHVt1oQWR4HZvn0rSlKhLcltglYxCY&code_challenge_method=S256&nonce=2KvOWeTFxYfxyzHtssvlIXmY6Jk&redirect_uri=http%3A%2F%2Flocalhost%3A57102%2Fauth%2Fcallback&response_type=code&scope=openid+email&state=2KvOWfbQJ1caqScgjwibzK2qJmb Successfully verified SCT... tlog entry created with index: 12086900 Pushing signature to: $IMAGE
O Cosign solicitará que você se autentique via OIDC, onde fará login com seu endereço de e-mail.
Nos bastidores, o cosign solicitará um certificado de assinatura de código à autoridade de certificação Fulcio.
O assunto do certificado corresponderá ao endereço de e-mail com o qual você fez login.
O cosign armazenará então a assinatura e o certificado no log de transparência Rekor e enviará a assinatura ao registro OCI juntamente com a imagem que você está assinando.
### Verificar um contêiner
Para verificar a imagem, você precisará informar o assunto do certificado esperado e o emissor do certificado por meio das flags `--certificate-identity` e `--certificate-oidc-issuer`:```
cosign verify $IMAGE --certificate-identity=$IDENTITY --certificate-oidc-issuer=$OIDC_ISSUER
Você também pode passar uma regex para os flags de identidade do certificado e de emissor, --certificate-identity-regexp e --certificate-oidc-issuer-regexp.
Verificar um contêiner contra uma chave pública
Este comando retorna 0 se pelo menos uma assinatura no formato cosign para a imagem for encontrada
correspondendo à chave pública.
Consulte o uso detalhado abaixo para informações e ressalvas sobre outros formatos de assinatura.
Quaisquer payloads válidos são impressos na stdout, em formato json. Observe que esses payloads assinados incluem o digest da imagem do contêiner, que é como podemos ter certeza de que essas assinaturas "desanexadas" cobrem a imagem correta.```shell $ cosign verify --key cosign.pub $IMAGE_URI:1h The following checks were performed on these signatures:
- The cosign claims were validated
- The signatures were verified against the specified public key {"Critical":{"Identity":{"docker-reference":""},"Image":{"Docker-manifest-digest":"sha256:87ef60f558bad79beea6425a3b28989f01dd417164150ab3baab98dcbf04def8"},"Type":"cosign container image signature"},"Optional":null}
### Verificar um contêiner em um ambiente isolado (air-gapped)
**Nota:** Esta seção está desatualizada.