Użyj integralności obrazu, aby zweryfikować podpisane obrazy przed wdrożeniem ich w klastrach Azure Kubernetes Service (AKS) (wersja zapoznawcza)
Azure Kubernetes Service (AKS) i jego 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 wprowadzać nowe wyzwania.
W tych środowiskach aplikacji użycie podpisanych obrazów kontenerów pomaga sprawdzić, czy wdrożenia są tworzone 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 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 obrazu zawierają Ratify
.
Ważne
Funkcje usługi AKS w wersji zapoznawczej są dostępne w oparciu o samoobsługę. Wersje zapoznawcze są udostępniane "jak jest" 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ą klienta w oparciu o najlepsze rozwiązania. 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 platformy Azure, możesz utworzyć bezpłatne konto.
Interfejs wiersza polecenia platformy Azure lub Azure PowerShell.
aks-preview
Rozszerzenie interfejsu wiersza polecenia w wersji 0.5.96 lub nowszej.Upewnij się, że dodatek Azure Policy dla usługi AKS jest włączony w klastrze. Jeśli nie masz zainstalowanego dodatku, zobacz Instalowanie dodatku Azure Policy dla usługi AKS.
Klaster usługi AKS włączony za pomocą wystawcy OIDC. Aby utworzyć nowy klaster lub zaktualizować istniejący klaster, zobacz Konfigurowanie klastra usługi AKS za pomocą wystawcy OIDC.
EnableImageIntegrityPreview
Flagi funkcji iAKS-AzurePolicyExternalData
zarejestrowane w ramach subskrypcji platformy Azure. Zarejestruj flagi funkcji przy użyciu następujących poleceń:Zarejestruj flagi
EnableImageIntegrityPreview
funkcji iAKS-AzurePolicyExternalData
przy użyciuaz feature register
polecenia .# Register the EnableImageIntegrityPreview feature flag az feature register --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview" # Register the AKS-AzurePolicyExternalData feature flag az feature register --namespace "Microsoft.ContainerService" --name "AKS-AzurePolicyExternalData"
Wyświetlenie stanu jako Zarejestrowane może potrwać kilka minut.
Sprawdź stan rejestracji przy użyciu
az feature show
polecenia .# Verify the EnableImageIntegrityPreview feature flag registration status az feature show --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview" # Verify the AKS-AzurePolicyExternalData feature flag registration status az feature show --namespace "Microsoft.ContainerService" --name "AKS-AzurePolicyExternalData"
Po wybraniu stanu Zarejestrowane odśwież rejestrację
Microsoft.ContainerService
dostawcy zasobów przy użyciuaz provider register
polecenia .az provider register --namespace Microsoft.ContainerService
Istotne zagadnienia i ograniczenia
- Klastry usługi AKS muszą uruchamiać platformę Kubernetes w wersji 1.26 lub nowszej.
- Nie należy używać tej funkcji w rejestrach lub obciążeniach Azure Container Registry produkcyjnych (ACR).
- Integralność obrazu obsługuje maksymalnie 200 unikatowych podpisów w całym klastrze.
- Notacja jest jedynym obsługiwanym weryfikatorem.
- Inspekcja jest jedynym obsługiwanym efektem zasad weryfikacji.
Jak działa integralność obrazu
Integralność obrazu używa rozwiązania Ratify, Azure Policy i gatekeeper do weryfikowania podpisanych obrazów przed wdrożeniem ich w klastrach usługi AKS. Włączenie integralności obrazu w klastrze wdraża Ratify
zasobnik. Ten Ratify
zasobnik wykonuje następujące zadania:
- Uzgadnia certyfikaty z usługi Azure Key Vault zgodnie z konfiguracją skonfigurowaną za pomocą
Ratify
identyfikatorów CRD. - Uzyskuje dostęp do obrazów przechowywanych w usłudze ACR, gdy żądania weryfikacji pochodzą z Azure Policy. Aby umożliwić to środowisko, Azure Policy rozszerza strażnika, element webhook kontrolera dostępu dla agenta OPA (Open Policy Agent).
- Określa, czy obraz docelowy jest podpisany przy użyciu zaufanego certyfikatu, a zatem uznawany za zaufany.
AzurePolicy
iGatekeeper
używają wyników weryfikacji jako stanu zgodności, aby zdecydować, czy zezwolić na żądanie wdrożenia.
Włączanie integralności obrazów w klastrze usługi AKS
Uwaga
Weryfikacja podpisu obrazu to scenariusz zorientowany na ład i wykorzystuje Azure Policy do weryfikowania podpisów obrazów w klastrach usługi AKS na dużą skalę. Zalecamy użycie wbudowanej inicjatywy Azure Policy integralności obrazów usługi AKS, która jest dostępna w wbudowanej bibliotece definicji Azure Policy.
Utwórz przypisanie zasad za pomocą inicjatywy
[Preview]: Use Image Integrity to ensure only trusted images are deployed
zasad usługi AKS przy użyciuaz policy assignment create
polecenia .export SCOPE="/subscriptions/${SUBSCRIPTION}/resourceGroups/${RESOURCE_GROUP}" export LOCATION=$(az group show -n ${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
Ratify
jest wdrażany po włączeniu tej funkcji.
Uwaga
Zasady wdraża funkcję Integralność obrazu w klastrze, gdy wykrywają wszelkie 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 -n 'deploy-trustedimages' --scope ${SCOPE} --query id -o tsv)
az policy remediation create -a "$assignment_id" --definition-reference-id deployAKSImageIntegrity -n remediation -g ${RESOURCE_GROUP}
Konfigurowanie konfiguracji weryfikacji
Aby integralność obrazu prawidłowo zweryfikowała podpisany obraz docelowy, należy skonfigurować Ratify
konfiguracje za pomocą identyfikatorów CRD K8s przy użyciu polecenia kubectl
.
W tym artykule używamy certyfikatu urzędu certyfikacji z podpisem własnym z oficjalnej dokumentacji usługi Ratify w celu skonfigurowania konfiguracji weryfikacji. Aby uzyskać więcej przykładów, zobacz Ratify CRDs.
VerifyConfig
Utwórz plik o nazwieverify-config.yaml
i skopiuj go w następującym języku YAML:apiVersion: config.ratify.deislabs.io/v1beta1 kind: CertificateStore 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 element
VerifyConfig
do klastrakubectl apply
przy użyciu polecenia .kubectl apply -f verify-config.yaml
Wdrażanie przykładowych obrazów w klastrze usługi AKS
Wdróż podpisany obraz przy użyciu
kubectl run demo
polecenia .kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signed
Nastę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żyć własnych obrazów, zapoznaj się ze wskazówkami dotyczącymi podpisywania obrazów.
Wyłączanie integralności obrazu
Wyłącz integralność obrazu w klastrze przy użyciu
az aks update
polecenia z flagą--disable-image-integrity
.az aks update -g myResourceGroup -n MyManagedCluster --disable-image-integrity
Usuwanie inicjatywy zasad
Usuń inicjatywę zasad przy użyciu
az policy assignment delete
polecenia .az policy assignment delete --name 'deploy-trustedimages'
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 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 azure Key Vault (wersja zapoznawcza).