Azure Kubernetes Service'te (AKS) Pod Güvenliği Girişi Kullanma

Pod Güvenlik Kabulü (PSA), bir ad alanında çalışan podlarda Pod Güvenlik Standartları politikalarını zorunlu kılmak için etiketleri kullanır. AKS'de Pod Güvenlik Girişi varsayılan olarak etkindir. Pod Güvenlik Kabulü ve Pod Güvenlik Standartları hakkında daha fazla bilgi için, Ad alanı etiketleriyle Pod Güvenlik Standartlarını zorunlu kılma ve Pod Güvenlik Standartları sayfalarına bakın.

Pod Güvenlik Kabulü, tekli küme uygulamaları için yerleşik bir politika çö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.
  • Azure CLI yüklendi.
  • 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ü etkinleştirme

Tek bir ad alanı için PSA'yı etkinleştirme

  • kubectl label komutunu kullanarak kümenizdeki tek bir ad alanı için PSA'yı etkinleştirin ve pod-security.kubernetes.io/enforce etiketini uygulamak istediğiniz politika değeriyle ayarlayın. Aşağıdaki örnek, restricted ilkesini NAMESPACE ad alanı için etkinleştirir.

    kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
    

Tüm ad alanları için PSA'yı etkinleştirme

  • Kümenizdeki tüm ad alanları için PSA'yı etkinleştirmek amacıyla kubectl label komutunu kullanın ve uygulamak istediğiniz ilkenin değeriyle etiketi pod-security.kubernetes.io/warn olarak ayarlayın. Aşağıdaki örnek, kümenizdeki tüm ad alanları için ilkeyi baseline etkinleştirir. Bu ilke, temel ilke politikasına uymayan 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. Her ad alanı için bir restricted ilkesini ve bir baseline ilkesini etkinleştirin; bunu kubectl label komutunu kullanarak yapın.

    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, test-restricted ve test-privileged ad alanlarını, yapılandırılmış ilkeyi karşılamayan ve çalıştırılmaya çalışan podları engelleyecek ve kullanıcıya yönelik bir uyarı oluşturarak yapılandırır.

  3. komutunu kullanarak podları test-restricted ad alanına dağıtmayı kubectl apply deneme. Ad alanı, ilkeye uymayan podları engelleyecek şekilde yapılandırıldığından, bu komut bir hatayla 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 test-restricted ad alanında kubectl get pods ç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. kubectl apply komutunu kullanarak test-privileged ad alanına podları dağıtmayı deneyin. Bu kez, ad alanı ilkeyi ihlal test-privileged eden podlara izin verecek şekilde yapılandırıldığından 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 test-privileged ad alanında kubectl get pods ç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 test-privileged ve kubectl delete 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 edinmek için Pod Güvenlik Standartları sayfasını ziyaret edin.