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 angepod-security.kubernetes.io/enforce
etiketten med det principvärde som du vill framtvinga. I följande exempel aktiverasrestricted
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 angepod-security.kubernetes.io/warn
etiketten med det principvärde som du vill tillämpa. I följande exempel aktiverasbaseline
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
Skapa två namnområden med kommandot
kubectl create namespace
.kubectl create namespace test-restricted kubectl create namespace test-privileged
Aktivera en PSA-princip för varje namnområde, en med
restricted
principen och en medbaseline
principen med kommandotkubectl 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 ochtest-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.Försök att distribuera poddar till
test-restricted
namnområdet med hjälp avkubectl apply
kommandot . Det här kommandot resulterar i ett fel eftersomtest-restricted
namnområdet är konfigurerat för att blockera poddar som inte uppfyllerrestricted
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
Bekräfta att det inte finns några poddar som körs i
test-restricted
namnområdet med kommandotkubectl 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.
Försök att distribuera poddar till
test-privileged
namnområdet med hjälp avkubectl apply
kommandot . Den här gången bör poddarna distribueras korrekt eftersomtest-privileged
namnområdet har konfigurerats för att tillåta poddar som bryter motprivileged
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
Bekräfta att poddar körs i
test-privileged
namnområdet med kommandotkubectl 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
test-restricted
Ta bort namnrymderna ochtest-privileged
med kommandotkubectl 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.
Azure Kubernetes Service