
Signature de code et transparence pour les conteneurs et les binaires
Signer des conteneurs OCI (et d'autres artefacts) en utilisant Sigstore !
Cosign vise à rendre les signatures une infrastructure invisible.
Cosign prend en charge :
Cosign est développé dans le cadre du projet sigstore.
Nous utilisons également un canal slack !
Cliquez ici pour le lien d'invitation.
Pour les installations Homebrew, Arch, Nix, GitHub Action et Kubernetes, consultez la documentation d'installation.
Pour les binaires Linux, macOS et Windows, consultez les ressources de version GitHub.
🚨 Si vous téléchargez des versions de cosign depuis notre bucket GCS - veuillez consulter plus d'informations sur l'avis de dépréciation du 31 juillet 2023 🚨
Si vous disposez de Go 1.22+, vous pouvez configurer un environnement de développement :
$ git clone https://github.com/sigstore/cosign
$ cd cosign
$ go install ./cmd/cosign
$ $(go env GOPATH)/bin/cosign
Si vous souhaitez contribuer à cosign, veuillez lire la documentation de contribution.
Le développement futur de Cosign sera axé sur la prochaine version majeure qui sera basée sur sigstore-go. Les mainteneurs se concentreront sur le développement de fonctionnalités au sein de sigstore-go. Les contributions à sigstore-go, en particulier autour des clés apportées par l'utilisateur et de la signature, sont appréciées. Veuillez consulter le suivi des problèmes pour les bons premiers problèmes.
Cosign 2.x est une version stable et continuera de recevoir des mises à jour de fonctionnalités et des corrections de bugs périodiques. Les PR de petite envergure et de petite taille sont les plus susceptibles d'être rapidement examinées.
Les PR qui modifient ou cassent significativement l'API ne seront pas acceptées. Les PR de taille importante mais qui n'introduisent pas de changements cassants peuvent être acceptées, mais seront considérées comme de priorité inférieure aux PR dans sigstore-go.
Voici comment installer et utiliser cosign dans un Dockerfile via l'image ghcr.io/sigstore/cosign/cosign :
FROM ghcr.io/sigstore/cosign/cosign:v2.4.1 as cosign-bin
# Source: https://github.com/chainguard-images/images/tree/main/images/static
FROM cgr.dev/chainguard/static:latest
COPY --from=cosign-bin /ko-app/cosign /usr/local/bin/cosign
ENTRYPOINT [ "cosign" ]
Ceci montre comment :
Notez que vous devez toujours signer les images en fonction de leur digest (@sha256:...)
plutôt que d'un tag (:latest) car sinon vous risquez de signer quelque chose que vous
ne vouliez pas !
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
Cosign vous demandera de vous authentifier via OIDC, où vous vous connecterez avec votre adresse e-mail. En arrière-plan, cosign demandera un certificat de signature de code à l'autorité de certification Fulcio. Le sujet du certificat correspondra à l'adresse e-mail avec laquelle vous vous êtes connecté. Cosign stockera ensuite la signature et le certificat dans le journal de transparence Rekor, et téléversera la signature vers le registre OCI aux côtés de l'image que vous signez.
Pour vérifier l'image, vous devrez fournir le sujet de certificat attendu et l'émetteur de certificat via les options --certificate-identity et --certificate-oidc-issuer :
cosign verify $IMAGE --certificate-identity=$IDENTITY --certificate-oidc-issuer=$OIDC_ISSUER
Vous pouvez également passer une expression régulière pour les options d'identité de certificat et d'émetteur, --certificate-identity-regexp et --certificate-oidc-issuer-regexp.
Cette commande renvoie 0 si au moins une signature au format cosign pour l'image est trouvée
correspondant à la clé publique.
Consultez l'utilisation détaillée ci-dessous pour obtenir des informations et des mises en garde sur les autres formats de signature.
Toutes les charges utiles valides sont imprimées sur stdout, au format json. Notez que ces charges utiles signées incluent le digest de l'image du conteneur, ce qui nous permet d'être sûrs que ces signatures « détachées » couvrent la bonne image.
$ 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}