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

Azure İlkesi genişletir Açık İlke Aracısı (OPA) için bir erişim denetleyicisi web kancası olan Ağ Geçidi Denetleyicisi v3, küme bileşenlerinize merkezi ve tutarlı bir şekilde büyük ölçekte zorlamalar ve korumalar uygular. Küme bileşenleri podları, kapsayıcıları ve ad alanlarını içerir.

Azure İlkesi, Kubernetes küme bileşenlerinizin uyumluluk durumunu tek bir yerden yönetmeyi ve raporlamayı mümkün kılar. Azure İlkesi Eklentisi veya Uzantısı kullanılarak, küme bileşenlerinizi idare etmek, güvenli ilke dağıtımı ve geri alma için seçicileri ve geçersiz kılmaları kullanma gibi Azure İlkesi özelliklerle geliştirilmiştir.

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

Önemli

Azure İlkesi Eklentisi Helm modeli ve AKS Altyapısı eklentisi kullanım dışı bırakıldı. Eklentileri kaldırmak için yönergeleri izleyin.

Genel bakış

Azure İlkesi'nin eklentisini veya uzantısını Kubernetes kümelerinize yüklediğinizde Azure İlkesi aşağıdaki işlevleri yerine getirir:

  • Kümeye ilke atamaları için Azure İlkesi hizmeti ile denetler.
  • İlke tanımlarını kümeye kısıtlama şablonu ve kısıtlama özel kaynakları olarak veya bir mutasyon şablonu kaynağı olarak dağıtır (ilke tanımı içeriğine bağlı olarak).
  • Denetim ve uyumluluk ayrıntılarını Azure İlkesi hizmetine geri bildirir.

Kubernetes kümenizle Azure İlkesi'ni etkinleştirmek ve kullanmak için aşağıdaki eylemleri gerçekleştirin:

  1. Kubernetes kümenizi yapılandırın ve Azure Kubernetes Service (AKS) eklentisini veya Arc özellikli Kubernetes kümeleri için Azure İlkesi Uzantısı'nı yükleyin (küme türünüze bağlı olarak).

    Not

    Yüklemeyle ilgili yaygın sorunlar için bkz. Sorun giderme - eklenti Azure İlkesi.

  2. Kubernetes için örnek Azure İlkesi tanımı oluşturma veya kullanma

  3. Kubernetes kümenize tanım atama

  4. Doğrulamayı bekleme

  5. Günlüğe kaydetme ve sorun giderme

  6. SSS bölümümüzdeki sınırlamaları ve önerileri gözden geçirin

AKS için Azure İlkesi Eklentisini yükleme

AKS için Azure İlkesi Eklentisi, uzun vadeli destek (LTS) ile Kubernetes sürüm 1.27'nin bir parçasıdır.

Önkoşullar

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

    • Azure portalı:

      Kaynak sağlayıcılarını Microsoft.PolicyInsights kaydedin. Adımlar için bkz . Kaynak sağlayıcıları ve türleri.

    • 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
      
  2. Azure CLI sürüm 2.12.0 veya üzerinin yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için komutunu çalıştırın az --version . Yüklemeniz veya yükseltmeniz gerekiyorsa bkz . Azure CLI'yi yükleme.

  3. AKS kümesi, Azure Kubernetes Service'te (AKS) desteklenen bir Kubernetes sürümü olmalıdır. AKS kümenizin sürümünü 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
    
  4. Azure İlkesi uzantısı için bağlantı noktalarını açın. Azure İlkesi uzantısı, ilke tanımlarını ve atamalarını getirmek ve kümenin uyumluluğunu Azure İlkesi geri bildirmek için bu etki alanlarını ve bağlantı noktalarını kullanır.

    Domain Bağlantı noktası
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443

Önkoşullar tamamlandıktan sonra, yönetmek istediğiniz AKS kümesine Azure İlkesi Eklentisini yükleyin.

  • Azure portal

    1. Azure portalında Tüm hizmetler'i seçip Kubernetes hizmetlerini arayarak ve seçerek AKS hizmetini başlatın.

    2. AKS kümelerinden birini seçin.

    3. Kubernetes hizmet sayfasının sol tarafında İlkeler'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 ağ geçidi denetleyicisi podlarının ç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 CLI komutunu <rg> çalıştırıp yerine kaynak grubu adınızı ve <cluster-name> AKS kümenizin adını yazarak en son eklentinin yüklendiğini doğrulayın: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>. Sonuç, hizmet sorumlularını kullanan kümeler için aşağıdaki çıkışa benzer görünmelidir:

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

