Kubernetes kümeleri için Azure İlkesi'ni anlama

Azure Ilkesi, Açık Ilke Aracısı (Opa) için bir giriş denetleyicisi Web kancası olan v3 'yi genişleterek, kümelerinizde merkezi ve tutarlı bir şekilde ölçeklenebilir ve koruma uygulamalarını uygular. Azure Ilkesi, Kubernetes kümelerinizin uyumluluk durumunu tek bir yerden yönetmeyi ve rapor yapmayı mümkün kılar. Eklenti aşağıdaki işlevleri üstlenir:

  • Kümeye ilke atamaları için Azure Ilke hizmeti ile kontrol eder.
  • İlke tanımlarını, kısıtlama şablonu ve kısıtlama özel kaynakları olarak kümeye dağıtır.
  • Denetim ve uyumluluk ayrıntılarını Azure Ilke hizmeti 'ne geri bildirir.

Kubernetes için Azure Ilkesi aşağıdaki küme ortamlarını destekler:

Önemli

AKS altyapısı ve Arc etkin Kubernetes eklentileri önizlemededir. Kubernetes için Azure Ilkesi yalnızca Linux düğüm havuzlarını ve yerleşik ilke tanımlarını destekler (özel ilke tanımları genel önizleme özelliğidir). Yerleşik ilke tanımları Kubernetes kategorisinde bulunur. Enforceopaconstraint ve Enforceregopolicy efektli sınırlı önizleme Ilkesi tanımları ve Ilgili Kubernetes hizmet kategorisi kullanım dışıdır. Bunun yerine, efekt denetimi ve kaynak sağlayıcısı ile reddetme modunu kullanın Microsoft.Kubernetes.Data .

Genel Bakış

Azure Ilkesini Kubernetes kümenizle etkinleştirmek ve kullanmak için aşağıdaki işlemleri gerçekleştirin:

  1. Kubernetes kümenizi yapılandırın ve eklentiyi yükledikten sonra:

    Not

    Yüklemeyle ilgili yaygın sorunlar için bkz. sorun giderme-Azure Ilke eklentisi.

  2. Kubernetes için Azure Ilke dilini anlayın

  3. Kubernetes kümenize bir tanım atama

  4. Doğrulamayı bekle

Sınırlamalar

Aşağıdaki genel sınırlamalar, Kubernetes kümeleri için Azure Ilke eklentisi için geçerlidir:

  • Kubernetes için Azure Ilke eklentisi, Kubernetes sürüm 1,14 veya üzeri sürümlerde desteklenir.
  • Kubernetes için Azure Ilke eklentisi yalnızca Linux düğüm havuzlarına dağıtılabilir.
  • Yalnızca yerleşik ilke tanımları desteklenir. Özel ilke tanımları, genel bir önizleme özelliğidir.
  • Azure ilke eklentisi tarafından desteklenen en fazla sayıda Pod: 10.000
  • Küme başına ilke başına en fazla uyumlu olmayan kayıt sayısı: 500
  • Abonelik başına en fazla uyumlu olmayan kayıt sayısı: 1.000.000
  • Azure Ilke eklentisi dışında ağ geçidi denetleyicisi yüklemeleri desteklenmez. Azure Ilke eklentisini etkinleştirmeden önce önceki bir Gatekeeper yüklemesi tarafından yüklenen tüm bileşenleri kaldırın.
  • Uyumsuzluk nedenleri Microsoft.Kubernetes.Data kaynak sağlayıcısı moduiçin kullanılamaz. Bileşen ayrıntılarınıkullanın.
  • Kaynak sağlayıcı modlarındabileşen düzeyi muafiyetleri desteklenmez.

Aşağıdaki sınırlamalar yalnızca AKS için Azure Ilke eklentisi için geçerlidir:

  • Aks Pod güvenlik ilkesinin ve aks Için Azure ilke eklentisinin her ikisi de etkinleştirilebilir. Daha fazla bilgi için bkz. aks Pod güvenlik sınırlaması.
  • Ad alanları, değerlendirme için Azure Ilke eklentisi tarafından otomatik olarak dışlanır: KUVE sistem, Gatekeeper-System ve aks-Periscope.

Öneriler

Aşağıda, Azure Ilke eklentisinin kullanılmasına yönelik genel öneriler verilmiştir:

  • Azure Ilke eklentisinin çalışması için üç Gatekeeper bileşeni gerekir: bir denetim Pod ve iki Web kancası Pod çoğaltması. Bu bileşenler, küme içinde denetim ve zorlama işlemleri gerektiren Kubernetes kaynakları ve ilke atamalarının sayısı arttıkça daha fazla kaynak kullanır.

    • En fazla 20 kısıtlama içeren tek bir kümede 500 ' den az pod için: bileşen başına iki vCPU ve 350 MB bellek.
    • En fazla 40 kısıtlama içeren tek bir kümede 500 ' den fazla dizin için: bileşen başına üç vCPU ve 600 MB bellek.
  • Windows pod güvenlik bağlamlarını desteklemez. bu nedenle, kök ayrıcalıklarına izin verme gibi Azure ilke tanımlarının bazıları Windows pod 'de ilerletilemiyor ve yalnızca Linux pod 'ye uygulanabilir.

