Pod biztonsági felvételének használata Azure Kubernetes Service (AKS)
A Pod security Admission (PSA) címkék használatával kényszeríti ki a podbiztonsági szabványok szabályzatait a névtérben futó podokon. Az AKS engedélyezi, hogy a podok biztonsági felvétele alapértelmezés szerint engedélyezve legyen. További információ a podok biztonsági felvételéről és a podok biztonsági szabványairól: Podbiztonsági szabványok érvénybe léptetése névtércímkékkel és podbiztonsági szabványokkal.
A Pod security Admission egy beépített szabályzatmegoldás egyetlen fürt implementációihoz. Ha nagyvállalati szintű szabályzatot szeretne használni, javasoljuk, hogy az Azure Policyt használja.
Előkészületek
- Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, létrehozhat egy ingyenes fiókot.
- Az Azure CLI telepítve van.
- Egy kubernetes 1.23-at vagy újabb verziót futtató meglévő AKS-fürt.
Pod biztonsági felvételének engedélyezése egy névtérhez a fürtben
PSA engedélyezése egyetlen névtérhez
Engedélyezze a PSA-t egyetlen névtérhez a fürtben a
kubectl label
paranccsal, és állítsa be apod-security.kubernetes.io/enforce
címkét a kikényszeríteni kívánt szabályzatértékkel. Az alábbi példa engedélyezi arestricted
NÉVTÉR névtér szabályzatát.kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
A PSA engedélyezése az összes névtérhez
Engedélyezze a PSA-t a fürt összes névteréhez a
kubectl label
paranccsal, és állítsa be apod-security.kubernetes.io/warn
címkét a kikényszeríteni kívánt szabályzatértékkel. Az alábbi példa engedélyezi a szabályzatot abaseline
fürt összes névteréhez. Ez a szabályzat felhasználói figyelmeztetést generál, ha a podok olyan névtérben vannak üzembe helyezve, amely nem felel meg az alapkonfigurációs szabályzatnak.kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Podbiztonsági belépési szabályzat kényszerítése üzembe helyezéssel
Hozzon létre két névteret a
kubectl create namespace
paranccsal.kubectl create namespace test-restricted kubectl create namespace test-privileged
Engedélyezze a PSA-szabályzatot minden névtérhez, egyet a
restricted
szabályzattal, egyet pedig abaseline
szabályzattal akubectl label
paranccsal.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
Ez úgy konfigurálja a és
test-privileged
atest-restricted
névteret, hogy blokkolja a futó podokat, és felhasználói figyelmeztetést generál, ha valamelyik pod nem felel meg a konfigurált szabályzat futtatására tett kísérletnek.Próbáljon podokat üzembe helyezni a
test-restricted
névtérben akubectl apply
paranccsal. Ez a parancs hibát eredményez, mert atest-restricted
névtér úgy van konfigurálva, hogy blokkolja arestricted
szabályzatnak nem megfelelő podokat.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Az alábbi példakimenet egy figyelmeztetést jelenít meg, amely szerint a podok megsértik a konfigurált szabályzatot:
... 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
Ellenőrizze, hogy nincsenek-e a névtérben
test-restricted
futó podok akubectl get pods
paranccsal.kubectl get pods --namespace test-restricted
Az alábbi példakimenet nem jelenít meg podokat a
test-restricted
névtérben:No resources found in test-restricted namespace.
Próbáljon podokat üzembe helyezni a
test-privileged
névtérben akubectl apply
paranccsal. Ezúttal a podokat sikeresen üzembe kell helyezni, mert atest-privileged
névtér úgy van konfigurálva, hogy engedélyezze aprivileged
szabályzatot megsértő podokat.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Az alábbi példakimenet a sikeresen üzembe helyezett podokat mutatja be:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
Ellenőrizze, hogy futnak-e podok a
test-privileged
névtérben akubectl get pods
paranccsal.kubectl get pods --namespace test-privileged
Az alábbi példakimenetben két pod fut a
test-privileged
névtérben: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
Távolítsa el a és
test-privileged
atest-restricted
névteret akubectl delete
paranccsal.kubectl delete namespace test-restricted test-privileged
Következő lépések
Ebből a cikkből megtudhatta, hogyan engedélyezheti a podok biztonsági felvételét egy AKS-fürtön. További információ a podok biztonsági felvételéről: Podbiztonsági szabványok kényszerítése névtércímkékkel. A podok biztonsági beléptetése által használt podbiztonsági szabványokról további információt a Pod biztonsági szabványai című témakörben talál.