Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek je součástí série o zajištění integrity a pravosti imagí kontejnerů a dalších artefaktů OCI (Open Container Initiative). Pro úplný obrázek začněte přehledem, který vysvětluje, proč podepisování záleží a popisuje různé scénáře.
Tento článek se zaměřuje na podepisování pomocí nástrojů projektu Notary, Notation, a podepisování artefaktů:
- Dozvíte se tady: Jak pomocí rozhraní příkazového řádku (CLI) Notation podepisovat artefakty.
- Kde se hodí: Podepisování artefaktů je alternativou ke službě Azure Key Vault. Ačkoliv služba Key Vault poskytuje organizacím úplnou kontrolu nad správou životního cyklu certifikátů, podepisování artefaktů nabízí zjednodušené prostředí pro podepisování s automatizovanou správou životního cyklu certifikátů a krátkodobými certifikáty.
- Proč je důležité: Podepisování artefaktů zjednodušuje vývojářské prostředí a zároveň poskytuje silné záruky identit. Pomáhá týmům snižovat provozní složitost bez ohrožení zabezpečení.
Požadavky
Než budete moct podepsat a ověřit image kontejnerů pomocí notace a podepisování artefaktů, musíte nastavit požadované prostředky Azure a nainstalovat potřebné nástroje. Tato část vás provede přípravou služby Azure Container Registry, konfigurací podepisování artefaktů a nastavením Azure CLI jako vývojového prostředí.
Příprava imagí kontejnerů ve službě Azure Container Registry
- Vytvořte nebo použijte registr kontejneru k ukládání imagí kontejnerů, artefaktů OCI a podpisů.
- Nahrát nebo použít obraz kontejneru do registru kontejneru.
Nastavení podepisování artefaktů
Vytvořte ve svém předplatném Azure účet a profil certifikátu pro podepisování artefaktů.
Váš profil certifikátu musí obsahovat zemi/oblast (C), stát nebo kraj (ST nebo S) a organizaci (O) v předmětu certifikátu.
Specifikace notářského projektu vyžaduje tato pole.
Nastavení Azure CLI
Nainstalujte Azure CLI nebo použijte Azure Cloud Shell.
Nainstalujte rozhraní příkazového řádku Notation a modul plug-in pro podepisování artefaktů.
Tato příručka spouští příkazy v systémech Linux AMD64 a Windows jako příklady.
Instalace 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/binPro informace o dalších platformách si přečtěte průvodce instalací notačního systému.
Nainstalujte modul plug-in Pro podepisování artefaktů:
notation plugin install --url "https://github.com/Azure/artifact-signing-notation-plugin/releases/download/v1.0.0/notation-azure-artifactsigning_1.0.0_linux_amd64.tar.gz" --sha256sum 2f45891a14aa9c88c9bee3d11a887c1adbe9d2d24e50de4bc4b4fa3fe595292fNajděte nejnovější adresu URL modulu plug-in a kontrolní součet na stránce vydané verze.
Ověřte instalaci modulu plug-in:
Příklad výstupu:
NAME DESCRIPTION VERSION CAPABILITIES ERROR azure-artifactsigning Sign OCI artifacts using the Artifact Signing Service 1.0.0 [SIGNATURE_GENERATOR.RAW] <nil>
Konfigurace proměnných prostředí
Nastavte následující proměnné prostředí pro použití v následných příkazech. Zástupné symboly nahraďte skutečnými hodnotami.
Požadované hodnoty najdete na webu Azure Portal:
- Informace o účtu Podepisování artefaktů získáte tak, že přejdete na svůj účet a pak vyberete Přehled.
- Informace o profilu certifikátu získáte tak, že přejdete na svůj účet a pak vyberete Objekty>Profily certifikátů.
# Artifact Signing environment variables
AS_SUB_ID="<subscription-id>"
AS_ACCT_RG=<ts-account-resource-group>
AS_ACCT_NAME=<ts-account-name>
AS_ACCT_URL=<ts-account-url>
AS_CERT_PROFILE=<ts-cert-profile>
AS_CERT_SUBJECT=<ts-cert-subject>
AS_SIGNING_ROOT_CERT="https://www.microsoft.com/pkiops/certs/Microsoft%20Enterprise%20Identity%20Verification%20Root%20Certificate%20Authority%202020.crt"
AS_TSA_URL="http://timestamp.acs.microsoft.com/"
AS_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
Přihlásit se do Azure
Pomocí Azure CLI se přihlaste pomocí identity uživatele:
Poznámka:
Tato příručka ukazuje přihlášení pomocí uživatelského účtu. Další možnosti identity, včetně spravované identity, najdete v tématu Ověřování v Azure pomocí Azure CLI.
Přiřazení oprávnění ke službě Azure Container Registry a podepisování artefaktů
Udělte identitě potřebné role pro přístup ke službě Container Registry:
- Pro registry, které mají povolené řízení přístupu na základě atributů (ABAC), přiřaďte:
Container Registry Repository ReaderContainer Registry Repository Writer
- Pro registry jiného typu než ABAC přiřaďte:
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"
Přiřaďte roli Artifact Signing Certificate Profile Signer k vaší identitě, abyste ji mohli podepsat pomocí podepisování artefaktů:
az role assignment create --assignee $USER_ID --role "Artifact Signing Certificate Profile Signer" --scope "/subscriptions/$AS_SUB_ID/resourceGroups/$AS_ACCT_RG/providers/Microsoft.CodeSigning/codeSigningAccounts/$AS_ACCT_NAME/certificateProfiles/$AS_CERT_PROFILE"
Podepište obraz kontejneru
# 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 $AS_TSA_ROOT_CERT
# Sign the image
notation sign --signature-format cose --timestamp-url $AS_TSA_URL --timestamp-root-cert "msft-tsa-root-certificate-authority-2020.crt" --id $AS_CERT_PROFILE --plugin azure-artifactsigning --plugin-config accountName=$AS_ACCT_NAME --plugin-config baseUrl=$AS_ACCT_URL --plugin-config certProfile=$AS_CERT_PROFILE $IMAGE
Vysvětlení klíčových příznaků:
-
--signature-format cose: Pro podpisy používá formát podepisování a šifrování objektů CBOR (COSE). -
--timestamp-url: Používá server časového razítka, který podporuje podepisování artefaktů. -
--plugin-config: Předá konfiguraci plug-inu pro podepisování artefaktů.
Výpis podepsaných obrázků a podpisů:
Příklad výstupu:
myregistry.azurecr.io/myrepo@sha256:5d0bf1e8f5a0c74a4c22d8c0f962a7cfa06a4f9d8423b196e482df8af23b5d55
└── application/vnd.cncf.notary.signature
└── sha256:d3a4c9fbc17e27b19a0b28e7b6a33f2c0f541dbdf8d2e5e8d0d79a835e8a76f2a
Ověřit kontejnerovou image
Stažení a přidání kořenových certifikátů:
curl -o msft-root-certificate-authority-2020.crt $AS_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 $AS_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
Vytvořte soubor JSON zásad důvěryhodnosti:
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: $AS_CERT_SUBJECT" ] } ] } EOFImportujte a zkontrolujte politiku.
notation policy import trustpolicy.json notation policy show
Ověřte obrázek:
Příklad výstupu:
Successfully verified signature for myregistry.azurecr.io/myrepo@sha256:5d0bf1e8f5a0c74a4c22d8c0f962a7cfa06a4f9d8423b196e482df8af23b5d55Pokud se ověření nezdaří, ujistěte se, že jsou správně nakonfigurované zásady důvěryhodnosti a certifikáty.
Související obsah
- Pro informace o přihlášení v pracovním postupu na GitHubu se podívejte na Podepisování obrazů kontejnerů v pracovním postupu GitHub pomocí Notation a podepisování artefaktů.
- Pro ověření imagí kontejnerů v pracovním postupu GitHubu pomocí notace a podepisování artefaktů viz Ověření imagí kontejnerů v pracovním postupu GitHubu.
- Informace o ověření ve službě Azure Kubernetes Service (AKS) najdete v tématu Ověření podpisů imagí kontejneru pomocí Ratify a zásad Azure Policy.