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ů notárního projektu, notace a důvěryhodného podepisování:
- Dozvíte se tady: Jak pomocí rozhraní příkazového řádku notace (CLI) podepisovat artefakty pomocí důvěryhodného podepisování.
- Kde se hodí: Důvěryhodné podepisování je alternativou ke službě Azure Key Vault. Služba Key Vault sice organizacím poskytuje úplnou kontrolu nad správou životního cyklu certifikátů, ale důvěryhodné podepisování poskytuje zjednodušené prostředí pro podepisování se správou životního cyklu certifikátů s nulovým dotykem a krátkodobými certifikáty.
- Proč je důležité: Důvěryhodné podepisování 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 důvěryhodného podepisování, 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í důvěryhodného podepisování a nastavením Azure CLI jako vývojového prostředí.
Poznámka:
V tuto chvíli je důvěryhodné podepisování k dispozici pouze organizacím založeným ve Spojených státech a Kanadě, které mají ověřitelnou historii tří let nebo více.
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í důvěryhodného podepisování
Nastavte v předplatném Azure profil důvěryhodného podpisového účtu a certifikátu .
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.
Instalace pluginu Notation CLI a důvěryhodného podpisového pluginu
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 Důvěryhodné podepisování:
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 538b497be0f0b4c6ced99eceb2be16f1c4b8e3d7c451357a52aeeca6751ccb44Najdě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-trustedsigning Sign OCI artifacts using the Trusted Signing Service 0.3.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 důvěryhodném podpisových účtech 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ů.
# 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
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 důvěryhodnému podepisování
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 Trusted Signing Certificate Profile Signer k vaší identitě, abyste ji mohli podepsat pomocí důvěryhodného podepisování:
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"
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 $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
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 důvěryhodné podepisování. -
--plugin-config: Předá konfiguraci modulu plug-in Důvěryhodné podepisování.
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 $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
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: $TS_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
- Informace o přihlášení k pracovnímu postupu GitHubu najdete v tématu Podepisování imagí kontejnerů v pracovním postupu GitHubu pomocí notace a důvěryhodného podepisování (Preview).
- Ověření v pracovním postupu GitHubu najdete v tématu Ověření imagí kontejnerů v pracovním postupu GitHubu pomocí notace a důvěryhodného podepisování (Preview).
- 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.