
Firma del codice e trasparenza per contenitori e binari
Firma di container OCI (e altri artefatti) utilizzando Sigstore!
Cosign mira a rendere le firme infrastruttura invisibile.
Cosign supporta:
Cosign è sviluppato come parte del progetto sigstore.
Utilizziamo anche un canale slack!
Clicca qui per il link di invito.
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 🚨
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
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.
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" ]
Questo mostra come:
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.
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.
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}
Nota: Questa sezione è obsoleta.