Yönetilen kimlik kullanan kümeler için aşağıdaki çıkış:

 {
   "config": null,
   "enabled": true,
   "identity": {
     "clientId": "########-####-####-####-############",
     "objectId": "########-####-####-####-############",
     "resourceId": "<resource-id>"
   }
 }

Azure Arc özellikli Kubernetes için Azure İlkesi Uzantısı'nı yükleme

Kubernetes için Azure İlkesi, Kubernetes kümelerinizin uyumluluk durumunu tek bir yerden yönetmenizi ve raporlamanızı mümkün kılar. Azure İlkesi'ın Arc özellikli Kubernetes kümeleri için Uzantısı ile podlar ve kapsayıcılar gibi Arc özellikli Kubernetes küme bileşenlerinizi yönetebilirsiniz.

Bu makalede, Kubernetes uzantısı için Azure İlkesi oluşturma, gösterme ve silme işlemleri açıklanır.

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

Önkoşullar

Azure Arc kümesinde Kubernetes için Azure İlkesi doğrudan uzantıları olmadan Helm kullanarak dağıttıysanız Helm grafiğini silmek için yönergeleri izleyin. Silme işlemi tamamlandıktan sonra devam edebilirsiniz.

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

    Not

    Arc uzantısı için Azure İlkesi aşağıdaki Kubernetes dağıtımlarında desteklenir.

  2. Kümenizi Azure Arc'a bağlama da dahil olmak üzere burada listelenen Kubernetes uzantıları için tüm yaygın önkoşulları karşıladığınızdan emin olun.

    Not

    Azure İlkesi uzantısı, bu bölgelerdeki Arc özellikli Kubernetes kümeleri için desteklenir.

  3. Azure İlkesi uzantısı için bağlantı noktalarını açın. Azure İlkesi uzantısı, ilke tanımlarını ve atamalarını getirmek ve kümenin uyumluluğunu Azure İlkesi geri bildirmek için bu etki alanlarını ve bağlantı noktalarını kullanır.

    Domain 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 uzantısını yüklemeden veya hizmet özelliklerinden herhangi birini etkinleştirmeden önce aboneliğinizin kaynak sağlayıcılarını etkinleştirmesi Microsoft.PolicyInsights gerekir.

    Not

    Kaynak sağlayıcısını etkinleştirmek için Kaynak sağlayıcıları ve türleri'ndeki adımları izleyin veya Azure CLI veya Azure PowerShell komutunu ç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'
      

Azure İlkesi uzantısı oluşturma

Not

Azure İlkesi uzantısı oluşturma işlemi için aşağıdakilere dikkat edin:

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

Arc özellikli kümeniz için bir uzantı örneği oluşturmak için değerlerinizle 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"
}

Azure İlkesi uzantısını göster

Uzantı örneği oluşturma işleminin başarılı olup olmadığını denetlemek ve uzantı meta verilerini incelemek için değerlerinizle 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üklemesinin başarılı olduğunu ve azure-policy ve ağ geçidi denetleyicisi podlarının ç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

Azure İlkesi uzantısını silme

Uzantı örneğini silmek için değerlerinizle birlikte 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>

İlke tanımı oluşturma

Kubernetes'i yönetmek için Azure İlkesi dil yapısı, mevcut ilke tanımlarının yapısını izler. Azure İlkesi'nin yerleşik ilke kitaplığında küme bileşenlerinizi yönetmek için kullanılabilecek atanabilecek örnek tanım dosyaları vardır.

Kubernetes için Azure İlkesi, hem Azure Kubernetes Service kümeleri hem de Azure Arc özellikli Kubernetes kümeleri için bileşen düzeyinde özel tanım oluşturmayı da destekler. Kısıtlama şablonu ve mutasyon şablonu örnekleri Gatekeeper topluluk kitaplığında mevcuttur. Azure İlkesi Visual Studio Code Uzantısı, mevcut bir kısıtlama şablonunu veya mutasyon şablonunu özel bir Azure İlkesi ilke tanımına çevirmeye yardımcı olmak için kullanılabilir.

bir Kaynak Sağlayıcısı moduylaMicrosoft.Kubernetes.Data, Kubernetes kümelerinizi yönetmek için denetim, reddetme, devre dışı ve mutate efektleri kullanılır.

Denetim ve reddetme, OPA Kısıtlama Çerçevesi ve Ağ Geçidi Denetleyicisi v3 ile çalışmaya özgü özellikler sağlamalıdırdetails.

