Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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üğü, Ratify temel alan bir özelliktir. Bir AKS kümesinde özellik adı ve özellik adı ImageIntegrity’dir; ilgili Image Integrity podlarının adlarında Ratify bulunur.
Ö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 kapsamında kısmen, mümkün olan en iyi çaba esasıyla desteklenir. 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-previewCLI 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, AKS için Azure İlkesi eklentisini yükleme bölümüne bakın.
OIDC Issuer etkinleştirilmiş bir AKS kümesi. Yeni bir küme oluşturmak veya mevcut bir kümeyi güncelleştirmek için bkz: OIDC Düzenleyicisi ile bir AKS kümesi yapılandırma.
Azure aboneliğinize kayıtlı
EnableImageIntegrityPreviewözellik bayrakları. Aşağıdaki komutları kullanarak özellik bayraklarını kaydedin:EnableImageIntegrityPreviewkomutunu kullanarakaz feature registerözellik bayraklarını kaydedin.# 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*.komutunu kullanarak
az feature showkayıt durumunu doğrulayın.# Verify the EnableImageIntegrityPreview feature flag registration status az feature show --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview"Durum Registered olarak göründüğünde,
az provider registerkomutunu kullanarakMicrosoft.ContainerServicekaynak sağlayıcısının kaydını yenileyin.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.
- Desteklenen tek doğrulayıcı Notation'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 İmaj Bütünlüğü'nü etkinleştirmek, bir Ratify pod oluşturur. Bu Ratify pod aşağıdaki görevleri gerçekleştirir:
-
RatifyCRD’ler aracılığıyla ayarladığınız yapılandırmaya göre Azure Key Vault’taki sertifikaları eşitler. - Doğrulama istekleri Azure İlkesi'den geldiğinde ACR'de depolanan imajlara erişir. Bu deneyimi etkinleştirmek için Azure İlkesi, Open Policy Agent (OPA) için bir kabul denetleyicisi webhook'u olan Gatekeeper'ı 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.
-
AzurePolicyveGatekeeperdoğ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ı, yönetişim odaklı bir senaryodur ve AKS kümelerinde görüntü imzalarını geniş ölçekte doğrulamak için Azure İlkesi'den yararlanır. Azure İlkesi’nin yerleşik tanım kitaplığında bulunan AKS’nin Image Integrity adlı yerleşik Azure İlkesi girişimini kullanmanızı öneririz.
AKS ilke girişimini
[Preview]: Use Image Integrity to ensure only trusted images are deployedkullanarakaz policy assignment createkomutuyla bir ilke ataması 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}Ratifypod, özelliği etkinleştirdikten sonra 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
Image Integrity’nin hedef imzalı imajı doğru şekilde doğrulayabilmesi için, kubectl kullanarak K8s CRD’leri aracılığıyla Ratify yapılandırmalarını ayarlamanız 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 CRD'leri Onaylama bölümüne bakın.
Adlı
VerifyConfigbirverify-config.yamldosya oluşturun ve aşağıdaki YAML'de kopyalayın: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: - "*"VerifyConfigkomutunu kullanarakkubectl applykü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:signedAş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
Politika inisiyatifini kaldır
İlk olarak,
az policy assignment deletekomutunu kullanarak politika girişimini kaldırmanız gerekir.az policy assignment delete --name 'deploy-trustedimages'
Diable eklenti
Ardından,
az aks updatekomutunu ve--disable-image-integritybayrağını kullanarak kümenizdeki Görüntü Bütünlüğü eklentisini devre dışı bırakın.az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
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ı nasıl imzalayacağınızı öğrenmek istiyorsanız, Notary ve Azure Key Vault (Önizleme) kullanarak kapsayıcı görüntüleri oluşturma, imzalama ve doğrulama konusuna bakın.