Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Kubernetes Service (AKS) i jej bazowy model kontenera zapewniają zwiększoną skalowalność i możliwości zarządzania dla aplikacji natywnych dla chmury. Usługa AKS umożliwia uruchamianie elastycznych aplikacji oprogramowania zgodnie z potrzebami środowiska uruchomieniowego systemu. Jednak ta elastyczność może powodować nowe wyzwania.
W tych środowiskach aplikacji użycie podpisanych obrazów kontenerów pomaga sprawdzić, czy wdrożenia zostały skompilowane na podstawie zaufanej jednostki i że obrazy nie zostały naruszone od czasu ich utworzenia. Integralność obrazu to usługa, która umożliwia dodanie wbudowanej definicji usługi Azure Policy w celu sprawdzenia, czy tylko podpisane obrazy są wdrażane w klastrach usługi AKS.
Uwaga
Integralność obrazu jest funkcją opartą na Ratify. W klastrze usługi AKS nazwa funkcji i nazwa właściwości to ImageIntegrity, a odpowiednie nazwy zasobników integralności obrazów zawierają Ratifywartość .
Ważne
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
Wymagania wstępne
Subskrypcja platformy Azure. Jeśli nie masz subskrypcji Azure, możesz utworzyć bezpłatne konto Azure.
Interfejs wiersza polecenia platformy Azure lub program Azure PowerShell.
aks-previewRozszerzenie interfejsu wiersza polecenia w wersji 0.5.96 lub nowszej.Upewnij się, że dodatek usługi Azure Policy dla usługi AKS jest włączony w klastrze. Jeśli nie masz zainstalowanego dodatku, zobacz Instalowanie dodatku usługi Azure Policy dla usługi AKS.
Klaster usługi AKS z włączonym wystawcą OIDC. Aby utworzyć nowy klaster lub zaktualizować istniejący klaster, zobacz Konfigurowanie klastra usługi AKS za pomocą wystawcy OIDC.
Flagi
EnableImageIntegrityPreviewfunkcji zarejestrowane w ramach subskrypcji platformy Azure. Zarejestruj flagi funkcji przy użyciu następujących poleceń:Zarejestruj flagi
EnableImageIntegrityPreviewfunkcji przyaz feature registerużyciu polecenia .# 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*.Sprawdź stan rejestracji przy użyciu
az feature showpolecenia .# Verify the EnableImageIntegrityPreview feature flag registration status az feature show --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview"Gdy status pokazuje Zarejestrowane, odśwież rejestrację dostawcy zasobów
Microsoft.ContainerServiceużywając poleceniaaz provider register.az provider register --namespace Microsoft.ContainerService
Rozważania i ograniczenia
- Klastry usługi AKS muszą uruchamiać platformę Kubernetes w wersji 1.26 lub nowszej.
- Nie należy używać tej funkcji do produkcyjnych rejestrów ani obciążeń usługi Azure Container Registry (ACR).
- Integralność obrazu obsługuje maksymalnie 200 unikatowych podpisów jednocześnie w całym klastrze.
- Notacja jest jedynym obsługiwanym weryfikatorem.
- Audyt jest jedynym obsługiwanym efektem polityki weryfikacji.
Jak działa integralność obrazu
Integralność obrazu używa rozwiązania Ratify, usługi Azure Policy i Gatekeeper do weryfikacji podpisanych obrazów przed ich wdrożeniem w klastrach AKS. Aktywacja integralności obrazu w klastrze wdraża Ratify pod. Ten Ratify pod wykonuje następujące zadania:
- Uzgadnia certyfikaty z usługi Azure Key Vault zgodnie z konfiguracją skonfigurowaną za pomocą
Ratifyidentyfikatorów CRD. - Uzyskuje dostęp do obrazów przechowywanych w usłudze ACR, gdy żądania weryfikacji pochodzą z usługi Azure Policy. Aby włączyć to środowisko, usługa Azure Policy rozszerza program Gatekeeper, webhook kontrolera dostępu dla Open Policy Agent (OPA).
- Określa, czy obraz docelowy jest podpisany przy użyciu zaufanego certyfikatu i dlatego jest uznawany za zaufany.
-
AzurePolicyiGatekeeperużywają wyników weryfikacji jako stanu zgodności, aby zdecydować, czy zezwolić na żądanie wdrożenia.
Włącz integralność obrazów na klastrze AKS
Uwaga
Weryfikacja podpisu obrazu jest scenariuszem zorientowanym na zarządzanie i wykorzystuje Azure Policy do weryfikowania podpisów obrazów w klastrach AKS na dużą skalę. Zalecamy użycie wbudowanej inicjatywy integralności obrazów usługi AKS w ramach usługi Azure Policy, która jest dostępna w wbudowanej bibliotece definicji usługi Azure Policy.
Utwórz przypisanie zasad z inicjatywą zasad AKS
[Preview]: Use Image Integrity to ensure only trusted images are deployedza pomocą poleceniaaz 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}Zasobnik
Ratifyzostanie wdrożony po włączeniu tej funkcji.
Uwaga
Polityka wdraża funkcję integralności obrazu w klastrze, gdy wykrywa jakiekolwiek operacje aktualizacji w klastrze. Jeśli chcesz natychmiast włączyć tę funkcję, musisz utworzyć korygowanie zasad przy użyciu az policy remediation create polecenia .
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}
Ustawienie konfiguracji weryfikacji
Aby integralność obrazu mogła być prawidłowo zweryfikowana dla podpisanego obrazu docelowego, należy ustawić Ratify konfiguracje za pomocą K8s CRDs przy użyciu kubectl.
W tym artykule używamy certyfikatu CA z podpisem własnym z oficjalnej dokumentacji Ratify, aby skonfigurować weryfikację. Aby uzyskać więcej przykładów, zobacz Ratify CRDs.
VerifyConfigUtwórz plik o nazwieverify-config.yamli skopiuj go w następującym pliku 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: - "*"Zastosuj
VerifyConfigdo swojego klastra, używając poleceniakubectl apply.kubectl apply -f verify-config.yaml
Wdróż przykładowe obrazy do klastra AKS
Wdróż podpisany obraz przy użyciu
kubectl run demopolecenia .kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signedNastępujące przykładowe dane wyjściowe pokazują, że integralność obrazu umożliwia wdrożenie:
ghcr.io/deislabs/ratify/notary-image:signed pod/demo-signed created
Jeśli chcesz używać własnych obrazów, zapoznaj się ze wskazówkami dotyczącymi podpisywania obrazów.
Wyłącz integralność obrazu
Usunięcie inicjatywy politycznej
Najpierw należy usunąć inicjatywę polityki przy użyciu polecenia
az policy assignment delete.az policy assignment delete --name 'deploy-trustedimages'
Dodatek do Diable
Następnie wyłącz dodatek Image Integrity na klastrze, używając polecenia
az aks updatez flagą--disable-image-integrity.az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
Następne kroki
W tym artykule przedstawiono sposób używania integralności obrazu do weryfikowania podpisanych obrazów przed wdrożeniem ich w klastrach usługi Azure Kubernetes Service (AKS). Jeśli chcesz dowiedzieć się, jak podpisać własne kontenery, zobacz Kompilowanie, podpisywanie i weryfikowanie obrazów kontenerów przy użyciu Notary i usługi Azure Key Vault (Wersja zapoznawcza).