Aşağıdaki öneri yalnızca AKS ve Azure Ilkesi eklentisi için geçerlidir:

  • CriticalAddonsOnlyGatekeeper pods 'yi zamanlamak için Taint ile sistem düğüm havuzunu kullanın. Daha fazla bilgi için bkz. sistem düğüm havuzlarını kullanma.
  • AKS kümelerinizdeki giden trafiği güvenli hale getirin. Daha fazla bilgi için bkz. küme düğümleri Için denetim çıkış trafiği.
  • Küme aad-pod-identity etkinleştirilmişse, düğüm tarafından yönetilen kimlik (NMI) Pod, Azure örnek meta veri uç noktasına yapılan çağrıları ele almak için düğümlerin Iptables 'larını değiştirir. Bu yapılandırma, Pod kullanılmasa bile meta veri uç noktasına yapılan her türlü isteğin NMI tarafından yakalanmasıdır aad-pod-identity . AzurePodIdentityException CRD, aad-pod-identity CRD 'de tanımlanan etiketlerle eşleşen bir pod 'dan kaynaklanan meta veri uç noktasına yapılan tüm isteklerin NMI içinde herhangi bir işlem yapılmadan proxy olması gerektiğini bildirmek üzere yapılandırılabilir. kubernetes.azure.com/managedby: aks Kuto-System ad alanındaki etiketli sistem KÖKLERI aad-pod-identity , AzurePodIdentityException CRD 'yi yapılandırarak içinde dışlanmalıdır. Daha fazla bilgi için bkz. belirli bir pod veya uygulama için AAD-Pod kimliğini devre dışı bırakma. Bir özel durum yapılandırmak için, MIC özel durum YAML'yi yükler.

AKS için Azure Ilke eklentisini yükler

Azure Ilke eklentisini yüklemeden veya hizmet özelliklerinden herhangi birini etkinleştirmeden önce aboneliğinizin Microsoft. Poliınghts kaynak sağlayıcılarını etkinleştirmesi gerekir.

  1. Azure CLı sürüm 2.12.0 veya sonraki bir sürümün yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.

  2. Kaynak sağlayıcılarını ve Önizleme özelliklerini kaydedin.

    • Azure portal:

      Microsoft. Policınsıghts kaynak sağlayıcılarını kaydedin. Adımlar için bkz. kaynak sağlayıcıları ve türleri.

    • Azure CLı:

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace Microsoft.PolicyInsights
      
  3. Sınırlı Önizleme ilkesi tanımları yüklenmişse, ilkeler sayfasında, aks kümenizdeki devre dışı bırak düğmesini kullanarak eklentiyi kaldırın.

  4. AKS kümesi sürüm 1,14 veya üzeri olmalıdır. AKS küme sürümünüzü doğrulamak için aşağıdaki betiği kullanın:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  5. Azure CLı 'nin sürüm 2.12.0 veya üstünü yükler. Daha fazla bilgi için bkz. Azure CLI 'Yı yüklerken.

Yukarıdaki önkoşul adımları tamamlandıktan sonra, yönetmek istediğiniz AKS kümesine Azure Policy eklentisini yükleyebilirsiniz.

  • Azure portal

    1. Tüm hizmetler' i seçip Kubernetes Hizmetleri' nı arayıp seçerek aks hizmetini Azure Portal başlatın.

    2. AKS kümelerinizdeki birini seçin.

    3. Kubernetes hizmeti sayfasının sol tarafındaki ilkeler ' i seçin.

    4. Ana sayfada eklentiyi etkinleştir düğmesini seçin.

  • Azure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks enable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Eklenti yüklemesinin başarılı olduğunu ve Azure-Policy ve Gatekeeper 'lerin çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Son olarak, bu Azure CLı komutunu çalıştırarak, <rg> kaynak grubu adınızla ve <cluster-name> aks kümenizin adıyla değiştirerek en son eklentinin yüklendiğini doğrulayın: az aks show --query addonProfiles.azurePolicy -g <rg> -n <cluster-name> . Sonuç aşağıdaki çıktıya benzer görünmelidir:

{
        "config": null,
        "enabled": true,
        "identity": null
}

Azure Arc etkin Kubernetes için Azure Ilke uzantısı 'nı yükler (Önizleme)

Kubernetes Için Azure ilkesi , Kubernetes kümelerinizin uyumluluk durumunu tek bir yerden yönetmeyi ve rapor oluşturmanızı mümkün kılar.

Bu makalede, uzantı durumununnasıl oluşturulacağı, gösterileceği ve Kubernetes uzantısı için Azure ilkesinin nasıl silineceği açıklanır.

Uzantılar platformuna genel bakış için bkz. Azure yay kümesi uzantıları.

Önkoşullar