İlke tanımındaki details.templateInfo veya details.constraintInfo özelliklerinin bir parçası olarak, Azure İlkesi bu CustomResourceDefinitions(CRD) URI'sini veya Base64Encoded değerini eklentiye geçirir. Rego, OPA ve Gatekeeper'ın Kubernetes kümesine yönelik bir isteği doğrulamak için desteklediği dildir. Kubernetes yönetimi için mevcut bir standardı destekleyerek Azure İlkesi, birleştirilmiş bulut uyumluluğu raporlama deneyimi için mevcut kuralları yeniden kullanma ve bunları Azure İlkesi ile eşleştirmeyi mümkün kılar. 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 atanmalıdır. Azure yerleşik rolleri Kaynak İlkesi Katkıda Bulunanı ve Sahibi bu işlemlere sahiptir. Daha fazla bilgi edinmek için bkz. Azure İlkesi'de Azure RBAC izinleri.

Aşağıdaki adımları izleyerek Azure portalını kullanarak kümenizi yönetmeye yönelik yerleşik ilke tanımlarını bulun. Özel bir ilke tanımı kullanıyorsanız, ada veya oluşturduğunuz kategoriye göre arayın.

  1. Azure portalında Azure İlkesi hizmetini başlatın. Sol bölmede Tüm hizmetler'i seçin ve ardından İlke'yi arayıp seçin.

  2. Azure İlkesi sayfasının sol bölmesinde Tanımlar'ı seçin.

  3. Kategori açılan liste kutusunda Tümünü seç'i kullanarak filtreyi temizleyin ve ardından Kubernetes'i seçin.

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

  5. Kapsam'ı, ilke atamasının uygulandığı Kubernetes kümesinin yönetim grubu, abonelik veya kaynak grubu olarak ayarlayın.

    Not

    Kubernetes için Azure İlkesi tanımı atanırken Kapsam küme kaynağını içermelidir.

  6. İlke atamasına kolayca tanımlamak için kullanabileceğiniz bir Ad ve Açıklama verin.

  7. İlke zorlamasını aşağıdaki değerlerden birine ayarlayın:

    • Etkin - kümede ilkeyi zorunlu kılma. İhlal içeren Kubernetes erişim istekleri reddedilir.

    • Devre dışı - kümede ilkeyi zorunlu kılma. İhlal içeren Kubernetes erişim istekleri reddedilir. Uyumluluk değerlendirmesi sonuçları hala kullanılabilir. Yeni ilke tanımlarını çalışan kümelere dağıttığınızda, ihlal içeren erişim istekleri reddedildiğinden Devre Dışı seçeneği 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. Öneri şu şekilde dışlamaktır: kube-system, gatekeeper-system ve azure-arc.
  10. Gözden geçir ve oluştur’u seçin.

Alternatif olarak, Kubernetes ilkesini bulmak ve atamak için İlke atama - Portal hızlı başlangıcını kullanın. Örnek denetim vm'leri yerine bir Kubernetes ilke tanımı arayın.

Önemli

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

İlke değerlendirmesi

Eklenti her 15 dakikada bir ilke atamalarındaki değişiklikler için Azure İlkesi hizmetini denetler. 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ı oluşturma, güncelleştirme veya silme işlemlerini tetikler.

Kubernetes kümesinde, bir ad alanı kümeye uygun etikete sahipse, ihlal içeren erişim istekleri reddedilir. Uyumluluk değerlendirmesi sonuçları hala kullanılabilir.

  • Azure Arc özellikli Kubernetes kümesi: admission.policy.azure.com/ignore

Not

Bir küme yöneticisi, Azure İlkesi Eklentisi tarafından yüklenen kısıtlama şablonları ve kısıtlama kaynaklarını oluşturma ve güncelleştirme iznine sahip olsa da, el ile yapılan güncelleştirmelerin üzerine yazıldığından bunlar desteklenmez. Ağ geçidi denetleyicisi, eklentiyi yüklemeden ve Azure İlkesi ilke tanımlarını atamadan önce var olan ilkeleri değerlendirmeye devam eder.

Her 15 dakikada bir eklenti kümenin tam taramasını ister. Tam taramanın ayrıntılarını ve Gatekeeper tarafından kümedeki değişiklik girişimlerinin gerçek zamanlı değerlendirmelerini topladıktan sonra, eklenti herhangi bir Azure İlkesi ataması gibi uyumluluk ayrıntılarına eklenmesi için sonuçları Azure İlkesi'ne geri bildirir. Denetim döngüsü sırasında yalnızca etkin ilke atamalarının sonuçları 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ümelerinizin Azure İlkesi her uyumluluk raporu, son 45 dakika içindeki tüm ihlalleri içerir. Zaman damgası, bir ihlalin ne zaman oluştuğuna işaret eder.

