
cosign v3.1.3
Firma del codice e trasparenza per contenitori e binari
cosign
Firma di container OCI (e altri artefatti) utilizzando Sigstore!
Cosign mira a rendere le firme infrastruttura invisibile.
Cosign supporta:
- "Firma senza chiave" con l'autorità di certificazione Fulcio del bene pubblico Sigstore e il registro di trasparenza Rekor (predefinito)
- Firma hardware e KMS
- Firma con una coppia di chiavi privata/pubblica cifrata generata da cosign
- Firma, verifica e archiviazione di container in un registro OCI.
- Bring-your-own PKI
Info
Cosign è sviluppato come parte del progetto sigstore.
Utilizziamo anche un canale slack!
Clicca qui per il link di invito.
Installazione
Per installazioni tramite Homebrew, Arch, Nix, GitHub Action e Kubernetes consulta la documentazione di installazione.
Per i binari Linux, macOS e Windows, consulta le risorse di rilascio su GitHub.
🚨 Se stai scaricando le release di cosign dal nostro bucket GCS - consulta ulteriori informazioni sull'avviso di deprecazione del 31 luglio 2023 🚨
Installazione per sviluppatori
Se hai Go 1.22+, puoi configurare un ambiente di sviluppo:
$ git clone https://github.com/sigstore/cosign
$ cd cosign
$ go install ./cmd/cosign
$ $(go env GOPATH)/bin/cosign
Contribuire
Se sei interessato a contribuire a cosign, leggi la documentazione per i contributi.
Lo sviluppo futuro di Cosign sarà incentrato sulla prossima major release, che sarà basata su sigstore-go. I maintainer si concentreranno sullo sviluppo di funzionalità all'interno di sigstore-go. I contributi a sigstore-go, in particolare per quanto riguarda bring-your-own keys e la firma, sono apprezzati. Consulta l'issue tracker per le good first issues.
Cosign 2.x è una release stabile e continuerà a ricevere aggiornamenti periodici di funzionalità e correzioni di bug. Le PR di piccola portata e dimensione hanno maggiori probabilità di essere revisionate rapidamente.
Le PR che modificano o rompono significativamente l'API non saranno accettate. Le PR di dimensioni significative ma che non introducono breaking changes potrebbero essere accettate, ma saranno considerate a priorità inferiore rispetto alle PR in sigstore-go.
Dockerfile
Ecco come installare e utilizzare cosign all'interno di un Dockerfile tramite l'immagine 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" ]
Quick Start
Questo mostra come:
- firmare un'immagine container con il metodo predefinito di "keyless signing" basato sull'identità (vedi la documentazione per maggiori informazioni)
- verificare l'immagine container
- esplorare flussi più ampi di firma/verifica keyless di blob nella Sigstore Cosign Quickstart
Firmare un container e memorizzare la firma nel registry
Nota che dovresti sempre firmare le immagini in base al loro digest (@sha256:...)
piuttosto che a un tag (:latest) perché altrimenti potresti firmare qualcosa che
non intendevi firmare!
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 ti chiederà di autenticarti tramite OIDC, dove accederai con il tuo indirizzo email. Sotto il cofano, cosign richiederà un certificato di firma del codice all'autorità di certificazione Fulcio. Il soggetto del certificato corrisponderà all'indirizzo email con cui hai effettuato l'accesso. Cosign memorizzerà quindi la firma e il certificato nel registro di trasparenza Rekor, e caricherà la firma nel registro OCI insieme all'immagine che stai firmando.
Verificare un container
Per verificare l'immagine, dovrai passare il soggetto del certificato e l'emittente del certificato previsti tramite i flag --certificate-identity e --certificate-oidc-issuer:
cosign verify $IMAGE --certificate-identity=$IDENTITY --certificate-oidc-issuer=$OIDC_ISSUER
Puoi anche passare un regex per i flag certificate identity e issuer, --certificate-identity-regexp e --certificate-oidc-issuer-regexp.
Verificare un container rispetto a una chiave pubblica
Questo comando restituisce 0 se viene trovata almeno una firma in formato cosign per l'immagine
corrispondente alla chiave pubblica.
Consulta l'utilizzo dettagliato di seguito per informazioni e avvertenze sugli altri formati di firma.
Eventuali payload validi vengono stampati su stdout, in formato json. Nota che questi payload firmati includono il digest dell'immagine del container, ed è così che possiamo essere certi che queste firme "detached" coprano l'immagine corretta.
$ 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}
Verificare un container in un ambiente air-gapped
Nota: Questa sezione è obsoleta.