Delen via


Toegang tot podbeveiliging gebruiken in Azure Kubernetes Service (AKS)

Pod Security Admission (PSA) maakt gebruik van labels om podbeveiligingsstandaardbeleid af te dwingen op pods die worden uitgevoerd in een naamruimte. AKS schakelt Pod Security-toegang in is standaard ingeschakeld. Zie Pod-beveiligingsstandaarden afdwingen met naamruimtelabels en Pod Security Standards voor meer informatie over podbeveiligingstoegang en Pod Security Standards.

Pod Security Admission is een ingebouwde beleidsoplossing voor implementaties van één cluster. Als u beleid op ondernemingsniveau wilt gebruiken, raden we u aan Azure Policy te gebruiken.

Voordat u begint

Toegang tot podbeveiliging inschakelen voor een naamruimte in uw cluster

PSA inschakelen voor één naamruimte

  • Schakel PSA in voor één naamruimte in uw cluster met behulp van de kubectl label opdracht en stel het pod-security.kubernetes.io/enforce label in met de beleidswaarde die u wilt afdwingen. In het volgende voorbeeld wordt het restricted beleid ingeschakeld voor de naamruimte NAMESPACE .

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

PSA inschakelen voor alle naamruimten

  • Schakel PSA in voor alle naamruimten in uw cluster met behulp van de kubectl label opdracht en stel het pod-security.kubernetes.io/warn label in met de beleidswaarde die u wilt afdwingen. In het volgende voorbeeld wordt het baseline beleid ingeschakeld voor alle naamruimten in uw cluster. Dit beleid genereert een gebruikersgerichte waarschuwing als er pods worden geïmplementeerd in een naamruimte die niet voldoet aan het basislijnbeleid .

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

Toegangsbeleid voor podbeveiliging afdwingen met een implementatie

  1. Maak twee naamruimten met de kubectl create namespace opdracht .

    kubectl create namespace test-restricted
    kubectl create namespace test-privileged
    
  2. Schakel een PSA-beleid in voor elke naamruimte, een met het restricted beleid en een met het baseline beleid, met behulp van de kubectl label opdracht .

    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
    

    Hiermee configureert u de test-restricted naamruimten en test-privileged om actieve pods te blokkeren en een gebruikerswaarschuwing te genereren als pods die niet voldoen aan het geconfigureerde beleid proberen uit te voeren.

  3. Probeer pods te implementeren in de test-restricted naamruimte met behulp van de kubectl apply opdracht . Deze opdracht resulteert in een fout omdat de test-restricted naamruimte is geconfigureerd om pods te blokkeren die niet voldoen aan het restricted beleid.

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

    In de volgende voorbeelduitvoer ziet u een waarschuwing dat de pods het geconfigureerde beleid schenden:

    ...
    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. Controleer met de opdracht of er geen pods worden uitgevoerd in de test-restrictedkubectl get pods naamruimte.

    kubectl get pods --namespace test-restricted
    

    In de volgende voorbeelduitvoer ziet u dat er geen pods worden uitgevoerd in de test-restricted naamruimte:

    No resources found in test-restricted namespace.
    
  5. Probeer pods te implementeren in de test-privileged naamruimte met behulp van de kubectl apply opdracht . Deze keer moeten de pods worden geïmplementeerd omdat de test-privileged naamruimte is geconfigureerd om pods toe te staan die in strijd zijn met het privileged beleid.

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

    In de volgende voorbeelduitvoer ziet u dat de pods zijn geïmplementeerd:

    deployment.apps/azure-vote-back created
    service/azure-vote-back created
    deployment.apps/azure-vote-front created
    service/azure-vote-front created
    
  6. Controleer of er pods worden uitgevoerd in de test-privileged naamruimte met behulp van de kubectl get pods opdracht .

    kubectl get pods --namespace test-privileged
    

    In de volgende voorbeelduitvoer ziet u twee pods die worden uitgevoerd in de test-privileged naamruimte:

    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. Verwijder de test-restricted naamruimten en test-privileged met behulp van de kubectl delete opdracht .

    kubectl delete namespace test-restricted test-privileged
    

Volgende stappen

In dit artikel hebt u geleerd hoe u Pod Security-toegang tot een AKS-cluster inschakelt. Zie Pod-beveiligingsstandaarden afdwingen met naamruimtelabels voor meer informatie over podbeveiligingstoegang. Zie Pod Security Standards (Beveiligingsstandaarden voor pods) voor meer informatie over de podbeveiligingsstandaarden die worden gebruikt door podbeveiligingstoegang.