İmzalı görüntüleri Azure Kubernetes Service (AKS) kümelerinize dağıtmadan önce doğrulamak için Görüntü Bütünlüğünü kullanma (Önizleme)
Azure Kubernetes Service (AKS) ve temel kapsayıcı modeli, buluta özel uygulamalar için daha fazla ölçeklenebilirlik ve yönetilebilirlik sağlar. AKS ile sisteminizin çalışma zamanı gereksinimlerine göre esnek yazılım uygulamaları başlatabilirsiniz. Ancak bu esneklik yeni zorluklara neden olabilir.
Bu uygulama ortamlarında, imzalı kapsayıcı görüntülerinin kullanılması, dağıtımlarınızın güvenilir bir varlıktan oluşturulduğundan ve görüntülerin oluşturulduktan sonra değiştirilmediğini doğrulamaya yardımcı olur. Görüntü Bütünlüğü, AKS kümelerinize yalnızca imzalı görüntülerin dağıtıldığını doğrulamak için Azure İlkesi yerleşik bir tanım eklemenize olanak tanıyan bir hizmettir.
Not
Görüntü Bütünlüğü, Onayla'ya dayalı bir özelliktir. AKS kümesinde özellik adı ve özellik adı olurken ImageIntegrity
, ilgili Görüntü Bütünlüğü podlarının adları içerir Ratify
.
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. AKS önizlemeleri, müşteri desteği tarafından kısmen en iyi çaba temelinde ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
Önkoşullar
Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz hesap oluşturabilirsiniz.
Azure CLI veya Azure PowerShell.
aks-preview
CLI uzantısı sürüm 0.5.96 veya üzeri.KÜMEnizde AKS için Azure İlkesi eklentisinin etkinleştirildiğinden emin olun. Bu eklenti yüklü değilse bkz. AKS için Azure İlkesi eklentisini yükleme.
OIDC Veren ile etkinleştirilen bir AKS kümesi. Yeni küme oluşturmak veya var olan bir kümeyi güncelleştirmek için bkz . OIDC Veren ile AKS kümesi yapılandırma.
EnableImageIntegrityPreview
Azure aboneliğinizde kayıtlı veAKS-AzurePolicyExternalData
özellik bayrakları. Aşağıdaki komutları kullanarak özellik bayraklarını kaydedin:EnableImageIntegrityPreview
komutunu kullanarakaz feature register
veAKS-AzurePolicyExternalData
özellik bayraklarını kaydedin.# 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"
Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürebilir.
komutunu kullanarak
az feature show
kayıt durumunu doğrulayın.# 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"
Durum Kaydedildi olarak gösterildikten sonra komutunu kullanarak kaynak sağlayıcısının
Microsoft.ContainerService
kaydını yenileyinaz provider register
.az provider register --namespace Microsoft.ContainerService
Dikkat edilecekler ve sınırlamalar
- AKS kümelerinizin Kubernetes sürüm 1.26 veya üzerini çalıştırması gerekir.
- Bu özelliği üretim Azure Container Registry (ACR) kayıt defterleri veya iş yükleri için kullanmamalısınız.
- Görüntü Bütünlüğü, küme genelinde en fazla 200 benzersiz imzayı destekler.
- Gösterimi desteklenen tek doğrulayıcıdır.
- Denetim desteklenen tek doğrulama ilkesi etkisidir.
Görüntü Bütünlüğü nasıl çalışır?
Görüntü Bütünlüğü, imzalı görüntüleri AKS kümelerinize dağıtmadan önce doğrulamak için Onayla, Azure İlkesi ve Ağ Geçidi Denetleyicisi'ni kullanır. Kümenizde Görüntü Bütünlüğünün etkinleştirilmesi bir Ratify
pod dağıtır. Bu Ratify
pod aşağıdaki görevleri gerçekleştirir:
- CRD'ler aracılığıyla
Ratify
ayarladığınız yapılandırmaya göre Azure Key Vault sertifikalarını mutabık tutar. - Doğrulama istekleri Azure İlkesi geldiğinde ACR'de depolanan görüntülere erişir. Bu deneyimi etkinleştirmek için Azure İlkesi, Açık İlke Aracısı (OPA) için bir erişim denetleyicisi web kancası olan Ağ Geçidi Denetleyicisi'ni genişletir.
- Hedef görüntünün güvenilir bir sertifikayla imzalanıp imzalanmadığını ve bu nedenle güvenilir olarak kabul edilip edilmediğini belirler.
AzurePolicy
veGatekeeper
doğrulama sonuçlarını uyumluluk durumu olarak kullanarak dağıtım isteğine izin verilip verilmeyeceğine karar verin.
AKS kümenizde Görüntü Bütünlüğünü Etkinleştirme
Not
Görüntü imzası doğrulaması idare odaklı bir senaryodur ve aks kümelerindeki görüntü imzalarını büyük ölçekte doğrulamak için Azure İlkesi yararlanıyor. AZURE İLKESI'un yerleşik tanım kitaplığında bulunan AKS'nin Yerleşik Görüntü Bütünlüğü Azure İlkesi girişimini kullanmanızı öneririz.
komutunu kullanarak AKS ilke girişimiyle
[Preview]: Use Image Integrity to ensure only trusted images are deployed
bir ilke atamasıaz policy assignment create
oluşturun.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}
Siz
Ratify
özelliği etkinleştirdikten sonra pod dağıtılır.
Not
İlke, kümede herhangi bir güncelleştirme işlemi algıladığında kümenize Görüntü Bütünlüğü özelliğini dağıtır. Özelliği hemen etkinleştirmek istiyorsanız komutunu kullanarak bir ilke düzeltmesi az policy remediation create
oluşturmanız gerekir.
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}
Doğrulama yapılandırmalarını ayarlama
Görüntü Bütünlüğünün hedef imzalı görüntüyü düzgün bir şekilde doğrulaması için kullanarak K8s CRD'leri aracılığıyla yapılandırmalar kubectl
ayarlamanız Ratify
gerekir.
Bu makalede, doğrulama yapılandırmalarını ayarlamak için resmi Onay belgelerinden otomatik olarak imzalanan bir CA sertifikası kullanacağız. Daha fazla örnek için bkz . CRD'leri onaylama.
Adlı
verify-config.yaml
birVerifyConfig
dosya oluşturun ve aşağıdaki YAML'de kopyalayın: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: - "*"
VerifyConfig
komutunu kullanarakkubectl apply
kümenize uygulayın.kubectl apply -f verify-config.yaml
AKS kümenize örnek görüntüler dağıtma
komutunu kullanarak imzalı bir görüntü dağıtın
kubectl run demo
.kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signed
Aşağıdaki örnek çıktı görüntü bütünlüğünün dağıtıma izin verdiği gösterir:
ghcr.io/deislabs/ratify/notary-image:signed pod/demo-signed created
Kendi görüntülerinizi kullanmak istiyorsanız, görüntü imzalama yönergelerine bakın.
Görüntü Bütünlüğünü Devre Dışı Bırak
bayrağıyla komutunu
--disable-image-integrity
kullanarakaz aks update
kümenizde Görüntü Bütünlüğünü devre dışı bırakın.az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
İlke girişimini kaldırma
komutunu kullanarak ilke girişimini
az policy assignment delete
kaldırın.az policy assignment delete --name 'deploy-trustedimages'
Sonraki adımlar
Bu makalede, imzalı görüntüleri Azure Kubernetes Service (AKS) kümelerinize dağıtmadan önce doğrulamak için Görüntü Bütünlüğünü kullanmayı öğrendiniz. Kendi kapsayıcılarınızı imzalamayı öğrenmek istiyorsanız noter ve Azure Key Vault (Önizleme) kullanarak kapsayıcı görüntülerini oluşturma, imzalama ve doğrulama bölümüne bakın.
Azure Kubernetes Service