Dikkat edilmesi gereken diğer bazı noktalar:

  • Küme aboneliği Bulut için Microsoft Defender ile kaydedildiyse, Bulut için Microsoft Defender Kubernetes ilkeleri kümeye otomatik olarak uygulanır.

  • Mevcut Kubernetes kaynaklarıyla kümeye reddetme ilkesi uygulandığında, yeni ilkeyle uyumlu olmayan önceden var olan tüm kaynaklar çalışmaya devam eder. Uyumlu olmayan kaynak farklı bir düğümde yeniden zamanlandığında Ağ Geçidi Denetleyicisi kaynak oluşturmayı engeller.

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

Not

İlke değerlendirmesi sırasında Init kapsayıcıları dahil edilebilir. Init kapsayıcılarının dahil olup olmadığını görmek için aşağıdaki veya benzer bir bildirim için CRD'yi 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ı farklı konumlardaki kaynağa başvuruda bulunursa, ilke tanımlarının çakışma olduğu kabul edilir. Örnek: İki ilke tanımı, Azure İlkesi şablon deposu (store.policy.core.windows.net) ve GitHub gibi farklı kaynak konumlarda depolanan aynı template.yaml dosyaya başvurur.

İlke tanımları ve kısıtlama şablonları atandığında ancak kümeye henüz yüklenmediğinde ve çakıştığında, çakışma olarak bildirilir ve çakışma çözülene kadar kümeye yüklenmez. Benzer şekilde, zaten kümede olan ve yeni atanan ilke tanımlarıyla çakan tüm mevcut ilke tanımları ve bunların kısıtlama şablonları normal çalışmaya devam eder. Mevcut bir atama güncelleştirildiyse ve kısıtlama şablonunu eşitleme hatası varsa, 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ük Kaydı

Kubernetes denetleyicisi/kapsayıcısı olarak hem azure-policy hem de ağ geçidi denetleyicisi podları günlükleri Kubernetes kümesinde tutar. Genel olarak azure-policy günlükleri, kümeye ilke alımı ve uyumluluk raporlaması ile ilgili sorunları gidermek için kullanılabilir. Gatekeeper-controller-manager pod günlükleri, çalışma zamanı reddedilme sorunlarını gidermek için kullanılabilir. Ağ geçidi denetleyicisi-denetim pod günlükleri, mevcut kaynakların denetim sorunlarını gidermek için kullanılabilir. Günlükler Kubernetes kümesinin İçgörüler sayfasında kullanıma sunulabilir. Daha fazla bilgi için bkz. Kapsayıcılar için Azure İzleyici ile Kubernetes kümenizin performansını izleme.

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

# 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

Uyumluluk sonuçlarınızda görünen belirli bir ComplianceReasonCode sorunlarını gidermeye çalışırsanız, tam eşlik eden hatayı görmek için azure ilkesi pod günlüklerinde bu kodu arayabilirsiniz.

Daha fazla bilgi için Gatekeeper belgelerinde Gatekeeper Hatalarını Ayıklama konusuna bakın.

Ağ Geçidi Denetleyicisi yapıtlarını görüntüleme

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

  1. Küme için ayarlayın kubeconfig .

    Azure Kubernetes Service kümesi için aşağıdaki Azure CLI'yi 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ığı yerin 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 komutunu çalıştırın kubectl get constrainttemplates. ile k8sazure başlayan kısıtlama şablonları, eklenti tarafından yüklenen şablonlardır.

Eklenti mutasyon şablonlarını görüntüleme

Eklenti tarafından indirilen mutasyon şablonlarını görüntülemek için , ve kubectl get assignmetadatakubectl get modifysetçalıştırınkubectl get assign.

Azure İlkesi eşlemelerini alma

Kümeye indirilen bir kısıtlama şablonu ile ilke tanımı arasındaki eşlemeyi tanımlamak için kullanın kubectl get constrainttemplates <TEMPLATE> -o yaml. 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 ve <GUID> eşlenen ilke tanımının kimliğidir. <URL-OF-YAML> , eklentinin kümeye yüklemek üzere indirmiş olduğu kısıtlama şablonunun kaynak konumudur.

