Afbeeldingsintegriteit gebruiken om ondertekende installatiekopieën te valideren voordat u ze implementeert in uw AKS-clusters (Azure Kubernetes Service) (preview)
Azure Kubernetes Service (AKS) en het onderliggende containermodel bieden een grotere schaalbaarheid en beheerbaarheid voor cloudtoepassingen. Met AKS kunt u flexibele softwaretoepassingen starten op basis van de runtimebehoeften van uw systeem. Deze flexibiliteit kan echter nieuwe uitdagingen opleveren.
In deze toepassingsomgevingen helpt het gebruik van ondertekende containerinstallatiekopieën te controleren of uw implementaties zijn gebouwd op basis van een vertrouwde entiteit en dat er sinds het maken van installatiekopieën niet met installatiekopieën is geknoeid. Afbeeldingsintegriteit is een service waarmee u een ingebouwde Definitie van Azure Policy kunt toevoegen om te controleren of alleen ondertekende installatiekopieën zijn geïmplementeerd in uw AKS-clusters.
Notitie
Integriteit van afbeeldingen is een functie op basis van Ratificeren. Op een AKS-cluster zijn ImageIntegrity
de naam en eigenschapsnaam van de functie, terwijl de namen van de relevante pods voor afbeeldingsintegriteit de naam bevatten Ratify
.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals is' en 'als beschikbaar' en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Vereisten
Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis account maken.
aks-preview
CLI-extensie versie 0.5.96 of hoger.Zorg ervoor dat de Azure Policy-invoegtoepassing voor AKS is ingeschakeld in uw cluster. Zie Azure Policy-invoegtoepassing installeren voor AKS als u deze invoegtoepassing niet hebt geïnstalleerd.
Een AKS-cluster ingeschakeld met OIDC Issuer. Zie Een AKS-cluster configureren met OIDC Issuer als u een nieuw cluster wilt maken of een bestaand cluster wilt bijwerken.
De
EnableImageIntegrityPreview
enAKS-AzurePolicyExternalData
functievlagmen die zijn geregistreerd in uw Azure-abonnement. Registreer de functievlagmen met behulp van de volgende opdrachten:Registreer de
EnableImageIntegrityPreview
enAKS-AzurePolicyExternalData
functievlagmen met behulp van deaz feature register
opdracht.# 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"
Het kan enkele minuten duren voordat de status wordt weergegeven als Geregistreerd.
Controleer de registratiestatus met behulp van de
az feature show
opdracht.# 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"
Zodra de status Geregistreerd wordt weergegeven, vernieuwt u de registratie van de
Microsoft.ContainerService
resourceprovider met behulp van deaz provider register
opdracht.az provider register --namespace Microsoft.ContainerService
Overwegingen en beperkingen
- Uw AKS-clusters moeten Kubernetes versie 1.26 of hoger uitvoeren.
- Gebruik deze functie niet voor productieregisters of workloads van Azure Container Registry (ACR).
- Afbeeldingsintegriteit ondersteunt maximaal 200 unieke handtekeningen tegelijk clusterbreed.
- Notatie is de enige ondersteunde verificator.
- Controle is het enige ondersteunde verificatiebeleidseffect.
Hoe afbeeldingsintegriteit werkt
Afbeeldingsintegriteit maakt gebruik van Ratificeren, Azure Policy en Gatekeeper om ondertekende installatiekopieën te valideren voordat ze in uw AKS-clusters worden geïmplementeerd. Als u afbeeldingsintegriteit inschakelt in uw cluster, wordt een Ratify
pod geïmplementeerd. Deze Ratify
pod voert de volgende taken uit:
- Hiermee worden certificaten van Azure Key Vault afgestemd op de configuratie die u hebt ingesteld via
Ratify
CRD's. - Toegang tot installatiekopieën die zijn opgeslagen in ACR wanneer validatieaanvragen afkomstig zijn van Azure Policy. Om deze ervaring mogelijk te maken, breidt Azure Policy Gatekeeper uit, een toegangscontrollerwebhook voor Open Policy Agent (OPA).
- Bepaalt of de doelinstallatiekopieën zijn ondertekend met een vertrouwd certificaat en daarom als vertrouwd worden beschouwd.
AzurePolicy
enGatekeeper
verbruik de validatieresultaten als de nalevingsstatus om te bepalen of de implementatieaanvraag moet worden toegestaan.
Afbeeldingsintegriteit inschakelen op uw AKS-cluster
Notitie
Verificatie van afbeeldingshandtekening is een beheerscenario en maakt gebruik van Azure Policy om afbeeldingshandtekeningen op AKS-clusters op schaal te controleren. We raden u aan het ingebouwde Azure Policy-initiatief voor afbeeldingsintegriteit van AKS te gebruiken, dat beschikbaar is in de ingebouwde definitiebibliotheek van Azure Policy.
Maak een beleidstoewijzing met het AKS-beleidsinitiatief
[Preview]: Use Image Integrity to ensure only trusted images are deployed
met behulp van deaz policy assignment create
opdracht.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}
De
Ratify
pod wordt geïmplementeerd nadat u de functie hebt ingeschakeld.
Notitie
Het beleid implementeert de functie Integriteit van installatiekopieën in uw cluster wanneer er een updatebewerking in het cluster wordt gedetecteerd. Als u de functie onmiddellijk wilt inschakelen, moet u een beleidsherstel maken met behulp van de az policy remediation create
opdracht.
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}
Verificatieconfiguraties instellen
Om de integriteit van de installatiekopieën correct te verifiëren, moet u configuraties instellen Ratify
via K8s CRD's met behulp van kubectl
.
In dit artikel gebruiken we een zelfondertekend CA-certificaat uit de officiële ratificatiedocumentatie voor het instellen van verificatieconfiguraties. Zie Ratificeren CRD's voor meer voorbeelden.
Maak een
VerifyConfig
bestand met de naamverify-config.yaml
en kopieer in de volgende 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: - "*"
Pas het
VerifyConfig
cluster toe met behulp van dekubectl apply
opdracht.kubectl apply -f verify-config.yaml
Voorbeeldinstallatiekopieën implementeren in uw AKS-cluster
Implementeer een ondertekende installatiekopieën met behulp van de
kubectl run demo
opdracht.kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signed
In de volgende voorbeelduitvoer ziet u dat afbeeldingsintegriteit de implementatie toestaat:
ghcr.io/deislabs/ratify/notary-image:signed pod/demo-signed created
Als u uw eigen afbeeldingen wilt gebruiken, raadpleegt u de richtlijnen voor het ondertekenen van afbeeldingen.
Afbeeldingsintegriteit uitschakelen
Schakel Integriteit van installatiekopieën in uw cluster uit met behulp van de
az aks update
opdracht met de--disable-image-integrity
vlag.az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
Beleidsinitiatief verwijderen
Verwijder het beleidsinitiatief met behulp van de
az policy assignment delete
opdracht.az policy assignment delete --name 'deploy-trustedimages'
Volgende stappen
In dit artikel hebt u geleerd hoe u Image Integrity kunt gebruiken om ondertekende installatiekopieën te valideren voordat u ze implementeert in uw AKS-clusters (Azure Kubernetes Service). Als u wilt weten hoe u uw eigen containers kunt ondertekenen, raadpleegt u Build, sign and verify container images using Notary and Azure Key Vault (preview).
Azure Kubernetes Service