Sdílet prostřednictvím


Použití přístupu k zabezpečení podů ve službě Azure Kubernetes Service (AKS)

Přístup k zabezpečení podů (PSA) používá popisky k vynucení zásad standardů zabezpečení podů na podech spuštěných v oboru názvů. V AKS je ve výchozím nastavení povolen přístup k zabezpečení podů. Další informace o standardech zabezpečení podů a zabezpečení podů naleznete v tématu Vynucení standardů zabezpečení podů s popisky oboru názvů a standardy zabezpečení podů.

Přístup k zabezpečení podů je integrované řešení zásad pro implementace jednoho clusteru. Pokud chcete použít zásady na podnikové úrovni, doporučujeme použít zásady Azure.

Než začnete

Povolení přístupu k zabezpečení podů pro obor názvů v clusteru

Povolení PSA pro jeden obor názvů

  • Pomocí příkazu povolte PSA pro jeden obor názvů v clusteru kubectl label a nastavte pod-security.kubernetes.io/enforce popisek s hodnotou zásad, kterou chcete vynutit. Následující příklad povolí zásadu restricted oboru názvů oboru názvů.

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

Povolení PSA pro všechny obory názvů

  • Povolte PSA pro všechny obory názvů v clusteru pomocí kubectl label příkazu a nastavte pod-security.kubernetes.io/warn popisek s hodnotou zásad, kterou chcete vynutit. Následující příklad povolí zásadu baseline pro všechny obory názvů v clusteru. Tato zásada vygeneruje upozornění na uživatele, pokud jsou nějaké pody nasazené do oboru názvů, který nevyhovuje zásadám směrného plánu .

    kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
    

Vynucení zásad přístupu k zabezpečení podů s nasazením

  1. Pomocí příkazu vytvořte dva obory kubectl create namespace názvů.

    kubectl create namespace test-restricted
    kubectl create namespace test-privileged
    
  2. Povolte zásadu PSA pro každý obor názvů, jednu se zásadou restricted a druhou se zásadou baseline kubectl label pomocí příkazu.

    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
    

    Tím nakonfigurujete test-restricted obory názvů tak test-privileged , aby blokovaly spuštěné pody a vygenerovaly upozornění na uživatele, pokud se některé pody, které nesplňují nakonfigurované zásady, pokusily spustit.

  3. Pomocí příkazu se pokusíte nasadit pody do test-restricted oboru názvů kubectl apply . Výsledkem tohoto příkazu je chyba, protože test-restricted obor názvů je nakonfigurovaný tak, aby blokoval pody, které nesplňují restricted zásady.

    kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
    

    Následující příklad výstupu ukazuje upozornění, že pody porušují nakonfigurované zásady:

    ...
    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. Pomocí příkazu ověřte, že v test-restricted oboru názvů kubectl get pods nejsou spuštěné žádné pody.

    kubectl get pods --namespace test-restricted
    

    Následující příklad výstupu ukazuje, že v test-restricted oboru názvů nejsou spuštěné žádné pody:

    No resources found in test-restricted namespace.
    
  5. Pomocí příkazu se pokusíte nasadit pody do test-privileged oboru názvů kubectl apply . Tentokrát by se pody měly úspěšně nasadit, protože test-privileged obor názvů je nakonfigurovaný tak, aby umožňoval pody, které porušují privileged zásady.

    kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
    

    Následující příklad výstupu ukazuje úspěšné nasazení podů:

    deployment.apps/azure-vote-back created
    service/azure-vote-back created
    deployment.apps/azure-vote-front created
    service/azure-vote-front created
    
  6. Pomocí příkazu ověřte, že v oboru názvů kubectl get pods běží test-privileged pody.

    kubectl get pods --namespace test-privileged
    

    Následující příklad výstupu ukazuje dva pody spuštěné v test-privileged oboru názvů:

    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. Pomocí příkazu odeberte obory test-restricted názvů a test-privileged obory kubectl delete názvů.

    kubectl delete namespace test-restricted test-privileged
    

Další kroky

V tomto článku jste zjistili, jak povolit přístup k zabezpečení podů v clusteru AKS. Další informace o přístupu k zabezpečení podů naleznete v tématu Vynucení standardů zabezpečení podů s popisky oboru názvů. Další informace o standardech zabezpečení podů používaných pro přístup k zabezpečení podů naleznete v tématu Standardy zabezpečení podů.