Note: doğrudan uzantıları olmayan helk kullanan bir Azure yay kümesinde Kubernetes için Azure Ilkesi dağıttıysanız, helk grafiğini silmekiçin listelenen yönergeleri izleyin. Silme işlemi tamamlandıktan sonra devam edebilirsiniz.

  1. Kubernetes kümenizin desteklenen bir dağıtım olduğundan emin olun.

    Note: Arc uzantısı için Azure Ilkesi , aşağıdaki Kubernetes dağıtımlarıyladesteklenir.

  2. Kümenizi Azure yaya bağlamadahil olmak üzere burada listelenen Kubernetes uzantılarına yönelik tüm ortak önkoşulları karşıladığınızı doğrulayın.

    Not: Azure İlkesi arc özellikli Kubernetes kümeleri için uzantı desteği sağlar.

  3. Uzantının bağlantı noktalarını Azure İlkesi açın. Bu Azure İlkesi, ilke tanımlarını ve atamalarını getirmek ve kümenin uyumluluğunu geri rapor etmek için bu etki alanlarını ve bağlantı noktalarını Azure İlkesi.

    Etki alanı Bağlantı noktası
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  4. Azure İlkesi yüklemeden veya hizmet özelliklerinden herhangi birini etkinleştirmeden önce aboneliğinizin Microsoft.PolicyInsights kaynak sağlayıcılarını etkinleştirmesi gerekir.

    Not: Kaynak sağlayıcısını etkinleştirmek için Kaynak sağlayıcıları ve türleri'nin adımlarını izleyin veya Azure CLI veya Azure PowerShell çalıştırın:

    • Azure CLI

      # Log in first with az login if you're not using Cloud Shell
      # Provider register: Register the Azure Policy provider
      az provider register --namespace 'Microsoft.PolicyInsights'
      
    • Azure PowerShell

      # Log in first with Connect-AzAccount if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
      

Uzantı Azure İlkesi oluşturma

Uzantı oluşturma işlemi Azure İlkesi dikkat:

  • Otomatik yükseltme varsayılan olarak etkindir ve herhangi bir Azure İlkesi dağıtılırsa uzantının ikincil sürümünü güncelleştirecek.
  • parametresi olarak geçirilen tüm ara sunucu değişkenleri, giden ara sunucu desteği Azure İlkesi connectedk8s uzantısına yayılır.

Arc özellikli kümeniz için bir uzantı örneği oluşturmak için değerlerinizin yerine aşağıdaki <> komutu çalıştırın:

az k8s-extension create --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --extension-type Microsoft.PolicyInsights --name <EXTENSION_INSTANCE_NAME>

Örnek:

az k8s-extension create --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --extension-type Microsoft.PolicyInsights --name azurepolicy

Örnek Çıkış:

{
  "aksAssignedIdentity": null,
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": {},
  "configurationSettings": {},
  "customLocationSettings": null,
  "errorInfo": null,
  "extensionType": "microsoft.policyinsights",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-test-rg/providers/Microsoft.Kubernetes/connectedClusters/my-test-cluster/providers/Microsoft.KubernetesConfiguration/extensions/azurepolicy",
 "identity": {
    "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tenantId": null,
    "type": "SystemAssigned"
  },
  "location": null,
  "name": "azurepolicy",
  "packageUri": null,
  "provisioningState": "Succeeded",
  "releaseTrain": "Stable",
  "resourceGroup": "my-test-rg",
  "scope": {
    "cluster": {
      "releaseNamespace": "kube-system"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": {
    "createdAt": "2021-10-27T01:20:06.834236+00:00",
    "createdBy": null,
    "createdByType": null,
    "lastModifiedAt": "2021-10-27T01:20:06.834236+00:00",
    "lastModifiedBy": null,
    "lastModifiedByType": null
  },
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "1.1.0"
}

Uzantıyı Azure İlkesi göster

Uzantı örneği oluşturmanın başarılı olup olduğunu kontrol etmek ve uzantı meta verilerini incelemek için değerlerinizin yerine aşağıdaki <> komutu çalıştırın:

az k8s-extension show --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Örnek:

az k8s-extension show --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --name azurepolicy

Uzantı yükleme işleminin başarılı olduğunu ve azure-policy ile gatekeeper pod'ların çalıştır olduğunu doğrulamak için aşağıdaki komutu çalıştırın:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Uzantıyı Azure İlkesi silme

Uzantı örneğini silmek için değerlerinize göre aşağıdaki <> komutu çalıştırın:

az k8s-extension delete --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Kubernetes Azure İlkesi Için Helm kullanarak Azure Arc Eklenti yükleme (önizleme)

Not

Azure İlkesi Helm modeli yakında kullanımdan çıkarılamayacak. Bunun yerine kubernetes Azure İlkesi için Azure Arc uzantısını kabul edin.

Azure İlkesi eklentisini yüklemeden veya hizmet özelliklerinden herhangi birini etkinleştirmeden önce aboneliğinizin Microsoft.PolicyInsights kaynak sağlayıcısını etkinleştirmesi ve küme hizmet sorumlusu için bir rol ataması oluşturması gerekir.

  1. Azure CLI 2.12.0 veya sonraki bir sürümün yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.

  2. Kaynak sağlayıcısını etkinleştirmek için Kaynak sağlayıcıları ve türleri'nin adımlarını izleyin veya Azure CLI veya Azure PowerShell çalıştırın:

    • Azure CLI

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace 'Microsoft.PolicyInsights'
      
    • Azure PowerShell

      # Log in first with Connect-AzAccount if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
      
  3. Kubernetes kümesi sürüm 1.14 veya daha yüksek olmalıdır.

  4. Helm 3'ü yükleyin.

  5. Kubernetes kümeniz, Azure Arc. Daha fazla bilgi için bkz. kubernetes kümesi ekleme Azure Arc.

  6. Azure Arc Kubernetes kümesi için tam Azure Kaynak Kimliğine sahip olun.

  7. Eklenti için bağlantı noktalarını açın. Bu Azure İlkesi, ilke tanımlarını ve atamalarını getirmek ve kümenin uyumluluğunu geri rapor etmek için bu etki alanlarını ve bağlantı noktalarını Azure İlkesi.

    Etki alanı Bağlantı noktası
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  8. 'İlke Analizler Veri Yazıcısı (Önizleme)' rol atamasını Azure Arc Kubernetes kümesine attayabilirsiniz. yerine <subscriptionId> abonelik kimliğinizi, Azure Arc Kubernetes kümesi kaynak grubunu, yerine de Azure Arc <rg> <clusterName> Kubernetes kümesi adını yazın. Yükleme adımları için appId, parola ve kiracı için döndürülen değerleri izleyin.

    • Azure CLI

      az ad sp create-for-rbac --role "Policy Insights Data Writer (Preview)" --scopes "/subscriptions/<subscriptionId>/resourceGroups/<rg>/providers/Microsoft.Kubernetes/connectedClusters/<clusterName>"
      
    • Azure PowerShell

      $sp = New-AzADServicePrincipal -Role "Policy Insights Data Writer (Preview)" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<rg>/providers/Microsoft.Kubernetes/connectedClusters/<clusterName>"
      
      @{ appId=$sp.ApplicationId;password=[System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sp.Secret));tenant=(Get-AzContext).Tenant.Id } | ConvertTo-Json
      

    Yukarıdaki komutların örnek çıktısı:

    {
        "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
        "password": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
        "tenant": "cccccccc-cccc-cccc-cccc-cccccccccccc"
    }
    

