Aracılığıyla paylaş


İ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ı ve AKS-AzurePolicyExternalData özellik bayrakları. Aşağıdaki komutları kullanarak özellik bayraklarını kaydedin:

    1. EnableImageIntegrityPreview komutunu kullanarak az feature register ve AKS-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.

    2. 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"
      
    3. 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üğü için temel mimariyi gösteren ekran görüntüsü.

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:

  1. CRD'ler aracılığıyla Ratify ayarladığınız yapılandırmaya göre Azure Key Vault sertifikalarını mutabık tutar.
  2. 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.
  3. 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.
  4. AzurePolicy ve Gatekeeper 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.

  1. Adlı verify-config.yaml bir VerifyConfig 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:
                - "*"
    
  2. VerifyConfig komutunu kullanarak kubectl 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 kullanarak az 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.