
cosign v3.1.3
Codesignierung und Transparenz für Container und Binärdateien
cosign
Signieren von OCI-Containern (und anderen Artefakten) mit Sigstore!
Cosign hat zum Ziel, Signaturen zu unsichtbarer Infrastruktur zu machen.
Cosign unterstützt:
- "Keyless Signing" mit der Sigstore-Gemeinwohl-Zertifizierungsstelle Fulcio und dem Rekor-Transparenzprotokoll (Standard)
- Hardware- und KMS-Signierung
- Signierung 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 Projekts sigstore entwickelt.
Wir nutzen außerdem einen Slack-Kanal!
Klicke hier für den Einladungslink.
Installation
Für Homebrew-, Arch-, Nix-, GitHub-Action- und Kubernetes-Installationen siehe die Installationsdokumentation.
Für Linux-, macOS- und Windows-Binärdateien siehe die GitHub-Release-Assets.
🚨 Wenn du cosign-Releases aus unserem GCS-Bucket herunterlädst – beachte bitte die weiteren Informationen zum Deprecation-Hinweis vom 31. Juli 2023 🚨
Entwickler-Installation
Wenn du Go 1.22+ hast, kannst du eine Entwicklungsumgebung einrichten:
$ git clone https://github.com/sigstore/cosign
$ cd cosign
$ go install ./cmd/cosign
$ $(go env GOPATH)/bin/cosign
Mitwirken
Wenn Sie daran interessiert sind, zu cosign beizutragen, lesen Sie bitte die Beitragsdokumentation.
Die zukünftige Cosign-Entwicklung wird sich auf die nächste Hauptversion konzentrieren, die auf sigstore-go basieren wird. Die Maintainer werden sich auf die Funktionsentwicklung innerhalb von sigstore-go konzentrieren. Beiträge zu sigstore-go, insbesondere rund um Bring-Your-Own-Keys und Signierung, sind willkommen. Bitte sehen Sie sich den Issue-Tracker für gute Einstiegsaufgaben an.
Cosign 2.x ist eine stabile Version und wird weiterhin regelmäßige Funktionsupdates und Fehlerbehebungen erhalten. PRs mit geringem Umfang und geringer Größe werden am wahrscheinlichsten schnell überprüft.
PRs, die die API erheblich verändern oder brechen, werden nicht akzeptiert. PRs, die erheblich im Umfang sind, aber keine brechenden Änderungen einführen, können akzeptiert werden, werden jedoch als niedriger priorisiert angesehen als PRs in sigstore-go.
Dockerfile
Hier erfahren Sie, wie Sie cosign in einem Dockerfile über das Image ghcr.io/sigstore/cosign/cosign installieren und verwenden:
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" ]
Schnellstart
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
- umfassendere Keyless-Blob-Signierungs-/Verifizierungsabläufe im Sigstore Cosign Quickstart erkundet
Einen 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,
was du nicht beabsichtigt hast!
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 fordert Sie zur Authentifizierung über OIDC auf, wo Sie sich mit Ihrer E-Mail-Adresse anmelden. Im Hintergrund fordert cosign ein Codesignaturzertifikat von der Fulcio-Zertifizierungsstelle an. Der Betreff 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.
Verifizieren eines Containers
Um das Image zu verifizieren, müssen Sie den erwarteten Zertifikatsbetreff und den Zertifikatsaussteller über die Flags --certificate-identity und --certificate-oidc-issuer übergeben:
cosign verify $IMAGE --certificate-identity=$IDENTITY --certificate-oidc-issuer=$OIDC_ISSUER
Du kannst auch einen Regex 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.
Siehe die detaillierte Verwendung unten für Informationen und Einschränkungen zu anderen Signaturformaten.
Alle gültigen Payloads werden im json-Format nach stdout ausgegeben. Beachte, dass diese signierten Payloads den Digest des Container-Images enthalten, wodurch wir sicher sein können, dass diese "detached"-Signaturen das richtige Image abdecken.
$ 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}
Einen Container in einer air-gapped Umgebung verifizieren
Hinweis: Dieser Abschnitt ist veraltet.