Yukarıdaki önkoşul adımları tamamlandıktan sonra, Azure İlkesi Kubernetes kümenize Azure Arc eklentiyi yükleyin:

  1. Yeni Azure İlkesi helm'e ekleyin:

    helm repo add azure-policy https://raw.githubusercontent.com/Azure/azure-policy/master/extensions/policy-addon-kubernetes/helm-charts
    
  2. Helm Chart Azure İlkesi Eklentiyi yükleyin:

    # In below command, replace the following values with those gathered above.
    #    <AzureArcClusterResourceId> with your Azure Arc enabled Kubernetes cluster resource Id. For example: /subscriptions/<subscriptionId>/resourceGroups/<rg>/providers/Microsoft.Kubernetes/connectedClusters/<clusterName>
    #    <ServicePrincipalAppId> with app Id of the service principal created during prerequisites.
    #    <ServicePrincipalPassword> with password of the service principal created during prerequisites.
    #    <ServicePrincipalTenantId> with tenant of the service principal created during prerequisites.
    helm install azure-policy-addon azure-policy/azure-policy-addon-arc-clusters \
        --set azurepolicy.env.resourceid=<AzureArcClusterResourceId> \
        --set azurepolicy.env.clientid=<ServicePrincipalAppId> \
        --set azurepolicy.env.clientsecret=<ServicePrincipalPassword> \
        --set azurepolicy.env.tenantid=<ServicePrincipalTenantId>
    

    Eklenti Helm Grafiği'nin ne yüklenci olduğu hakkında daha fazla bilgi için Azure İlkesi'da Eklenti Helm Grafiği tanımına GitHub.

Eklenti yüklemenin başarılı olduğunu ve azure-policy ile gatekeeper pod'ların çalıştır çalıştırılı olduğunu doğrulamak için aşağıdaki komutu çalıştırın:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

AKS altyapısı Azure İlkesi eklentisini yükleme (önizleme)

  1. Kubernetes kümenizin desteklenen bir dağıtım olduğundan emin olun.

Azure İlkesi eklentisini yüklemeden veya hizmet özelliklerinden herhangi birini etkinleştirmeden önce aboneliğinizin Microsoft.PolicyInsights kaynak sağlayıcısını etkinleştirmesi ve küme hizmet sorumlusu için bir rol ataması oluşturması gerekir.

  1. Azure CLI 2.0.62 veya sonraki bir sürümün yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.

  2. Kaynak sağlayıcısını etkinleştirmek için Kaynak sağlayıcıları ve türleri'nin adımlarını izleyin veya Azure CLI veya Azure PowerShell çalıştırın:

    • Azure CLI

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace 'Microsoft.PolicyInsights'
      
    • Azure PowerShell

      # Log in first with Connect-AzAccount if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
      
  3. Küme hizmet sorumlusu için bir rol ataması oluşturun.

    • Küme hizmet sorumlusu uygulama kimliğini bilmiyorsanız aşağıdaki komutla bu kimliği arayın.

      # Get the kube-apiserver pod name
      kubectl get pods -n kube-system
      
      # Find the aadClientID value
      kubectl exec <kube-apiserver pod name> -n kube-system cat /etc/kubernetes/azure.json
      
    • Azure CLI ile küme Analizler uygulama kimliğine (önceki adımdan aadClientID değeri) 'İlke Analizler Veri Yazıcı (Önizleme)' rol ataması attayın. yerine <subscriptionId> abonelik kimliğinizi, yerine de AKS Altyapısı tarafından yönetilen <aks engine cluster resource group> Kubernetes kümesinde yer alan kaynak grubunu girin.

      az role assignment create --assignee <cluster service principal app ID> --scope "/subscriptions/<subscriptionId>/resourceGroups/<aks engine cluster resource group>" --role "Policy Insights Data Writer (Preview)"
      

