
cosign v3.1.3
Firma del codice e trasparenza per contenitori e binari
cosign
Firmare container OCI (e altri artefatti) usando Sigstore!
Cosign punta a rendere le firme un'infrastruttura invisibile.
Cosign supporta:
- "Firma keyless" con l'autorità di certificazione Fulcio del bene pubblico Sigstore e il log di trasparenza Rekor (predefinita)
- Firma hardware e KMS
- Firma con una coppia di chiavi privata/pubblica crittografata generata da cosign
- Firma di container, verifica e archiviazione in un registro OCI.
- Porta la tua PKI
Informazioni
Cosign è sviluppato come parte del progetto sigstore.
Usiamo anche un canale Slack!
Clicca qui per il link di invito.
Installazione
Per le installazioni con Homebrew, Arch, Nix, GitHub Action e Kubernetes, consulta la documentazione di installazione.
Per i binari Linux e macOS, consulta le risorse di rilascio GitHub.
🚨 Se stai scaricando 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:```shell $ 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 sui contributi](https://github.com/sigstore/cosign/blob/main/CONTRIBUTING.md).
Lo sviluppo futuro di Cosign sarà incentrato sulla prossima major release, che sarà basata su
[sigstore-go](https://github.com/sigstore/sigstore-go). I maintainer si concentreranno sullo sviluppo di funzionalità all'interno di
sigstore-go. Sono apprezzati i contributi a sigstore-go, in particolare per quanto riguarda bring-your-own keys e la firma.
Consulta il [issue tracker](https://github.com/sigstore/sigstore-go/issues) per le prime issue adatte.
Cosign 2.x è una release stabile e continuerà a ricevere aggiornamenti periodici di funzionalità e correzioni di bug. Le PR
di piccole dimensioni e ambito limitato hanno maggiori probabilità di essere revisionate rapidamente.
Le PR che modificano in modo significativo o rompono l'API non saranno accettate. Le PR di dimensioni rilevanti ma che non
introducono modifiche breaking possono essere accettate, ma saranno considerate a priorità inferiore rispetto alle PR in sigstore-go.
## Dockerfile
Ecco come installare e usare cosign all'interno di un Dockerfile tramite l'immagine 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" ]
Avvio rapido
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 Guida rapida a Sigstore Cosign
Firma un container e archivia la firma nel registry
Nota che dovresti sempre firmare le immagini basandoti sul loro digest (@sha256:...)
piuttosto che su un tag (:latest) perché altrimenti potresti firmare qualcosa
che non intendevi firmare!```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 ti chiederà di autenticarti tramite OIDC, dove accederai con il tuo indirizzo email.
Dietro le quinte, 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 registry OCI insieme all'immagine che stai firmando.
### Verifica un container
Per verificare l'immagine, dovrai passare il soggetto del certificato atteso e l'emittente del certificato tramite i flag `--certificate-identity` e `--certificate-oidc-issuer`:```
cosign verify $IMAGE --certificate-identity=$IDENTITY --certificate-oidc-issuer=$OIDC_ISSUER
Puoi anche passare una regex per i flag relativi all'identità del certificato e all'emittente, --certificate-identity-regexp e --certificate-oidc-issuer-regexp.
Verifica di un container rispetto a una chiave pubblica
Questo comando restituisce 0 se viene trovata almeno una firma in formato cosign per l'immagine che corrisponde 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, che è il modo in cui possiamo essere certi che queste firme "distaccate" coprano l'immagine corretta.```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}
### Verificare un contenitore in un ambiente air-gapped
**Nota:** questa sezione è obsoleta.