Eklentinin indirilen kısıtlama şablonlarının adlarını aldıktan sonra, ilgili kısıtlamaları görmek için bu adı kullanabilirsiniz. Listeyi almak için kullanın kubectl get <constraintTemplateName> . Eklenti tarafından yüklenen kısıtlamalar ile azurepolicy-başlar.

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

Kısıtlama, ilke tanımı ve atamasına yönelik ihlaller ve eşlemeler hakkında ayrıntılar içerir. Ayrıntıları görmek için kullanın kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml. 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 eklentisinin sorunlarını giderme hakkında daha fazla bilgi için Azure İlkesi sorun giderme makalesinin Kubernetes bölümüne bakın.

Arc uzantısıyla ilgili sorunlar için Azure İlkesi uzantısı için şuraya gidin:

Azure İlkesi ilgili sorunlar için şuraya gidin:

AKS Değişiklik Günlüğü için Azure İlkesi Eklentisi

Azure İlkesi'nin AKS eklentisinin, eklentinin görüntü sürümünü gösteren bir sürüm numarası vardır. Eklentide özellik desteği yeni sunulduğundan sürüm numarası artırılır.

Bu bölüm, kümenizde hangi Eklenti sürümünün yüklü olduğunu belirlemenize ve ayrıca AKS kümesi başına yüklenen Azure İlkesi Eklenti sürümünün geçmiş tablosunu paylaşmanıza yardımcı olur.

Kümenizde hangi Eklenti sürümünün yüklü olduğunu belirleme

Azure İlkesi Eklentisi, her sürüm için standart AnlamSal Sürüm Oluşturma şemasını kullanır. Kullanılan Azure İlkesi Eklenti sürümünü tanımlamak için aşağıdaki komutu çalıştırabilirsiniz:kubectl get pod azure-policy-<unique-pod-identifier> -n kube-system -o json | jq '.spec.containers[0].image'

Azure İlkesi Eklentinizin kullandığı Ağ Geçidi Denetleyicisi sürümünü tanımlamak için aşağıdaki komutu çalıştırabilirsiniz:kubectl get pod gatekeeper-controller-<unique-pod-identifier> -n gatekeeper-system -o json | jq '.spec.containers[0].image'

Son olarak, kullandığınız AKS kümesi sürümünü tanımlamak için bağlantılı AKS yönergelerini izleyin.

Her AKS kümesi sürümü için kullanılabilir eklenti sürümleri

1.7.1

CEL ve VAP ile tanışın. Ortak İfade Dili (CEL), bir ilkenin doğrulama kurallarını bildirmek için kullanılabilecek bir Kubernetes yerel ifade dilidir. Erişim İlkesi 'ni (VAP) doğrulama özelliği ağaç içi ilke değerlendirmesi sağlar, erişim isteği gecikme süresini azaltır ve güvenilirliği ve kullanılabilirliği artırır. Desteklenen doğrulama eylemleri Reddet, Uyar ve Denetle'yi içerir. CEL/VAP için özel ilke yazma işlemine izin verilir ve mevcut kullanıcıların rego'larını CEL'ye dönüştürmeleri gerekmez çünkü hem desteklenecek hem de ilkeleri zorunlu kılmak için kullanılacaklardır. CEL ve VAP kullanmak için kullanıcıların ad alanında özellik bayrağına AKS-AzurePolicyK8sNativeValidation kaydolması Microsoft.ContainerService gerekir. Daha fazla bilgi için Ağ Geçidi Denetleyicisi Belgeleri'ne bakın.