Yukarıdaki önkoşul adımları tamamlandıktan sonra Azure İlkesi yükleyin. Yükleme, AKS Altyapısı oluşturma veya güncelleştirme döngüsü sırasında veya var olan bir kümede bağımsız bir eylem olarak olabilir.

  • Oluşturma veya güncelleştirme döngüsü sırasında yükleme

    Yeni bir Azure İlkesi küme oluşturma sırasında veya var olan bir kümeye güncelleştirme olarak Eklenti Eklentisini etkinleştirmek için AKS Altyapısı için eklenti özellik kümesi tanımını ekleyin.

    "addons": [{
        "name": "azure-policy",
        "enabled": true
    }]
    

    hakkında daha fazla bilgi için bkz. DıŞ kılavuz AKS Altyapısı küme tanımı.

  • Helm Charts ile mevcut kümeye yükleme

    Kümeyi hazırlamak ve eklentiyi yüklemek için aşağıdaki adımları kullanın:

    1. Helm 3'ü yükleyin.

    2. Helm'e Azure İlkesi ekleyin.

      helm repo add azure-policy https://raw.githubusercontent.com/Azure/azure-policy/master/extensions/policy-addon-kubernetes/helm-charts
      

      Daha fazla bilgi için bkz. Helm Grafiği - Hızlı Başlangıç Kılavuzu.

    3. Eklentiyi helm grafiğiyle yükleyin. yerine <subscriptionId> abonelik kimliğinizi, yerine de AKS Altyapısı tarafından yönetilen <aks engine cluster resource group> Kubernetes kümesinde yer alan kaynak grubunu girin.

      helm install azure-policy-addon azure-policy/azure-policy-addon-aks-engine --set azurepolicy.env.resourceid="/subscriptions/<subscriptionId>/resourceGroups/<aks engine cluster resource group>"
      

      Eklenti Helm Grafiği'nin ne yüklenci olduğu hakkında daha fazla bilgi için Azure İlkesi'da Eklenti Helm Grafiği tanımına GitHub.

      Not

      Eklenti ve kaynak Azure İlkesi arasındaki ilişki nedeniyle, Azure İlkesi her kaynak grubu için yalnızca bir AKS Altyapısı kümesi destekler.

Eklenti yüklemenin başarılı olduğunu ve azure-policy ile gatekeeper pod'ların çalıştır çalıştırılı olduğunu doğrulamak için aşağıdaki komutu çalıştırın:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

İlke dili

Kubernetes Azure İlkesi nin yönetimi için en iyi dil yapısı, mevcut ilke tanımlarını izler. Kaynak Sağlayıcısı modu Microsoft.Kubernetes.Data ile, Kubernetes kümelerinizi yönetmek için etki denetimi ve reddetme kullanılır. Denetim ve reddet, OPA Constraint Framework ve Gatekeeper v3 ile çalışmaya özgü ayrıntılar özellikleri sağlayalı.

Azure İlkesi, ilke tanımında details.templateInfo, details.constraint veya details.constraintTemplate özelliklerinin bir parçası olarak, bu CustomResourceDefinitions'ın (CRD) URI veya Base64Encoded değerini eklentiye iletir. Rego, OPA ve Gatekeeper'ın Kubernetes kümesine bir isteği doğrulamak için destekleyeni dildir. Azure İlkesi, Kubernetes yönetimi için mevcut bir standardı desteklemektedir. Azure İlkesi, birleşik bir bulut uyumluluk raporlama deneyimi için mevcut kuralları yeniden Azure İlkesi bunları yeniden eşlemeyi mümkün hale getirmektedir. Daha fazla bilgi için bkz. Rego nedir?.

İlke tanımı atama

Kubernetes kümenize bir ilke tanımı atamak için size uygun Azure rol tabanlı erişim denetimi (Azure RBAC) ilke atama işlemleri atanmış olmalıdır. Kaynak İlkesi Katkıda Bulunanı ve Sahibi bu işlemlere sahip Azure yerleşik rolleridir. Daha fazla bilgi için bkz. Azure RBAC izinleri Azure İlkesi.

Not

Özel ilke tanımları bir genel önizleme özelliğidir.

