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.
Azure Kubernetes Service (AKS) a jeho základní model kontejneru poskytují vyšší škálovatelnost a možnosti správy pro aplikace nativní pro cloud. S AKS můžete spouštět flexibilní softwarové aplikace podle potřeb modulu runtime vašeho systému. Tato flexibilita však může představovat nové výzvy.
V těchto aplikačních prostředích pomáhá použití podepsaných kontejnerových obrázků ověřit, že vaše nasazení jsou sestavená z důvěryhodné entity a že obrázky nebyly upraveny od jejich vytvoření. Integrita image je služba, která umožňuje přidat integrovanou definici služby Azure Policy a ověřit, že se do clusterů AKS nasadí jenom podepsané image.
Poznámka:
Integrita obrazu je funkce založená na Ratify. V clusteru AKS je ImageIntegritynázev funkce a název vlastnosti, zatímco názvy příslušných podů integrity obrázků obsahují Ratify.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Požadavky
Předplatné služby Azure. Pokud ještě nemáte předplatné Azure, můžete si vytvořit bezplatný účet.
Azure CLI nebo Azure PowerShell.
aks-previewRozšíření CLI verze 0.5.96 nebo novějšíUjistěte se, že je ve vašem clusteru povolený doplněk Azure Policy pro AKS. Pokud tento doplněk nemáte nainstalovaný, přečtěte si téma Instalace doplňku Azure Policy pro AKS.
AKS cluster s povoleným OIDC vystavitelem. Pokud chcete vytvořit nový cluster nebo aktualizovat existující cluster, přečtěte si téma Konfigurace clusteru AKS s vystavitelem OIDC.
Příznaky
EnableImageIntegrityPreviewfunkcí zaregistrované ve vašem předplatném Azure. Pomocí následujících příkazů zaregistrujte příznaky funkce:EnableImageIntegrityPreviewPomocí příkazu zaregistrujte příznakyaz feature registerfunkce.# Register the EnableImageIntegrityPreview feature flag az feature register --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview" It may take a few minutes for the status to show as *Registered*.Pomocí příkazu ověřte stav
az feature showregistrace.# Verify the EnableImageIntegrityPreview feature flag registration status az feature show --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview"Jakmile se zobrazí stav Registrováno, pomocí příkazu aktualizujte registraci
Microsoft.ContainerServiceposkytovateleaz provider registerprostředků.az provider register --namespace Microsoft.ContainerService
Úvahy a omezení
- Clustery AKS musí spouštět Kubernetes verze 1.26 nebo vyšší.
- Tuto funkci byste neměli používat pro produkční registry nebo úlohy služby Azure Container Registry (ACR).
- Integrita image podporuje maximálně 200 jedinečných podpisů současně v rámci clusteru.
- Notace je jediným podporovaným ověřovatelem.
- Audit je jediným podporovaným účinkem zásad ověřování.
Jak funguje integrita obrázků
Integrita obrazu používá Ratify, Azure Policy a Gatekeeper k ověření podepsaných imagí před jejich nasazením do vašich clusterů AKS. Povolení integrity image v clusteru nasadí Ratify pod. Tento Ratify pod provádí následující úlohy:
- Odsouhlasí certifikáty ze služby Azure Key Vault podle konfigurace, kterou jste nastavili prostřednictvím
RatifyCRDs. - Přistupuje k imagím uloženým v ACR, když žádosti o ověření pocházejí ze služby Azure Policy. Pro povolení tohoto prostředí Azure Policy rozšiřuje Gatekeeper, webhook kontroler pro přijetí pro Open Policy Agent (OPA).
- Určuje, jestli je cílová image podepsaná důvěryhodným certifikátem, a proto se považuje za důvěryhodnou.
-
AzurePolicyaGatekeeperpoužívají výsledky ověření jako stav souladu, aby rozhodli, zda povolí žádost o nasazení.
Povolení integrity image v clusteru AKS
Poznámka:
Ověření podpisu obrázku je scénář orientovaný na zásady správného řízení a využívá Azure Policy k ověření podpisů obrázků v clusterech AKS ve velkém měřítku. Doporučujeme použít integrovanou iniciativu Azure Policy pro integritu obrazu AKS, která je k dispozici v integrované knihovně definic Azure Policy.
Vytvořte přiřazení zásad pomocí iniciativy zásad AKS
[Preview]: Use Image Integrity to ensure only trusted images are deployeds použitím příkazuaz policy assignment create.export SCOPE="/subscriptions/${SUBSCRIPTION}/resourceGroups/${RESOURCE_GROUP}" export LOCATION=$(az group show --name ${RESOURCE_GROUP} --query location -o tsv) az policy assignment create --name 'deploy-trustedimages' --policy-set-definition 'af28bf8b-c669-4dd3-9137-1e68fdc61bd6' --display-name 'Audit deployment with unsigned container images' --scope ${SCOPE} --mi-system-assigned --role Contributor --identity-scope ${SCOPE} --location ${LOCATION}Pod
Ratifyse nasadí po povolení funkce.
Poznámka:
Tato zásada nasadí funkci integrita obrazu na váš klastr při zjištění jakékoli operace aktualizace v klastru. Pokud chcete tuto funkci povolit okamžitě, musíte pomocí příkazu az policy remediation create vytvořit politiku nápravy.
assignment_id=$(az policy assignment show --name 'deploy-trustedimages' --scope ${SCOPE} --query id -o tsv)
az policy remediation create --policy-assignment "$assignment_id" --definition-reference-id deployAKSImageIntegrity --name remediation --resource-group ${RESOURCE_GROUP}
Nastavení konfigurací ověřování
Aby systém Image Integrity mohl správně ověřit cílový podepsaný obraz, musíte nastavit Ratify konfigurace pomocí K8s CRD prostřednictvím kubectl.
V tomto článku používáme samopodepsaný certifikát CA z oficiální dokumentace Ratify pro nastavení ověřovacích konfigurací. Další příklady najdete v Ratify CRDs.
Vytvořte
VerifyConfigsoubor s názvemverify-config.yamla zkopírujte ho v následujícím jazyce YAML:apiVersion: config.ratify.deislabs.io/v1beta1 kind: KeyManagementProvider metadata: name: certstore-inline spec: provider: inline parameters: value: | -----BEGIN CERTIFICATE----- MIIDQzCCAiugAwIBAgIUDxHQ9JxxmnrLWTA5rAtIZCzY8mMwDQYJKoZIhvcNAQEL BQAwKTEPMA0GA1UECgwGUmF0aWZ5MRYwFAYDVQQDDA1SYXRpZnkgU2FtcGxlMB4X DTIzMDYyOTA1MjgzMloXDTMzMDYyNjA1MjgzMlowKTEPMA0GA1UECgwGUmF0aWZ5 MRYwFAYDVQQDDA1SYXRpZnkgU2FtcGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAshmsL2VM9ojhgTVUUuEsZro9jfI27VKZJ4naWSHJihmOki7IoZS8 3/3ATpkE1lGbduJ77M9UxQbEW1PnESB0bWtMQtjIbser3mFCn15yz4nBXiTIu/K4 FYv6HVdc6/cds3jgfEFNw/8RVMBUGNUiSEWa1lV1zDM2v/8GekUr6SNvMyqtY8oo ItwxfUvlhgMNlLgd96mVnnPVLmPkCmXFN9iBMhSce6sn6P9oDIB+pr1ZpE4F5bwa gRBg2tWN3Tz9H/z2a51Xbn7hCT5OLBRlkorHJl2HKKRoXz1hBgR8xOL+zRySH9Qo 3yx6WvluYDNfVbCREzKJf9fFiQeVe0EJOwIDAQABo2MwYTAdBgNVHQ4EFgQUKzci EKCDwPBn4I1YZ+sDdnxEir4wHwYDVR0jBBgwFoAUKzciEKCDwPBn4I1YZ+sDdnxE ir4wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAgQwDQYJKoZIhvcNAQEL BQADggEBAGh6duwc1MvV+PUYvIkDfgj158KtYX+bv4PmcV/aemQUoArqM1ECYFjt BlBVmTRJA0lijU5I0oZje80zW7P8M8pra0BM6x3cPnh/oZGrsuMizd4h5b5TnwuJ hRvKFFUVeHn9kORbyQwRQ5SpL8cRGyYp+T6ncEmo0jdIOM5dgfdhwHgb+i3TejcF 90sUs65zovUjv1wa11SqOdu12cCj/MYp+H8j2lpaLL2t0cbFJlBY6DNJgxr5qync cz8gbXrZmNbzC7W5QK5J7fcx6tlffOpt5cm427f9NiK2tira50HU7gC3HJkbiSTp Xw10iXXMZzSbQ0/Hj2BF4B40WfAkgRg= -----END CERTIFICATE----- --- apiVersion: config.ratify.deislabs.io/v1beta1 kind: Store metadata: name: store-oras spec: name: oras # If you want to you use Workload Identity for Ratify to access Azure Container Registry, # uncomment the following lines, and fill the proper ClientID: # See more: https://ratify.dev/docs/reference/oras-auth-provider # parameters: # authProvider: # name: azureWorkloadIdentity # clientID: XXX --- apiVersion: config.ratify.deislabs.io/v1beta1 kind: Verifier metadata: name: verifier-notary-inline spec: name: notation artifactTypes: application/vnd.cncf.notary.signature parameters: verificationCertStores: # certificates for validating signatures certs: # name of the trustStore - certstore-inline # name of the certificate store CRD to include in this trustStore trustPolicyDoc: # policy language that indicates which identities are trusted to produce artifacts version: "1.0" trustPolicies: - name: default registryScopes: - "*" signatureVerification: level: strict trustStores: - ca:certs trustedIdentities: - "*"Aplikujte
VerifyConfigdo vašeho clusteru pomocí příkazukubectl apply.kubectl apply -f verify-config.yaml
Nasazení ukázkových imagí do clusteru AKS
Pomocí příkazu nasaďte podepsanou image
kubectl run demo.kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signedNásledující příklad výstupu ukazuje, že integrita image umožňuje nasazení:
ghcr.io/deislabs/ratify/notary-image:signed pod/demo-signed created
Pokud chcete použít vlastní image, přečtěte si pokyny k podepisování obrázků.
Zakázání integrity obrázků
Odstranit politickou iniciativu
Nejprve byste měli odstranit iniciativu zásad pomocí příkazu
az policy assignment delete.az policy assignment delete --name 'deploy-trustedimages'
Diable add-on
Potom pomocí příkazu s příznakem zakažte doplněk Integrity obrázků ve vašem clusteru
az aks update--disable-image-integrity.az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
Další kroky
V tomto článku jste zjistili, jak pomocí integrity image ověřit podepsané image před jejich nasazením do clusterů Azure Kubernetes Service (AKS). Pokud chcete zjistit, jak podepisovat vlastní kontejnery, přečtěte si téma Sestavení, podepsání a ověření imagí kontejnerů pomocí notáře a služby Azure Key Vault (Preview).