Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln är en del av en serie om att säkerställa integritet och äkthet för containeravbildningar och andra OCI-artefakter (Open Container Initiative). För den fullständiga bilden börjar du med översikten, som förklarar varför signering är viktigt och beskriver de olika scenarierna.
Den här artikeln fokuserar på signering med hjälp av notarieprojektverktyg, notation och betrodd signering:
- Vad du lär dig här: Så här använder du kommandoradsgränssnittet Notation (CLI) för att signera artefakter med hjälp av betrodd signering.
 - Där den passar: Betrodd signering är ett alternativ till Azure Key Vault. Även om Key Vault ger organisationer fullständig kontroll över certifikats livscykelhantering, erbjuder Trusted Signing en smidig signeringsupplevelse med automatisk livscykelhantering av certifikat och kortlivade certifikat.
 - Varför det spelar roll: Betrodd signering förenklar utvecklarupplevelsen och ger en stark identitetsgaranti. Det hjälper teamen att minska driftskomplexiteten utan att äventyra säkerheten.
 
Förutsättningar
Innan du kan signera och verifiera containeravbildningar med notation och betrodd signering måste du konfigurera nödvändiga Azure-resurser och installera de verktyg som krävs. Det här avsnittet beskriver hur du förbereder Azure Container Registry, konfigurerar betrodd signering och konfigurerar Azure CLI som utvecklingsmiljö.
Anmärkning
För närvarande är betrodd signering endast tillgängligt för organisationer baserade i USA och Kanada som har en verifierbar historik på tre år eller mer.
Förbereda containeravbildningar i Azure Container Registry
- Skapa eller använd ett containerregister för att lagra containeravbildningar, OCI-artefakter och signaturer.
 - Skicka eller använd en containerbild i ditt containerregister.
 
Konfigurera betrodda signering
Konfigurera ett konto för betrodd signering och certifikatprofil i din Azure-prenumeration.
Certifikatprofilen måste innehålla land/region (C), delstat eller provins (ST eller S) och organisation (O) i certifikatämnet. 
              Notarieprojektspecifikationen kräver dessa fält.
Konfigurera Azure CLI
Installera Azure CLI eller använd Azure Cloud Shell.
Installera plugin-programmet Notation CLI och Trusted Signing
Den här guiden kör kommandon på Linux AMD64 och Windows som exempel.
Installera Notation CLI v1.3.2:
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/binAndra plattformar finns i installationsguiden för Notation.
Installera plugin-programmet För betrodd signering:
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 538b497be0f0b4c6ced99eceb2be16f1c4b8e3d7c451357a52aeeca6751ccb44Hitta den senaste plugin-url:en och kontrollsumman på versionssidan.
Kontrollera installationen av plugin-programmet:
Exempel på utdata:
NAME DESCRIPTION VERSION CAPABILITIES ERROR azure-trustedsigning Sign OCI artifacts using the Trusted Signing Service 0.3.0 [SIGNATURE_GENERATOR.RAW] <nil>
Konfigurera miljövariabler
Ange följande miljövariabler för användning i efterföljande kommandon. Ersätt platshållarna med dina faktiska värden.
Du hittar de värden som krävs i Azure-portalen:
- Om du vill ha information om ett betrott signeringskonto går du till ditt konto och väljer sedan Översikt.
 - För information om certifikatprofil går du till ditt konto och väljer sedanObjektcertifikatprofiler>.
 
# 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
Logga in på Azure
Använd Azure CLI för att logga in med din användaridentitet:
Anmärkning
Den här guiden visar inloggning med ett användarkonto. Andra identitetsalternativ, inklusive en hanterad identitet, finns i Autentisera till Azure med hjälp av Azure CLI.
Tilldela behörigheter för Azure Container Registry och betrodd signering
Ge din identitet de roller som krävs för att få åtkomst till Container Registry:
- För register som är aktiverade med attributbaserad åtkomstkontroll (ABAC) tilldelar du: 
Container Registry Repository ReaderContainer Registry Repository Writer
 - För icke-ABAC-register tilldelar du: 
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"
Tilldela rollen Trusted Signing Certificate Profile Signer till din identitet så att du kan signera med hjälp av betrodd signering:
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"
Signera en behållaravbildning
# 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
Förklaring av nyckelflaggor:
- 
              
--signature-format cose: Använder COSE-format (CBOR Object Signing and Encryption) för signaturer. - 
              
--timestamp-url: Använder den tidsstämplingsserver som betrodd signering stöder. - 
              
--plugin-config: Skickar konfigurationen till plugin-programmet Betrodd signering. 
Lista signerade bilder och signaturer:
Exempel på utdata:
myregistry.azurecr.io/myrepo@sha256:5d0bf1e8f5a0c74a4c22d8c0f962a7cfa06a4f9d8423b196e482df8af23b5d55
└── application/vnd.cncf.notary.signature
    └── sha256:d3a4c9fbc17e27b19a0b28e7b6a33f2c0f541dbdf8d2e5e8d0d79a835e8a76f2a
Verifiera en containerbild
Ladda ned och lägg till rotcertifikat:
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
Skapa en JSON-fil för förtroendeprincip:
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" ] } ] } EOFImportera och kontrollera policyn:
notation policy import trustpolicy.json notation policy show
Verifiera bilden:
Exempel på utdata:
Successfully verified signature for myregistry.azurecr.io/myrepo@sha256:5d0bf1e8f5a0c74a4c22d8c0f962a7cfa06a4f9d8423b196e482df8af23b5d55Om verifieringen misslyckas kontrollerar du att din förtroendeprincip och dina certifikat är korrekt konfigurerade.
Relaterat innehåll
- Information om hur du loggar in i ett GitHub-arbetsflöde finns i Signera containeravbildningar i ett GitHub-arbetsflöde med hjälp av Notation och Betrodd signering (förhandsversion).
 - För verifiering i ett GitHub-arbetsflöde, se Verifiera containeravbildningar i ett GitHub-arbetsflöde med hjälp av Notation och Betrodd signering (förhandsversion).
 - För verifiering på Azure Kubernetes Service (AKS), se Verifiera containeravbildningssignaturer med hjälp av Ratify och Azure Policy.