Aşağıdaki adımları kullanarak kümenizi yönetmek için yerleşik ilke tanımlarını Azure portal adımları izleyin. Özel ilke tanımı kullanıyorsanız adlarına veya oluşturduğunuz kategoriye göre aramanızı sağlar.

  1. Azure İlkesi'da Azure portal. Sol bölmede Tüm hizmetler'i seçin ve ardından İlke'yi arayın ve seçin.

  2. Çalışma sayfası'nın sol Azure İlkesi Tanımlar'ı seçin.

  3. Kategori açılan listesi kutusundan Filtreyi temizlemek için Hepsini seç'i kullanın ve ardından Kubernetes'i seçin.

  4. İlke tanımını ve ardından Ata düğmesini seçin.

  5. Kapsam'ı ilke atamanın geçerli olduğu Kubernetes kümesi yönetim grubu, abonelik veya kaynak grubu olarak ayarlayın.

    Not

    Kubernetes Azure İlkesi ataması için kapsam küme kaynağını içermesi gerekir. AKS Altyapısı kümesi için Kapsam, kümenin kaynak grubu olmalıdır.

  6. İlke atamanıza, kolayca tanımlamak için kullanabileceğiniz bir Ad ve Açıklama girin.

  7. İlke zorlama'ya aşağıdaki değerlerden birini ayarlayın.

    • Etkin - İlkeyi kümede zorunlu kılın. İhlalleri olan Kubernetes erişim istekleri reddedilir.

    • Devre dışı - İlkeyi kümede zorlama. İhlallere sahip Kubernetes erişim istekleri reddedilir. Uyumluluk değerlendirmesi sonuçları hala kullanılabilir. Çalışan kümelere yeni ilke tanımları hazırlarken Devre Dışı seçeneği, ihlallere sahip erişim istekleri reddedilirken ilke tanımını test etmek için yararlıdır.

  8. İleri’yi seçin.

  9. Parametre değerlerini ayarlama

    • Kubernetes ad alanlarını ilke değerlendirmesinin dışında tutmak için Ad alanı dışlamaları parametresinde ad alanlarının listesini belirtin. Şunları dışlamanız önerilir: kube-system, gatekeeper-system ve azure-arc.
  10. Gözden geçir ve oluştur’u seçin.

Alternatif olarak, kubernetes ilkesi bulmak ve atamak için İlke atama - Portal hızlı başlangıçını kullanın. Örnek 'audit vms' yerine Kubernetes ilke tanımını ara.

Önemli

Kubernetes kategorisindeki Kubernetes kümeleri için yerleşik ilke tanımları kullanılabilir. Yerleşik ilke tanımlarının listesi için bkz. Kubernetes örnekleri.

İlke değerlendirmesi

Eklenti, ilke atamalarında her Azure İlkesi 15 dakikada bir hizmetle iletişime geçmektedir. Bu yenileme döngüsü sırasında eklenti değişiklikleri denetler. Bu değişiklikler kısıtlama şablonlarını ve kısıtlamalarını oluşturur, günceller veya siler.

Kubernetes kümesinde ad alanı kümeye uygun etikete sahipse ihlallere sahip erişim istekleri reddedilir. Uyumluluk değerlendirmesi sonuçları hala kullanılabilir.

  • Azure Arc Kubernetes kümesi: admission.policy.azure.com/ignore
  • Azure Kubernetes Service kümesi: control-plane

Not

Bir küme yöneticisinin, Azure İlkesi Eklenti tarafından yükleme kısıtlama şablonları ve kısıtlama kaynakları oluşturma ve güncelleştirme izni olabilir, ancak el ile güncelleştirmelerin üzerine yazıldığından bu senaryolar desteklenmemektedir. Gatekeeper, eklentiyi yüklemeden ve ilke tanımlarını atamadan önce var olan Azure İlkesi devam eder.

Eklenti her 15 dakikada bir kümenin tam taramasını arar. Tam taramanın ayrıntılarını ve kümede değişiklik girişiminde bulunarak Gatekeeper tarafından yapılan gerçek zamanlı değerlendirmelerin ayrıntılarını topdikten sonra, eklenti, herhangi bir atama ataması gibi uyumluluk ayrıntılarına eklenmek için sonuçları Azure İlkesi geri Azure İlkesi raporlar. Yalnızca etkin ilke atamaları için sonuçlar denetim döngüsü sırasında döndürülür. Denetim sonuçları, başarısız kısıtlamanın durum alanında listelenen ihlaller olarak da görülebilir. Uyumlu olmayan kaynaklar hakkında ayrıntılı bilgi için bkz. Kaynak Sağlayıcısı modları için bileşen ayrıntıları.

Not

Kubernetes kümeleriniz Azure İlkesi her uyumluluk raporu, son 45 dakika içindeki tüm ihlalleri içerir. Zaman damgası, bir ihlalin ne zaman olduğunu gösterir.

Dikkat edilmesi gereken diğer bazı noktalar:

  • Küme aboneliği Azure Güvenlik Merkezi, Azure Güvenlik Merkezi Kubernetes ilkeleri kümeye otomatik olarak uygulanır.

  • Mevcut Kubernetes kaynaklarına sahip kümeye reddetme ilkesi uygulandığında, yeni ilkeyle uyumlu olmayan önceden var olan tüm kaynaklar çalıştırmaya devam eder. Uyumlu olmayan kaynak farklı bir düğümde yeniden zamanlandıysa Ağ Geçidi Yöneticisi kaynak oluşturulmasını engeller.

  • Bir kümede kaynakları doğrulayan bir reddetme ilkesi olduğunda, kullanıcı dağıtım oluştururken reddetme iletisi görmez. Örneğin, çoğaltma kümeleri ve podlar içeren bir Kubernetes dağıtımı düşünün. Bir kullanıcı kubectl describe deployment $MY_DEPLOYMENT yürütülürken, olayların bir parçası olarak bir reddetme iletisi dönmez. Ancak, kubectl describe replicasets.apps $MY_DEPLOYMENT reddetmeyle ilişkili olayları döndürür.

