
cosign v3.1.3
Codesignierung und Transparenz für Container und Binärdateien
cosign
Signieren von OCI-Containern (und anderen Artefakten) mit Sigstore!
Cosign zielt darauf ab, Signaturen zu unsichtbarer Infrastruktur zu machen.
Cosign unterstützt:
- "Keyless signing" mit der Fulcio-Zertifizierungsstelle des Sigstore Public Good und dem Rekor-Transparenzlog (Standard)
- Hardware- und KMS-Signierung
- Signieren mit einem von cosign generierten verschlüsselten privaten/öffentlichen Schlüsselpaar
- Container-Signierung, -Verifizierung und -Speicherung in einer OCI-Registry.
- Bring-your-own-PKI
Info
Cosign wird als Teil des sigstore-Projekts entwickelt.
Wir nutzen auch einen Slack-Kanal!
Klicken Sie hier für den Einladungslink.
Installation
Für Installationen mit Homebrew, Arch, Nix, GitHub Action und Kubernetes siehe die Installationsdokumentation.
Für Linux- und macOS-Binärdateien siehe die GitHub-Release-Assets.
🚨 Wenn Sie Releases von cosign aus unserem GCS-Bucket herunterladen, finden Sie weitere Informationen im Hinweis zur Einstellung vom 31. Juli 2023 🚨
Entwicklerinstallation
Wenn Sie Go 1.22+ haben, können Sie eine Entwicklungsumgebung einrichten:```shell $ git clone https://github.com/sigstore/cosign $ cd cosign $ go install ./cmd/cosign $ $(go env GOPATH)/bin/cosign
## Contributing
Wenn Sie daran interessiert sind, zu `cosign` beizutragen, lesen Sie bitte die [Contributing-Dokumentation](https://github.com/sigstore/cosign/blob/main/CONTRIBUTING.md).
Die zukünftige Cosign-Entwicklung wird sich auf das nächste große Release konzentrieren, das auf
[sigstore-go](https://github.com/sigstore/sigstore-go) basieren wird. Die Maintainer werden sich auf die Feature-Entwicklung innerhalb von
sigstore-go konzentrieren. Beiträge zu sigstore-go, insbesondere rund um Bring-your-own-Keys und Signierung, sind willkommen.
Bitte werfen Sie einen Blick auf den [Issue-Tracker](https://github.com/sigstore/sigstore-go/issues) für geeignete erste Issues.
Cosign 2.x ist ein stabiles Release und wird weiterhin regelmäßig Feature-Updates und Bugfixes erhalten. PRs
mit kleinem Umfang und geringer Größe werden am ehesten schnell überprüft.
PRs, die die API erheblich verändern oder brechen, werden nicht angenommen. PRs, die einen erheblichen Umfang haben, aber keine
Breaking Changes einführen, können angenommen werden, werden jedoch als weniger prioritär eingestuft als PRs in sigstore-go.
## Dockerfile
Hier ist, wie man cosign in einem Dockerfile über das Image ghcr.io/sigstore/cosign/cosign installiert und verwendet:```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
Dies zeigt, wie man:
- ein Container-Image mit der standardmäßigen identitätsbasierten „keyless signing"-Methode signiert (siehe die Dokumentation für weitere Informationen)
- das Container-Image verifiziert
- weiterführende keyless Blob-Signatur-/Verifizierungsabläufe im Sigstore Cosign Quickstart erkundet
Ein Container signieren und die Signatur in der Registry speichern
Beachte, dass du Images immer anhand ihres Digests (@sha256:...) signieren solltest
und nicht anhand eines Tags (:latest), da du sonst möglicherweise etwas signierst,
das du nicht beabsichtigt hast!```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 wird Sie auffordern, sich über OIDC zu authentifizieren, wobei Sie sich mit Ihrer E-Mail-Adresse anmelden.
Im Hintergrund fordert cosign ein Codesignatur-Zertifikat von der Zertifizierungsstelle Fulcio an.
Das Subject des Zertifikats stimmt mit der E-Mail-Adresse überein, mit der Sie sich angemeldet haben.
Cosign speichert dann die Signatur und das Zertifikat im Rekor-Transparenzprotokoll und lädt die Signatur zusammen mit dem Image, das Sie signieren, in die OCI-Registry hoch.
### Einen Container verifizieren
Um das Image zu verifizieren, müssen Sie den erwarteten Zertifikats-Subject und den Zertifikatsaussteller über die Flags `--certificate-identity` und `--certificate-oidc-issuer` angeben:```
cosign verify $IMAGE --certificate-identity=$IDENTITY --certificate-oidc-issuer=$OIDC_ISSUER
Sie können auch einen regulären Ausdruck für die Zertifikatsidentität und die Issuer-Flags übergeben, --certificate-identity-regexp und --certificate-oidc-issuer-regexp.
Einen Container gegen einen öffentlichen Schlüssel verifizieren
Dieser Befehl gibt 0 zurück, wenn mindestens eine cosign-formatierte Signatur für das Image gefunden wird,
die zum öffentlichen Schlüssel passt.
Weitere Informationen und Hinweise zu anderen Signaturformaten finden Sie in der detaillierten Verwendung unten.
Alle gültigen Payloads werden im JSON-Format auf stdout ausgegeben. Beachten Sie, dass diese signierten Payloads den Digest des Container-Images enthalten – so können wir sicher sein, dass diese "abgelösten" Signaturen das richtige Image abdecken.```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}
### Verifizieren eines Containers in einer Air-Gapped-Umgebung
**Hinweis:** Dieser Abschnitt ist veraltet.