Dela via


Använda poddsäkerhetsantagning i Azure Kubernetes Service (AKS)

Pod Security Admission (PSA) använder etiketter för att framtvinga Pod Security Standards-principer på poddar som körs i ett namnområde. I AKS aktiveras poddsäkerhetsantagning som standard. Mer information om poddsäkerhetsantagning och poddsäkerhetsstandarder finns i Framtvinga poddsäkerhetsstandarder med namnrymdsetiketter och poddsäkerhetsstandarder.

Pod Security Admission är en inbyggd principlösning för implementeringar av enskilda kluster. Om du vill använda en princip i företagsklass rekommenderar vi att du använder Azure-principen.

Innan du börjar

  • En Azure-prenumeration Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
  • Azure CLI installerat.
  • Ett befintligt AKS-kluster som kör Kubernetes version 1.23 eller senare.

Aktivera poddsäkerhetsantagning för ett namnområde i klustret

Aktivera PSA för ett enda namnområde

  • Aktivera PSA för ett enda namnområde i klustret med kommandot kubectl label och ange pod-security.kubernetes.io/enforce etiketten med det principvärde som du vill framtvinga. I följande exempel aktiveras restricted principen för namnområdet NAMESPACE .

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

Aktivera PSA för alla namnområden

  • Aktivera PSA för alla namnområden i klustret med kommandot kubectl label och ange pod-security.kubernetes.io/warn etiketten med det principvärde som du vill tillämpa. I följande exempel aktiveras baseline principen för alla namnområden i klustret. Den här principen genererar en användarriktad varning om några poddar distribueras till ett namnområde som inte uppfyller baslinjeprincipen.

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

Framtvinga en antagningsprincip för poddsäkerhet med en distribution

  1. Skapa två namnområden med kommandot kubectl create namespace .

    kubectl create namespace test-restricted
    kubectl create namespace test-privileged
    
  2. Aktivera en PSA-princip för varje namnområde, en med restricted principen och en med baseline principen med kommandot kubectl label .

    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
    

    Detta konfigurerar test-restricted namnrymderna och test-privileged för att blockera poddar som körs och genererar en användarriktad varning om några poddar som inte uppfyller det konfigurerade principförsöket att köras.

  3. Försök att distribuera poddar till test-restricted namnområdet med hjälp av kubectl apply kommandot . Det här kommandot resulterar i ett fel eftersom test-restricted namnområdet är konfigurerat för att blockera poddar som inte uppfyller restricted principen.

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

    Följande exempelutdata visar en varning om att poddarna bryter mot den konfigurerade principen:

    ...
    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. Bekräfta att det inte finns några poddar som körs i test-restricted namnområdet med kommandot kubectl get pods .

    kubectl get pods --namespace test-restricted
    

    I följande exempelutdata visas inga poddar som körs i test-restricted namnområdet:

    No resources found in test-restricted namespace.
    
  5. Försök att distribuera poddar till test-privileged namnområdet med hjälp av kubectl apply kommandot . Den här gången bör poddarna distribueras korrekt eftersom test-privileged namnområdet har konfigurerats för att tillåta poddar som bryter mot privileged principen.

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

    Följande exempelutdata visar poddarna som har distribuerats:

    deployment.apps/azure-vote-back created
    service/azure-vote-back created
    deployment.apps/azure-vote-front created
    service/azure-vote-front created
    
  6. Bekräfta att poddar körs i test-privileged namnområdet med kommandot kubectl get pods .

    kubectl get pods --namespace test-privileged
    

    Följande exempelutdata visar två poddar som körs i test-privileged namnområdet:

    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 Ta bort namnrymderna och test-privileged med kommandot kubectl delete .

    kubectl delete namespace test-restricted test-privileged
    

Nästa steg

I den här artikeln har du lärt dig hur du aktiverar poddsäkerhetsantagning för ett AKS-kluster. Mer information om poddsäkerhetsantagning finns i Framtvinga poddsäkerhetsstandarder med namnområdesetiketter. Mer information om poddsäkerhetsstandarder som används av poddsäkerhetsantagning finns i Poddsäkerhetsstandarder.