
cosign v3.1.3
Signature de code et transparence pour les conteneurs et les binaires
cosign
Signer des conteneurs OCI (et d'autres artefacts) avec Sigstore !
Cosign vise à faire des signatures une infrastructure invisible.
Cosign prend en charge :
- La « signature sans clé » avec l'autorité de certification Fulcio du bien public Sigstore et le journal de transparence Rekor (par défaut)
- La signature matérielle et par KMS
- La signature avec une paire de clés privée/publique chiffrée générée par cosign
- La signature, la vérification et le stockage de conteneurs dans un registre OCI.
- Apportez votre propre PKI
Info
Cosign est développé dans le cadre du projet sigstore.
Nous utilisons aussi un canal Slack !
Cliquez ici pour le lien d'invitation.
Installation
Pour les installations via Homebrew, Arch, Nix, GitHub Action et Kubernetes, consultez la documentation d'installation.
Pour les binaires Linux et macOS, consultez les actifs de version GitHub.
🚨 Si vous téléchargez les versions de cosign depuis notre bucket GCS, veuillez consulter l'avis de dépréciation du 31 juillet 2023 pour plus d'informations. 🚨
Installation pour les développeurs
Si vous avez Go 1.22+, vous pouvez configurer un environnement de développement :```shell $ git clone https://github.com/sigstore/cosign $ cd cosign $ go install ./cmd/cosign $ $(go env GOPATH)/bin/cosign
## Contributing
Si vous êtes intéressé·e par une contribution à `cosign`, veuillez lire la [documentation sur les contributions](https://github.com/sigstore/cosign/blob/main/CONTRIBUTING.md).
Le développement futur de Cosign sera axé sur la prochaine version majeure, qui sera basée sur
[sigstore-go](https://github.com/sigstore/sigstore-go). Les mainteneurs se concentreront sur le développement de fonctionnalités dans
sigstore-go. Les contributions à sigstore-go, en particulier autour de l'utilisation de vos propres clés et de la signature, sont appréciées.
Veuillez consulter le [suivi des problèmes](https://github.com/sigstore/sigstore-go/issues) pour les bonnes premières issues.
Cosign 2.x est une version stable et continuera de recevoir des mises à jour de fonctionnalités et des corrections de bogues périodiques. Les PR
de petite portée et de petite taille ont le plus de chances 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 moins prioritaires que les PR dans sigstore-go.
## Dockerfile
Voici comment installer et utiliser cosign dans un Dockerfile via l'image 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" ]
Quick Start
Ceci montre comment :
- signer une image de conteneur avec la méthode par défaut de « signature sans clé » basée sur l'identité (voir la documentation pour plus d'informations)
- vérifier l'image de conteneur
- explorer les flux plus larges de signature/vérification de blobs sans clé dans le Sigstore Cosign Quickstart
Signer un conteneur et stocker la signature dans le registre
Notez que vous devez toujours signer les images en fonction de leur digest (@sha256:...)
plutôt que d'un tag (:latest) car sinon vous pourriez signer quelque chose que vous
n'aviez pas prévu de signer !```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
Cosign vous invitera à vous authentifier via OIDC, où vous vous connecterez avec votre adresse e-mail.
En coulisses, 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échargera la signature vers le registre OCI en même temps que l'image que vous signez.
### Vérifier un conteneur
Pour vérifier l'image, vous devrez fournir le sujet de certificat et l'émetteur de certificat attendus 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 regex pour les indicateurs d'identité du certificat et d'émetteur, --certificate-identity-regexp et --certificate-oidc-issuer-regexp.
Vérifier un conteneur contre une clé publique
Cette commande renvoie 0 si au moins une signature au format cosign pour l'image est trouvée
correspondant à la clé publique.
Voir l'utilisation détaillée ci-dessous pour des informations et 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 certains que ces signatures « détachées » couvrent la bonne image.```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}
### Verify a container in an air-gapped environment
**Note :** Cette section est obsolète.