Azure Kubernetes Service'te (AKS) Pod Güvenliği Kabulü Kullanma
Pod Güvenlik Kabulü (PSA), bir ad alanında çalışan podlarda Pod Güvenlik Standartları ilkelerini zorunlu kılmak için etiketleri kullanır. AKS'de Pod Güvenlik Girişi varsayılan olarak etkindir. Pod Güvenlik Erişim ve Pod Güvenlik Standartları hakkında daha fazla bilgi için bkz . Pod Güvenlik Standartlarını ad alanı etiketleriyle zorunlu kılma ve Pod Güvenlik Standartları.
Pod Güvenlik Kabulü, tek küme uygulamaları için yerleşik bir ilke çözümüdür. Kurumsal düzeyde bir ilke kullanmak istiyorsanız Azure ilkesini kullanmanızı öneririz.
Başlamadan önce
- Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz hesap oluşturabilirsiniz.
- Yüklü Azure CLI.
- Kubernetes sürüm 1.23 veya üzerini çalıştıran mevcut bir AKS kümesi.
Kümenizdeki bir ad alanı için Pod Güvenlik Kabulü'nüzü etkinleştirme
Tek bir ad alanı için PSA'yı etkinleştirme
komutunu kullanarak
kubectl label
kümenizdeki tek bir ad alanı için PSA'yı etkinleştirin ve etiketi zorlamak istediğiniz ilke değeriyle ayarlayınpod-security.kubernetes.io/enforce
. Aşağıdaki örnek, AD ALANIrestricted
ad alanı için ilkeyi etkinleştirir.kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Tüm ad alanları için PSA'yı etkinleştirme
komutunu kullanarak
kubectl label
kümenizdeki tüm ad alanları için PSA'yı etkinleştirin ve etiketi zorlamak istediğiniz ilke değeriyle ayarlayınpod-security.kubernetes.io/warn
. Aşağıdaki örnek, kümenizdeki tüm ad alanları için ilkeyibaseline
etkinleştirir. Bu ilke, temel ilkeyi karşılamayan bir ad alanına pod dağıtılırsa kullanıcıya yönelik bir uyarı oluşturur.kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Dağıtımla Pod Güvenlik Erişim ilkesini zorunlu kılma
komutunu kullanarak iki ad alanı
kubectl create namespace
oluşturun.kubectl create namespace test-restricted kubectl create namespace test-privileged
komutunu kullanarak her ad alanı için bir
restricted
PSA ilkesi etkinleştirin; biri ilkeye ve diğeri ilkeyebaseline
kubectl label
sahip.kubectl label --overwrite ns test-restricted pod-security.kubernetes.io/enforce=restricted pod-security.kubernetes.io/warn=restricted kubectl label --overwrite ns test-privileged pod-security.kubernetes.io/enforce=privileged pod-security.kubernetes.io/warn=privileged
Bu, ve
test-privileged
ad alanlarını çalışan podları engelleyecek ve yapılandırılmış ilke çalıştırma girişimini karşılamayen podlar varsa kullanıcıya yönelik bir uyarı oluşturacak şekilde yapılandırılırtest-restricted
.komutunu kullanarak podları
test-restricted
ad alanına dağıtmayıkubectl apply
deneme. Ad alanı ilkeyetest-restricted
uymayen podları engelleyecek şekilde yapılandırıldığından bu komut bir hataylarestricted
sonuçlanır.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Aşağıdaki örnek çıktıda podların yapılandırılan ilkeyi ihlal eden bir uyarı gösterilmektedir:
... Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "azure-vote-back" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "azure-vote-back" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "azure-vote-back" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "azure-vote-back" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") deployment.apps/azure-vote-back created service/azure-vote-back created Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "azure-vote-front" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "azure-vote-front" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "azure-vote-front" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "azure-vote-front" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") deployment.apps/azure-vote-front created service/azure-vote-front created
komutunu kullanarak
kubectl get pods
ad alanındatest-restricted
çalışan pod olmadığını onaylayın.kubectl get pods --namespace test-restricted
Aşağıdaki örnek çıktı, ad alanında
test-restricted
çalışan podları göstermez:No resources found in test-restricted namespace.
komutunu kullanarak podları
test-privileged
ad alanına dağıtmayıkubectl apply
deneme. Bu kez, ad alanı ilkeyi ihlalprivileged
eden podlara izin verecek şekilde yapılandırıldığındantest-privileged
podların başarıyla dağıtılması gerekir.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Aşağıdaki örnek çıktıda başarıyla dağıtılan podlar gösterilmektedir:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
komutunu kullanarak
kubectl get pods
ad alanındatest-privileged
çalışan podlarınız olduğunu onaylayın.kubectl get pods --namespace test-privileged
Aşağıdaki örnek çıktı, ad alanında
test-privileged
çalışan iki podu gösterir:NAME READY STATUS RESTARTS AGE azure-vote-back-6fcdc5cbd5-svbdf 1/1 Running 0 2m29s azure-vote-front-5f4b8d498-tqzwv 1/1 Running 0 2m28s
test-restricted
komutunu kullanarakkubectl delete
vetest-privileged
ad alanlarını kaldırın.kubectl delete namespace test-restricted test-privileged
Sonraki adımlar
Bu makalede, AKS kümesinde Pod Güvenlik Girişi'ni etkinleştirmeyi öğrendiniz. Pod Güvenlik Kabulü hakkında daha fazla bilgi için bkz . Ad Alanı Etiketleriyle Pod Güvenlik Standartlarını Zorunlu Kılma. Pod Güvenlik Kabulü tarafından kullanılan Pod Güvenlik Standartları hakkında daha fazla bilgi için bkz . Pod Güvenlik Standartları.
Azure Kubernetes Service