Not

İlke değerlendirmesi sırasında Init kapsayıcıları dahil olabilir. Init kapsayıcıları ekli olup değildir, aşağıdaki veya benzer bir bildirimin CRD'sini gözden geçirin:

input_containers[c] { 
   c := input.review.object.spec.initContainers[_] 
}

Kısıtlama şablonu çakışmaları

Kısıtlama şablonları aynı kaynak meta veri adına sahipse ancak ilke tanımı kaynağa farklı konumlarda başvurursa, ilke tanımları çakışmada olarak kabul edilir. Örnek: İki ilke tanımı, Azure İlkesi şablon deposu ( ) ve template.yaml store.policy.core.windows.net GitHub.

İlke tanımları ve kısıtlama şablonları atandığı ancak kümede zaten yüklü olmayan ve çakışmaya neden olan ilke tanımları çakışma olarak raporlandığı zaman, çakışma çözülene kadar kümeye yüklenmezler. Benzer şekilde, yeni atanan ilke tanımlarıyla çakışan kümede yer alan tüm mevcut ilke tanımları ve kısıtlama şablonları normal şekilde çalışmaya devam eder. Mevcut bir atama güncelleştirilirse ve kısıtlama şablonunu eşitleme hatası olursa, küme de çakışma olarak işaretlenir. Tüm çakışma iletileri için bkz. AKS Kaynak Sağlayıcısı modu uyumluluk nedenleri

Günlüğe Kaydetme

Kubernetes denetleyicisi/kapsayıcısı olarak hem azure-policy hem de gatekeeper pod'ları günlükleri Kubernetes kümesinde tut. Günlükler Kubernetes kümesi Analizler sayfasında kullanılabilir. Daha fazla bilgi için bkz. Kapsayıcılar için kapsayıcılarla Kubernetes Azure İzleyici performansını izleme.

Eklenti günlüklerini görüntülemek için kubectl kullanın:

# Get the azure-policy pod name installed in kube-system namespace
kubectl logs <azure-policy pod name> -n kube-system

# Get the gatekeeper pod name installed in gatekeeper-system namespace
kubectl logs <gatekeeper pod name> -n gatekeeper-system

Daha fazla bilgi için, Gatekeeper belgelerinde Gatekeeper'da Hata Ayıklamaya Bakın.

Gatekeeper yapıtlarını görüntüleme

Eklenti ilke atamalarını indirdikten ve kısıtlama şablonlarını ve kısıtlamalarını kümeye yükledikten sonra, hem ilke atama kimliği hem de ilke tanımı kimliği gibi Azure İlkesi bilgileriyle açıklama ekler. İstemcinizi eklentiyle ilgili yapıtları görüntülemek üzere yapılandırmak için aşağıdaki adımları kullanın:

  1. Küme kubeconfig için kurulum.

    Bir Azure Kubernetes Service için aşağıdaki Azure CLI'sini kullanın:

    # Set context to the subscription
    az account set --subscription <YOUR-SUBSCRIPTION>
    
    # Save credentials for kubeconfig into .kube in your home folder
    az aks get-credentials --resource-group <RESOURCE-GROUP> --name <CLUSTER-NAME>
    
  2. Küme bağlantısını test edin.

    kubectl cluster-info komutunu çalıştırın. Başarılı bir çalıştırma, her hizmetin çalıştırılacak yer URL'si ile yanıt vermesini sağlar.

Eklenti kısıtlama şablonlarını görüntüleme

Eklenti tarafından indirilen kısıtlama şablonlarını görüntülemek için kubectl get constrainttemplates çalıştırın. Ile başlandı kısıtlama k8sazure şablonları, eklenti tarafından yüklenmiş olanlardır.

Veri Azure İlkesi oluşturma

Kümeye indirilen bir kısıtlama şablonu ile ilke tanımı arasındaki eşlemeyi tanımlamak için kubectl get constrainttemplates <TEMPLATE> -o yaml kullanın. Sonuçlar aşağıdaki çıkışa benzer:

apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
    annotations:
    azure-policy-definition-id: /subscriptions/<SUBID>/providers/Microsoft.Authorization/policyDefinitions/<GUID>
    constraint-template-installed-by: azure-policy-addon
    constraint-template: <URL-OF-YAML>
    creationTimestamp: "2021-09-01T13:20:55Z"
    generation: 1
    managedFields:
    - apiVersion: templates.gatekeeper.sh/v1beta1
    fieldsType: FieldsV1
...

<SUBID> abonelik kimliğidir <GUID> ve eşlenen ilke tanımının kimliğidir. <URL-OF-YAML> , eklentinin kümeye yüklemek için indirmiş olduğu kısıtlama şablonunun kaynak konumudur.

