Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel ist Teil einer Reihe zur Sicherstellung der Integrität und Authentizität von Containerimages und anderen Open Container Initiative (OCI)-Artefakten. Für einen vollständigen Überblick beginnen Sie mit der Übersicht, in der erklärt wird, warum das Signieren wichtig ist und die verschiedenen Szenarien skizziert werden.
Dieser Artikel konzentriert sich auf das Signieren mithilfe von Notarprojekttools, Notation und vertrauenswürdiger Signatur:
- Was Sie hier erfahren: Erfahren Sie, wie Sie die Befehlszeilenschnittstelle (Notation Command-Line Interface, CLI) verwenden, um Artefakte mithilfe des Vertrauenswürdigen Signierens zu signieren.
- Wo es passt: Die vertrauenswürdige Signatur ist eine Alternative zu Azure Key Vault. Obwohl Key Vault Organisationen die vollständige Kontrolle über die Verwaltung des Zertifikatlebenszyklus bietet, bietet vertrauenswürdige Signatur eine optimierte Signaturerfahrung mit der Zero-Touch-Zertifikatlebenszyklusverwaltung und kurzlebigen Zertifikaten.
- Warum dies wichtig ist: Die vertrauenswürdige Signatur vereinfacht die Entwicklererfahrung und bietet gleichzeitig eine starke Identitätsüberprüfung. Es hilft Teams, die Betriebskomplexität zu reduzieren, ohne die Sicherheit zu beeinträchtigen.
Voraussetzungen
Bevor Sie Containerimages mit Notation und vertrauenswürdiger Signatur signieren und überprüfen können, müssen Sie die erforderlichen Azure-Ressourcen einrichten und die erforderlichen Tools installieren. Dieser Abschnitt führt Sie durch die Vorbereitung der Azure-Containerregistrierung, das Konfigurieren der vertrauenswürdigen Signatur und das Einrichten der Azure CLI als Entwicklungsumgebung.
Hinweis
Derzeit ist Trusted Signing nur für Organisationen verfügbar, die in den USA und Kanada ansässig sind und über eine nachweisbare Historie von drei Jahren oder mehr verfügen.
Vorbereiten von Containerimages in der Azure-Containerregistrierung
- Erstellen oder verwenden Sie eine Containerregistrierung zum Speichern von Containerimages, OCI-Artefakten und Signaturen.
- Pushen oder Verwenden eines Containerimages in Ihrer Containerregistrierung.
Einrichten der vertrauenswürdigen Signatur
Richten Sie ein vertrauenswürdiges Signaturkonto und ein Zertifikatprofil in Ihrem Azure-Abonnement ein.
Ihr Zertifikatprofil muss das Land/die Region (C), das Bundesland oder die Provinz (ST oder S) und die Organisation (O) im Zertifikatsbetreff enthalten. Für die Spezifikation des Notarprojekts sind diese Felder erforderlich.
Einrichten der Azure CLI
Installieren Sie die Azure CLI, oder verwenden Sie Azure Cloud Shell.
Installieren Sie das Notation CLI und das Plug-in für vertrauenswürdiges Signieren
In diesem Handbuch werden Befehle unter Linux AMD64 und Windows als Beispiele ausgeführt.
Notation CLI v1.3.2 installieren:
curl -Lo notation.tar.gz https://github.com/notaryproject/notation/releases/download/v1.3.2/notation_1.3.2_linux_amd64.tar.gz # Validate the checksum EXPECTED_SHA256SUM="e1a0f060308086bf8020b2d31defb7c5348f133ca0dba6a1a7820ef3cbb6dfe5" echo "$EXPECTED_SHA256SUM notation.tar.gz" | sha256sum -c - # Continue if sha256sum matches tar xvzf notation.tar.gz cp ./notation /usr/local/binWeitere Plattformen finden Sie im Notation-Installationshandbuch.
Installieren Sie das Plug-In "Vertrauenswürdige Signatur":
notation plugin install --url "https://github.com/Azure/trustedsigning-notation-plugin/releases/download/v1.0.0-beta.1/notation-azure-trustedsigning_1.0.0-beta.1_linux_amd64.tar.gz" --sha256sum 538b497be0f0b4c6ced99eceb2be16f1c4b8e3d7c451357a52aeeca6751ccb44Suchen Sie die neueste Plug-in-URL und Prüfsumme auf der Releaseseite.
Überprüfen der Plug-In-Installation:
Beispielausgabe:
NAME DESCRIPTION VERSION CAPABILITIES ERROR azure-trustedsigning Sign OCI artifacts using the Trusted Signing Service 0.3.0 [SIGNATURE_GENERATOR.RAW] <nil>
Umgebungsvariablen konfigurieren
Legen Sie die folgenden Umgebungsvariablen für die Verwendung in nachfolgenden Befehlen fest. Ersetzen Sie Platzhalter durch die tatsächlichen Werte.
Die erforderlichen Werte finden Sie im Azure-Portal:
- Wechseln Sie für Informationen zum vertrauenswürdigen Signaturkonto zu Ihrem Konto, und wählen Sie dann "Übersicht" aus.
- Für Zertifikatprofilinformationen wechseln Sie zu Ihrem Konto, und wählen Sie dann Objekte>Zertifikatsprofile aus.
# Trusted Signing environment variables
TS_SUB_ID="<subscription-id>"
TS_ACCT_RG=<ts-account-resource-group>
TS_ACCT_NAME=<ts-account-name>
TS_ACCT_URL=<ts-account-url>
TS_CERT_PROFILE=<ts-cert-profile>
TS_CERT_SUBJECT=<ts-cert-subject>
TS_SIGNING_ROOT_CERT="https://www.microsoft.com/pkiops/certs/Microsoft%20Enterprise%20Identity%20Verification%20Root%20Certificate%20Authority%202020.crt"
TS_TSA_URL="http://timestamp.acs.microsoft.com/"
TS_TSA_ROOT_CERT="http://www.microsoft.com/pkiops/certs/microsoft%20identity%20verification%20root%20certificate%20authority%202020.crt"
# Azure Container Registry and image environment variables
ACR_SUB_ID="<acr-subscription-id>"
ACR_RG=<acr-resource-group>
ACR_NAME=<registry-name>
ACR_LOGIN_SERVER=$ACR_NAME.azurecr.io
REPOSITORY=<repository>
TAG=<tag>
IMAGE=$ACR_LOGIN_SERVER/${REPOSITORY}:$TAG
Anmelden bei Azure
Verwenden Sie die Azure CLI, um sich mit Ihrer Benutzeridentität anzumelden:
Hinweis
In diesem Handbuch wird die Anmeldung mit einem Benutzerkonto veranschaulicht. Weitere Identitätsoptionen, einschließlich einer verwalteten Identität, finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Zuweisen von Berechtigungen für die Azure-Containerregistrierung und die vertrauenswürdige Signatur
Gewähren Sie Ihrer Identität die erforderlichen Rollen für den Zugriff auf die Containerregistrierung:
- Weisen Sie für Registrierungen, die mit attributbasierter Zugriffssteuerung (ABAC) aktiviert sind, Folgendes zu:
Container Registry Repository ReaderContainer Registry Repository Writer
- Weisen Sie für Nicht-ABAC-Registrierungen Folgendes zu:
AcrPullAcrPush
az role assignment create --role "Container Registry Repository Reader" --assignee $USER_ID --scope "/subscriptions/$ACR_SUB_ID/resourceGroups/$ACR_RG/providers/Microsoft.ContainerRegistry/registries/$ACR_NAME"
az role assignment create --role "Container Registry Repository Writer" --assignee $USER_ID --scope "/subscriptions/$ACR_SUB_ID/resourceGroups/$ACR_RG/providers/Microsoft.ContainerRegistry/registries/$ACR_NAME"
Weisen Sie Ihrer Identität die Rolle Trusted Signing Certificate Profile Signer zu, damit Sie sich mit vertrauenswürdiger Signatur signieren können:
az role assignment create --assignee $USER_ID --role "Trusted Signing Certificate Profile Signer" --scope "/subscriptions/$TS_SUB_ID/resourceGroups/$TS_ACCT_RG/providers/Microsoft.CodeSigning/codeSigningAccounts/$TS_ACCT_NAME/certificateProfiles/$TS_CERT_PROFILE"
Signieren eines Containerabbilds
# Authenticate to Azure Container Registry
az acr login --name $ACR_NAME
# Download the timestamping root certificate
curl -o msft-tsa-root-certificate-authority-2020.crt $TS_TSA_ROOT_CERT
# Sign the image
notation sign --signature-format cose --timestamp-url $TS_TSA_URL --timestamp-root-cert "msft-tsa-root-certificate-authority-2020.crt" --id $TS_CERT_PROFILE --plugin azure-trustedsigning --plugin-config accountName=$TS_ACCT_NAME --plugin-config baseUrl=$TS_ACCT_URL --plugin-config certProfile=$TS_CERT_PROFILE $IMAGE
Erläuterte Schlüsselkennzeichnungen:
-
--signature-format cose: Verwendet das CBOR-Objektsignatur- und -Verschlüsselungsformat (COSE) für Signaturen. -
--timestamp-url: Verwendet den Zeitstempelserver, den Trusted Signing unterstützt. -
--plugin-config: Übergibt die Konfiguration an das vertrauenswürdige Signatur-Plug-In.
Signierte Bilder und Signaturen auflisten:
Beispielausgabe:
myregistry.azurecr.io/myrepo@sha256:5d0bf1e8f5a0c74a4c22d8c0f962a7cfa06a4f9d8423b196e482df8af23b5d55
└── application/vnd.cncf.notary.signature
└── sha256:d3a4c9fbc17e27b19a0b28e7b6a33f2c0f541dbdf8d2e5e8d0d79a835e8a76f2a
Überprüfen eines Containerimages
Herunterladen und Hinzufügen von Stammzertifikaten:
curl -o msft-root-certificate-authority-2020.crt $TS_SIGNING_ROOT_CERT SIGNING_TRUST_STORE="myRootCerts" notation cert add --type ca --store $SIGNING_TRUST_STORE msft-root-certificate-authority-2020.crt curl -o msft-tsa-root-certificate-authority-2020.crt $TS_TSA_ROOT_CERT TSA_TRUST_STORE="myTsaRootCerts" notation cert add -t tsa -s $TSA_TRUST_STORE msft-tsa-root-certificate-authority-2020.crt notation cert ls
Erstellen Sie eine JSON-Datei für vertrauensbasierte Richtlinien:
cat <<EOF > trustpolicy.json { "version": "1.0", "trustPolicies": [ { "name": "myPolicy", "registryScopes": [ "$ACR_LOGIN_SERVER/$REPOSITORY" ], "signatureVerification": { "level" : "strict" }, "trustStores": [ "ca:$SIGNING_TRUST_STORE", "tsa:$TSA_TRUST_STORE" ], "trustedIdentities": [ "x509.subject: $TS_CERT_SUBJECT" ] } ] } EOFImportieren und überprüfen Sie die Richtlinie:
notation policy import trustpolicy.json notation policy show
Überprüfen Sie das Bild:
Beispielausgabe:
Successfully verified signature for myregistry.azurecr.io/myrepo@sha256:5d0bf1e8f5a0c74a4c22d8c0f962a7cfa06a4f9d8423b196e482df8af23b5d55Wenn die Überprüfung fehlschlägt, stellen Sie sicher, dass Ihre Vertrauensrichtlinie und Zertifikate ordnungsgemäß konfiguriert sind.
Verwandte Inhalte
- Informationen zum Anmelden in einem GitHub-Workflow finden Sie unter Signieren von Containerimages in einem GitHub-Workflow mithilfe von Notation und vertrauenswürdiger Signatur (Vorschau).
- Eine Überprüfung in einem GitHub-Workflow finden Sie unter Überprüfen von Containerimages in einem GitHub-Workflow mithilfe von Notation und vertrauenswürdiger Signatur (Vorschau).
- Eine Überprüfung auf Azure Kubernetes Service (AKS) finden Sie unter Überprüfen von Containerimagesignaturen mithilfe von Ratify und Azure Policy.