Az Image Integrity használatával ellenőrizheti az aláírt lemezképeket, mielőtt üzembe helyezené őket az Azure Kubernetes Service-fürtökön (előzetes verzió)
Az Azure Kubernetes Service (AKS) és annak mögöttes tárolómodellje nagyobb méretezhetőséget és kezelhetőséget biztosít a natív felhőalkalmazások számára. Az AKS segítségével rugalmas szoftveralkalmazásokat indíthat el a rendszer futtatókörnyezeti igényeinek megfelelően. Ez a rugalmasság azonban új kihívásokat jelenthet.
Ezekben az alkalmazáskörnyezetekben az aláírt tárolólemezképek használatával ellenőrizheti, hogy az üzemelő példányok megbízható entitásból készültek-e, és hogy a rendszerképeket nem módosították-e a létrehozásuk óta. A rendszerkép-integritás egy szolgáltatás, amely lehetővé teszi egy beépített Azure Policy-definíció hozzáadását annak ellenőrzéséhez, hogy csak aláírt rendszerképek vannak-e üzembe helyezve az AKS-fürtökön.
Feljegyzés
A rendszerkép integritása a Ratify szolgáltatáson alapul. Egy AKS-fürtben a szolgáltatásnév és a tulajdonság neve ImageIntegrity
, míg a megfelelő képintegritási podok nevei tartalmazzák Ratify
.
Fontos
Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:
Előfeltételek
Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, létrehozhat egy ingyenes fiókot.
Azure CLI vagy Azure PowerShell.
aks-preview
A CLI-bővítmény 0.5.96-os vagy újabb verziója.Győződjön meg arról, hogy az AKS Azure Policy-bővítménye engedélyezve van a fürtön. Ha nincs telepítve ez a bővítmény, olvassa el az Azure Policy bővítmény telepítése az AKS-hez című témakört.
Az OIDC-kiállítóval engedélyezett AKS-fürt. Új fürt létrehozásához vagy meglévő fürt frissítéséhez lásd : AKS-fürt konfigurálása OIDC-kiállítóval.
Az
EnableImageIntegrityPreview
Azure-előfizetésben regisztrált ésAKS-AzurePolicyExternalData
a funkciójelzők. Regisztrálja a funkciójelzőket a következő parancsokkal:Regisztrálja a és
AKS-AzurePolicyExternalData
aEnableImageIntegrityPreview
funkciójelzőket aaz feature register
paranccsal.# 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"
Eltarthat néhány percig, amíg az állapot regisztráltként jelenik meg.
Ellenőrizze a regisztrációs állapotot a
az feature show
paranccsal.# 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"
Ha az állapot a Regisztrált állapotot mutatja, frissítse az
Microsoft.ContainerService
erőforrás-szolgáltató regisztrációját aaz provider register
paranccsal.az provider register --namespace Microsoft.ContainerService
Szempontok és korlátozások
- Az AKS-fürtöknek a Kubernetes 1.26-os vagy újabb verzióját kell futtatniuk.
- Ezt a funkciót nem érdemes éles Azure Container Registry -nyilvántartásokhoz vagy számítási feladatokhoz használni.
- A képintegritás legfeljebb 200 egyedi aláírást támogat egyszerre fürtszintűen.
- A jelölés az egyetlen támogatott ellenőrző.
- A naplózás az egyetlen támogatott ellenőrzési házirend-hatás.
A képintegritás működése
Az Image Integrity a Ratify, az Azure Policy és a Gatekeeper használatával ellenőrzi az aláírt rendszerképeket, mielőtt üzembe helyezené őket az AKS-fürtökön. A fürt képintegritásának engedélyezése podot Ratify
helyez üzembe. Ez a Ratify
pod a következő feladatokat hajtja végre:
- Az Azure Key Vault tanúsítványait egyezteti a CRD-kkel beállított
Ratify
konfiguráció alapján. - Hozzáfér az ACR-ben tárolt képekhez, amikor az érvényesítési kérelmek az Azure Policyból érkeznek. Ennek a felületnek az engedélyezéséhez az Azure Policy kibővíti a Gatekeepert, az Open Policy Agent (OPA) beléptető webhookját.
- Meghatározza, hogy a célrendszerkép egy megbízható tanúsítványsal van-e aláírva, ezért megbízhatónak minősül-e.
AzurePolicy
ésGatekeeper
használja az érvényesítési eredményeket megfelelőségi állapotként annak eldöntéséhez, hogy engedélyezi-e az üzembe helyezési kérelmet.
Képintegritás engedélyezése az AKS-fürtön
Feljegyzés
A rendszerkép-aláírás ellenőrzése vállalatirányítási forgatókönyv, és az Azure Policy használatával ellenőrzi a rendszerkép-aláírásokat az AKS-fürtökön. Javasoljuk, hogy használja az AKS beépített Azure Policy-kezdeményezését, amely az Azure Policy beépített definíciótárában érhető el.
Hozzon létre egy szabályzat-hozzárendelést az AKS-szabályzat kezdeményezésével
[Preview]: Use Image Integrity to ensure only trusted images are deployed
aaz policy assignment create
paranccsal.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}
A
Ratify
pod a funkció engedélyezése után telepedik.
Feljegyzés
A szabályzat akkor helyezi üzembe a rendszerkép-integritás funkciót a fürtön, amikor bármilyen frissítési műveletet észlel a fürtön. Ha azonnal engedélyezni szeretné a szolgáltatást, létre kell hoznia egy szabályzat-szervizelést a az policy remediation create
parancs használatával.
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}
Ellenőrzési konfigurációk beállítása
Ahhoz, hogy a képintegritás megfelelően ellenőrizze a célként aláírt lemezképet, K8s CRD-k használatával kubectl
kell konfigurálnia Ratify
a konfigurációkat.
Ebben a cikkben egy önaláírt hitelesítésszolgáltatói tanúsítványt használunk a hivatalos Ratify dokumentációból az ellenőrzési konfigurációk beállításához. További példákért lásd : Ratify CRDs.
Hozzon létre egy
VerifyConfig
fájlt,verify-config.yaml
és másolja a következő YAML-ben: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: - "*"
Alkalmazza a
VerifyConfig
fürtöt akubectl apply
parancs használatával.kubectl apply -f verify-config.yaml
Mintaképek üzembe helyezése az AKS-fürtben
Aláírt rendszerkép üzembe helyezése a
kubectl run demo
paranccsal.kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signed
Az alábbi példakimenet azt mutatja, hogy az Image Integrity lehetővé teszi az üzembe helyezést:
ghcr.io/deislabs/ratify/notary-image:signed pod/demo-signed created
Ha saját képeket szeretne használni, tekintse meg a képaláírásra vonatkozó útmutatót.
Képintegritás letiltása
Tiltsa le a fürt képintegritását a
az aks update
jelölővel ellátott--disable-image-integrity
paranccsal.az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
Szabályzat kezdeményezésének eltávolítása
Távolítsa el a házirend-kezdeményezést a
az policy assignment delete
paranccsal.az policy assignment delete --name 'deploy-trustedimages'
Következő lépések
Ebben a cikkben megtanulta, hogyan használhatja az Image Integrityet az aláírt képek ellenőrzésére, mielőtt üzembe helyezené őket az Azure Kubernetes Service-fürtökben. Ha szeretné megtudni, hogyan írhat alá saját tárolókat, olvassa el a Tárolórendszerképek összeállítása, aláírása és ellenőrzése a Közjegyző és az Azure Key Vault (előzetes verzió) használatával című témakört.
Azure Kubernetes Service