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:
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.
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.Datakaynak 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-identityetkinleş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ıraad-pod-identity. AzurePodIdentityException CRD,aad-pod-identityCRD '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: aksKuto-System ad alanındaki etiketli sistem KÖKLERIaad-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.
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 --versionkomutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.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
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.
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 listAzure 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
Tüm hizmetler' i seçip Kubernetes Hizmetleri' nı arayıp seçerek aks hizmetini Azure Portal başlatın.
AKS kümelerinizdeki birini seçin.
Kubernetes hizmeti sayfasının sol tarafındaki ilkeler ' i seçin.
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.
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.
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.
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.net443store.policy.core.windows.net443login.windows.net443dc.services.visualstudio.com443Azure İ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
connectedk8suzantı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.
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 --versionkomutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.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'
Kubernetes kümesi sürüm 1.14 veya daha yüksek olmalıdır.
Kubernetes kümeniz, Azure Arc. Daha fazla bilgi için bkz. kubernetes kümesi ekleme Azure Arc.
Azure Arc Kubernetes kümesi için tam Azure Kaynak Kimliğine sahip olun.
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.net443store.policy.core.windows.net443login.windows.net443dc.services.visualstudio.com443'İ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:
Yeni Azure İlkesi helm'e ekleyin:
helm repo add azure-policy https://raw.githubusercontent.com/Azure/azure-policy/master/extensions/policy-addon-kubernetes/helm-chartsHelm 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)
- 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.
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 --versionkomutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.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'
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.jsonAzure 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:
Helm'e Azure İlkesi ekleyin.
helm repo add azure-policy https://raw.githubusercontent.com/Azure/azure-policy/master/extensions/policy-addon-kubernetes/helm-chartsDaha fazla bilgi için bkz. Helm Grafiği - Hızlı Başlangıç Kılavuzu.
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.
Azure İlkesi'da Azure portal. Sol bölmede Tüm hizmetler'i seçin ve ardından İlke'yi arayın ve seçin.
Çalışma sayfası'nın sol Azure İlkesi Tanımlar'ı seçin.
Kategori açılan listesi kutusundan Filtreyi temizlemek için Hepsini seç'i kullanın ve ardından Kubernetes'i seçin.
İlke tanımını ve ardından Ata düğmesini seçin.
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.
İlke atamanıza, kolayca tanımlamak için kullanabileceğiniz bir Ad ve Açıklama girin.
İ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.
İleri’yi seçin.
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.
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_DEPLOYMENTyürütülürken, olayların bir parçası olarak bir reddetme iletisi dönmez. Ancak,kubectl describe replicasets.apps $MY_DEPLOYMENTreddetmeyle 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:
Küme
kubeconfigiç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>Küme bağlantısını test edin.
kubectl cluster-infokomutunu ç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.
Kısıtlama şablonuyla ilgili kısıtlamaları görüntüleme
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
Tüm hizmetler'i Azure portal kubernetes hizmetlerini arayarak ve seçerek aks hizmetini başlatabilirsiniz.
Eklentiyi devre dışı bırakmak istediğiniz AKS Azure İlkesi seçin.
Kubernetes hizmet sayfasının sol tarafındaki İlkeler'i seçin.
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
- Örneklerde örnekleri Azure İlkesi gözden geçirme.
- İlke tanım yapısını gözden geçirin.
- İlkenin etkilerini anlama konusunu gözden geçirin.
- Program aracılığıyla ilke oluşturma hakkında bilgi.
- Uyumluluk verilerini nasıl edinebilirsiniz?
- Uyumlu olmayan kaynakları düzeltmeyi öğrenin.
- Kaynaklarınızı Azure yönetim gruplarıyla düzenleme ile bir yönetim grubunun ne olduğunu gözden geçirme.