Güvenlik geliştirmeleri.

  • Yayın Tarihi: Eylül 2024
  • Kubernetes 1.27+ (VAP oluşturma yalnızca 1.30+'da desteklenir)
  • Ağ Geçidi Denetleyicisi 3.17.1

1.7.0

Genişletmeye giriş, iş yükü kaynaklarınızın (Dağıtımlar, Çoğaltma Kümeleri, İşler vb.) kabul edilebilir podlar oluşturup oluşturmayacağını size önden haber veren bir sola kaydırma özelliğidir. Genişletme, ilkelerinizin davranışını değiştirmemelidir; bunun yerine, yalnızca Gatekeeper'ın pod kapsamlı ilkeleri değerlendirmesini pod kabul zamanı yerine iş yükü erişim zamanında gerçekleşecek şekilde değiştirir. Ancak, bu değerlendirmeyi gerçekleştirmek için iş yükünde tanımlanan ve eksik meta verileri olabilecek pod belirtimini temel alan bir durum pod'unu oluşturması ve değerlendirmesi gerekir. Örneğin, what-if pod uygun sahip başvurularını içermez. İlke davranışının değişme riski az olduğundan, genişletmeyi varsayılan olarak devre dışı olarak kullanıma sunuyoruz. Belirli bir ilke tanımında genişletmeyi etkinleştirmek için olarak Allayarlayın.policyRule.then.details.source. Yerleşikler, bu alanın parametreleştirilmesini etkinleştirmek için yakında güncelleştirilecektir. İlke tanımınızı test eder ve değerlendirme amacıyla oluşturulan durum podunun eksik olduğunu fark ederseniz, durum podlarının sesini kapatmak için kaynak Generated ile bir mutasyon da kullanabilirsiniz. Bu seçenek hakkında daha fazla bilgi için Ağ Geçidi Denetleyicisi belgelerini görüntüleyin.

Güvenlik geliştirmeleri.

  • Temmuz 2024'te yayınlandı
  • Kubernetes 1.27+
  • Ağ Geçidi Denetleyicisi 3.16.3

1.6.1

Güvenlik geliştirmeleri.

  • Mayıs 2024'te yayınlandı
  • Ağ Geçidi Denetleyicisi 3.14.2

1.5.0

Güvenlik geliştirmeleri.

  • Mayıs 2024'te yayınlandı
  • Kubernetes 1.27+
  • Ağ Geçidi Denetleyicisi 3.16.3

1.4.0

Mutasyonu ve dış verileri varsayılan olarak etkinleştirir. Ek sessize alma web kancası ve artan doğrulama web kancası zaman aşımı sınırı, en kötü durumda çağrılara gecikme ekleyebilir. Ayrıca, uyumluluk sonuçlarında ilke tanımını görüntüleme ve tanım sürümünü ayarlama desteği sağlar.

  • Mayıs 2024'te yayınlandı
  • Kubernetes 1.25+
  • Ağ Geçidi Denetleyicisi 3.14.0

1.3.0

Hatalı ilkeler için hata durumunu tanıtır ve uyumsuz durumlarda ilkelerden ayırt edilmelerini sağlar. Mutasyon ilkelerinde v1 kısıtlama şablonları ve excludedNamespaces parametresinin kullanımı için destek ekler. Yükleme sonrasında kısıtlama şablonlarıyla ilgili bir hata durumu denetimi ekler.

  • Şubat 2024'te yayınlandı
  • Kubernetes 1.25+
  • Ağ Geçidi Denetleyicisi 3.14.0

1.2.1

  • Ekim 2023'te yayınlandı
  • Kubernetes 1.25+
  • Ağ Geçidi Denetleyicisi 3.13.3

1.1.0

  • Temmuz 2023'te yayınlandı
  • Kubernetes 1.27+
  • Ağ Geçidi Denetleyicisi 3.11.1

1.0.1

  • Haziran 2023'te yayınlandı
  • Kubernetes 1.24+
  • Ağ Geçidi Denetleyicisi 3.11.1

1.0.0

Kubernetes için Azure İlkesi artık AKS kümelerini büyük ölçekte düzeltmek için mutasyonu destekliyor!

Eklentiyi kaldırma

Eklentiyi AKS'den kaldırma

AKS kümenizden Azure İlkesi Eklentisini kaldırmak için Azure portalını veya Azure CLI'yı kullanın:

  • Azure portal

    1. Azure portalında Tüm hizmetler'i seçip Kubernetes hizmetlerini arayarak ve seçerek AKS hizmetini başlatın.

    2. Azure İlkesi Eklentisini devre dışı bırakmak istediğiniz AKS kümenizi seçin.

    3. Kubernetes hizmet sayfasının sol tarafında İ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
    

Azure Arc özellikli Kubernetes'ten eklentiyi kaldırma

Not

Azure İlkesi Eklenti Helm modeli artık kullanım dışı bırakıldı. Bunun yerine Azure Arc özellikli Kubernetes için Azure İlkesi Uzantısını tercih etmelisiniz.

Azure Arc özellikli Kubernetes kümenizden Azure İlkesi Eklenti ve Ağ Geçidi Denetleyicisi'ni 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

Not

AKS Altyapısı ürünü artık Azure genel bulut müşterileri için kullanım dışı bırakılmıştır. Yönetilen Kubernetes için Azure Kubernetes Service (AKS) veya kendi kendine yönetilen Kubernetes için Küme API Sağlayıcısı Azure'ı kullanmayı göz önünde bulundurun. Planlanan yeni özellik yok; Bu proje yalnızca CVE'ler ve benzerleri için güncelleştirilecek, güncelleştirmeleri almak için son sürüm olarak Kubernetes 1.24 olacaktır.

AZURE İLKESI Eklentisini ve Ağ Geçidi Denetleyicisi'ni AKS Altyapısı kümenizden kaldırmak için eklentinin yüklenme şekliyle uyumlu olan yöntemini kullanın:

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

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

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

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

  • Helm Grafikleri ile yüklüyse aşağıdaki Helm komutunu çalıştırın:

    helm uninstall azure-policy-addon
    

Sınırlamalar

  • Genel Azure İlkesi tanımları ve atama sınırları için Azure İlkesi belgelenen sınırlarını gözden geçirin
  • Kubernetes için Azure İlkesi Eklentisi yalnızca Linux düğüm havuzlarına dağıtılabilir.
  • Küme başına Azure İlkesi Eklentisi tarafından desteklenen en fazla pod sayısı: 10.000
  • Küme başına ilke başına en fazla Uyumsuz kayıt sayısı: 500
  • Abonelik başına en fazla Uyumsuz kayıt sayısı: 1 milyon
  • Azure İlkesi Eklentisi dışında Ağ Geçidi Denetleyicisi yüklemeleri desteklenmez. Azure İlkesi Eklentisini etkinleştirmeden önce önceki bir Gatekeeper yüklemesi tarafından yüklenen bileşenleri kaldırın.
  • Uyumsuzluk nedenleri Microsoft.Kubernetes.Data Resource Provider modunda kullanılamaz. Bileşen ayrıntılarını kullanın.
  • Bileşen düzeyinde muafiyetler Kaynak Sağlayıcısı modları için desteklenmez. Parametre desteği, belirli ad alanlarını dışlamak ve dahil etmek için Azure İlkesi tanımlarında kullanılabilir.
  • metadata.gatekeeper.sh/requires-sync-data Kümenizden OPA önbelleğine veri çoğaltmasını yapılandırmak için bir kısıtlama şablonunda ek açıklamanın kullanılmasına şu anda yalnızca yerleşik ilkeler için izin verilir. Bunun nedeni, dikkatli kullanılmadığı takdirde Ağ Geçidi Denetleyicisi podlarının kaynak kullanımını önemli ölçüde artırabilmesidir.

Ağ Geçidi Denetleyicisi Yapılandırmasını Yapılandırma

Ağ Geçidi Denetleyicisi yapılandırmasının değiştirilmesi, kritik güvenlik ayarları içerdiğinden desteklenmez. Yapılandırmadaki düzenlemeler uzlaştırılır.

Kısıtlama şablonlarında data.inventory kullanma

Şu anda, kullanıcıların mevcut küme içi kaynakları OPA önbelleğiyle eşitlemesine ve isteğin AdmissionReview değerlendirmesi sırasında bunlara başvurmasına olanak tanıyan çeşitli yerleşik ilkeler veri çoğaltmayı kullanır. Veri çoğaltma ilkeleri, Rego'daki varlığı data.inventory ve Azure İlkesi eklentiye ilke değerlendirmesinin metadata.gatekeeper.sh/requires-sync-data düzgün çalışması için hangi kaynakların önbelleğe alınması gerektiğini bildiren ek açıklamanın varlığıyla ayırt edilebilir. Bu işlem, bu ek açıklamanın açıklayıcı olduğu, açıklayıcı olmadığı tek başına Ağ Geçidi Denetleyicisi'nden farklıdır.

Veri çoğaltma şu anda özel ilke tanımlarında kullanılmak üzere engellenmiştir, çünkü yüksek örnek sayılarına sahip kaynakların çoğaltılması dikkatli bir şekilde kullanılmazsa Ağ Geçidi Denetleyicisi podlarının kaynak kullanımını önemli ölçüde artırabilir. Bu ek açıklamayla kısıtlama şablonu içeren bir özel ilke tanımı oluşturmaya çalışırken bir hata görürsünüz ConstraintTemplateInstallFailed .

Ek açıklamayı kaldırmak gördüğünüz hatayı azaltıyor gibi görünebilir, ancak ilke eklentisi bu kısıtlama şablonu için gerekli kaynakları önbelleğe eşitlemez. Bu nedenle, ilkeleriniz boş data.inventory bir şekilde değerlendirilir (gerekli kaynakları çoğaltan yerleşik bir öğe atanmadığı varsayılır). Bu, yanıltıcı uyumluluk sonuçlarına yol açar. Daha önce belirtildiği gibi, gerekli kaynakları önbelleğe almak için yapılandırmayı el ile düzenlemeye de izin verilmez.

Aşağıdaki sınırlamalar yalnızca AKS için Azure İlkesi Eklentisi için geçerlidir:

Sık sorulan sorular

Azure İlkesi Eklentisi / Azure İlkesi Uzantısı yüklemeden sonra kümeme ne dağıtıyor?

Azure İlkesi Eklentisinin çalışması için üç Ağ Geçidi Denetleyicisi bileşeni gerekir: Bir denetim podu ve iki web kancası pod çoğaltması. Bir Azure İlkesi pod ve bir Azure İlkesi web kancası podu da yüklenir.

Azure İlkesi Eklentisinin /Uzantısının her kümede ne kadar kaynak tüketimi kullanmasını beklemem gerekir?

Kümenizde çalışan Kubernetes bileşenleri için Azure İlkesi, kümedeki Kubernetes kaynaklarının ve ilke atamalarının sayısı arttıkça daha fazla kaynak tüketir ve bu da denetim ve zorlama işlemleri gerektirir.

Planlamanıza yardımcı olacak tahminler şunlardır:

  • En fazla 20 kısıtlamaya sahip tek bir kümede 500'den az pod için: bileşen başına iki vCPU ve 350 MB bellek.
  • Tek bir kümede en fazla 40 kısıtlamaya sahip 500'den fazla pod için: bileşen başına üç vCPU ve 600 MB bellek.

Kubernetes tanımları için Azure İlkesi Windows podlarına uygulanabilir mi?

Windows podları güvenlik bağlamlarını desteklemez. Bu nedenle, kök ayrıcalıklarına izin vermeme gibi bazı Azure İlkesi tanımları Windows podlarında ilerletilebilir ve yalnızca Linux podları için geçerlidir.

Azure İlkesi Eklentisi tarafından hangi tür tanılama verileri toplanır?

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

  • Azure İlkesi Eklentiyi güncel tutun.
  • Eklentiyi güvenli, güvenilir ve yüksek performanslı Azure İlkesi tutun.
  • Eklentinin kullanımının toplu analizi aracılığıyla Azure İlkesi Eklentisini geliştirin.

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

  • Eklenti aracısı sürümünü Azure İlkesi
  • Küme türü
  • Küme bölgesi
  • Küme kaynak grubu
  • Küme kaynak kimliği
  • Küme abonelik 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 sırasında Azure İlkesi Eklentisi tarafından karşılaşılan özel durumlar/hatalar
  • Azure İlkesi Eklentisi tarafından yüklenmeyen Ağ Geçidi Denetleyicisi ilke tanımlarının sayısı

Azure İlkesi Eklentisini yüklerken göz önünde bulundurulması gereken genel en iyi yöntemler nelerdir?

  • Ağ Geçidi Denetleyicisi podlarını zamanlamak için taint ile CriticalAddonsOnly sistem düğümü havuzunu kullanın. Daha fazla bilgi için bkz . Sistem düğümü havuzlarını kullanma.
  • AKS kümelerinizden giden trafiğin güvenliğini sağlayın. Daha fazla bilgi için bkz . Küme düğümleri için çıkış trafiğini denetleme.
  • Küme etkinleştirildiyse aad-pod-identity Düğüm Yönetilen Kimlik (NMI) podları, Düğümleri iptables Değiştirerek Azure Örneği Meta Veri uç noktasına yapılan çağrıları durdurur. Bu yapılandırma, Pod kullanmasa aad-pod-identitybile Meta Veri uç noktasına yapılan tüm isteklerin NMI tarafından durdurulması anlamına gelir.
  • AzurePodIdentityException CRD, CRD'de tanımlanan etiketlerle eşleşen bir poddan kaynaklanan Meta Veri uç noktasına yapılan tüm isteklerin NMI'de herhangi bir işlem yapılmadan bildirilmesi gerektiğini bildirmek aad-pod-identity üzere yapılandırılabilir. kube-system ad alanında etiketi olan kubernetes.azure.com/managedby: aks sistem podları CRD yapılandırılarak AzurePodIdentityException içinde aad-pod-identity dışlanmalıdır. Daha fazla bilgi için bkz . Belirli bir pod veya uygulama için aad-pod-identity'yi devre dışı bırakma. Özel durum yapılandırmak için mikrofon özel durumu YAML'sini yükleyin.

Sonraki adımlar