Add-on indirilen kısıtlama şablonlarının adlarını olduktansonra ilgili kısıtlamaları görmek için bu adı kullanabilirsiniz. Listeyi kubectl get <constraintTemplateName> almak için kullanın. Eklenti tarafından yüklenmiş olan kısıtlamalar ile azurepolicy- başlar.

Kısıtlama ayrıntılarını görüntüleme

Kısıtlama, ihlaller ve ilke tanımı ve atama eşlemeleri hakkında ayrıntılar içerir. Ayrıntıları görmek için kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml kullanın. Sonuçlar aşağıdaki çıkışa benzer:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAzureContainerAllowedImages
metadata:
  annotations:
    azure-policy-assignment-id: /subscriptions/<SUB-ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Authorization/policyAssignments/<ASSIGNMENT-GUID>
    azure-policy-definition-id: /providers/Microsoft.Authorization/policyDefinitions/<DEFINITION-GUID>
    azure-policy-definition-reference-id: ""
    azure-policy-setdefinition-id: ""
    constraint-installed-by: azure-policy-addon
    constraint-url: <URL-OF-YAML>
  creationTimestamp: "2021-09-01T13:20:55Z"
spec:
  enforcementAction: deny
  match:
    excludedNamespaces:
    - kube-system
    - gatekeeper-system
    - azure-arc
  parameters:
    imageRegex: ^.+azurecr.io/.+$
status:
  auditTimestamp: "2021-09-01T13:48:16Z"
  totalViolations: 32
  violations:
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hello-world-78f7bfd5b8-lmc5b
    namespace: default
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hellow-world-89f8bfd6b9-zkggg

Eklenti sorunlarını giderme

Kubernetes için Eklenti sorunlarını giderme hakkında daha fazla bilgi için sorun giderme makalesinde yer alan Kubernetes Azure İlkesi bakın.

Arc Azure İlkesi ilgili sorunlar için lütfen aşağıdakilere bakın:

İlgili Azure İlkesi için lütfen bkz:

Eklentiyi kaldırma

AKS'den eklentiyi kaldırma

Aks kümenize Azure İlkesi eklentisini kaldırmak için Azure portal veya Azure CLI kullanın:

  • Azure portal

    1. Tüm hizmetler'i Azure portal kubernetes hizmetlerini arayarak ve seçerek aks hizmetini başlatabilirsiniz.

    2. Eklentiyi devre dışı bırakmak istediğiniz AKS Azure İlkesi seçin.

    3. Kubernetes hizmet sayfasının sol tarafındaki İlkeler'i seçin.

    4. Ana sayfada Eklentiyi devre dışı bırak düğmesini seçin.

  • Azure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks disable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Eklentiyi etkin Kubernetes'Azure Arc kaldırma

Azure İlkesi ve Gatekeeper'ı Azure Arc Kubernetes kümenize kaldırmak için aşağıdaki Helm komutunu çalıştırın:

helm uninstall azure-policy-addon

AKS Altyapısından eklentiyi kaldırma

Eklenti ve Azure İlkesi'yi AKS Altyapısı kümenize kaldırmak için eklentinin nasıl yüklenmiş olduğuyla uyumlu olan yöntemini kullanın:

  • AKS Altyapısı için küme tanımında addons özelliğini ayarerek yüklendiyse:

    azure-policy için addons özelliğini false olarak değiştirdikten sonra küme tanımını AKS Altyapısı'nda yeniden kullanın:

    "addons": [{
        "name": "azure-policy",
        "enabled": false
    }]
    

    Daha fazla bilgi için bkz. AKS Altyapısı - Azure İlkesi Devre Dışı Bırakma.

  • Helm Charts ile yüklendiyse aşağıdaki Helm komutunu çalıştırın:

    helm uninstall azure-policy-addon
    

Azure İlkesi Eklenti tarafından toplanan tanılama verileri

Kubernetes Azure İlkesi eklenti, sınırlı küme tanılama verilerini toplar. Bu tanılama verileri, yazılım ve performansla ilgili önemli teknik verilerdir. Aşağıdaki yollarla kullanılır:

  • Yeni Azure İlkesi güncel tutma
  • Eklenti Azure İlkesi, güvenilir ve yüksek performansa sahip olun
  • Eklentinin Azure İlkesi analiziyle eklentiyi geliştirin

Eklenti tarafından toplanan bilgiler kişisel veriler değildir. Şu anda aşağıdaki ayrıntılar toplanıyor:

  • Azure İlkesi aracı sürümünü ekleme
  • Küme türü
  • Küme bölgesi
  • Küme kaynak grubu
  • Küme kaynak kimliği
  • Küme aboneliği kimliği
  • Küme işletim sistemi (Örnek: Linux)
  • Küme şehri (Örnek: Seattle)
  • Küme durumu veya bölgesi (Örnek: Washington)
  • Küme ülkesi veya bölgesi (Örnek: Birleşik Devletler)
  • İlke değerlendirmesinde aracı yüklemesi Azure İlkesi Eklenti tarafından karşılaşılan özel durumlar/hatalar
  • Azure İlkesi Eklenti tarafından yüklenmemiş Gatekeeper ilke tanımlarının sayısı

Sonraki adımlar