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ın pod-security.kubernetes.io/enforce . Aşağıdaki örnek, AD ALANI restricted 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ın pod-security.kubernetes.io/warn . Aşağıdaki örnek, kümenizdeki tüm ad alanları için ilkeyi baseline 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

  1. komutunu kullanarak iki ad alanı kubectl create namespace oluşturun.

    kubectl create namespace test-restricted
    kubectl create namespace test-privileged
    
  2. komutunu kullanarak her ad alanı için bir restricted PSA ilkesi etkinleştirin; biri ilkeye ve diğeri ilkeye baseline 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.

  3. komutunu kullanarak podları test-restricted ad alanına dağıtmayı kubectl apply deneme. Ad alanı ilkeye test-restricted uymayen podları engelleyecek şekilde yapılandırıldığından bu komut bir hatayla restricted 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
    
  4. komutunu kullanarak kubectl get pods ad alanında test-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.
    
  5. komutunu kullanarak podları test-privileged ad alanına dağıtmayı kubectl apply deneme. Bu kez, ad alanı ilkeyi ihlal privileged eden podlara izin verecek şekilde yapılandırıldığından test-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
    
  6. komutunu kullanarak kubectl get pods ad alanında test-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
    
  7. test-restricted komutunu kullanarak kubectl delete ve test-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ı.