Usare l'ammissione di sicurezza pod nel servizio Azure Kubernetes
L'ammissione di sicurezza pod (PSA) usa le etichette per applicare i criteri degli standard di sicurezza dei pod nei pod in esecuzione in uno spazio dei nomi. Nel servizio Azure Kubernetes, l'ammissione di sicurezza dei pod è abilitata per impostazione predefinita. Per altre informazioni sull'ammissione di sicurezza pod e sugli standard di sicurezza dei pod, vedere Applicare gli standard di sicurezza dei pod con etichette degli spazi dei nomi e Standard di sicurezza dei pod.
Ammissione di sicurezza pod è una soluzione di criteri predefinita per le implementazioni di un singolo cluster. Se si vuole usare un criterio di livello aziendale, è consigliabile usare Criteri di Azure.
Operazioni preliminari
- Una sottoscrizione di Azure. Se non hai una sottoscrizione Azure, crea un account gratuito.
- L'interfaccia della riga di comando di Azure installata.
- Cluster del servizio Azure Kubernetes esistente che esegue Kubernetes versione 1.23 o successiva.
Abilitare l'ammissione di sicurezza pod per uno spazio dei nomi nel proprio cluster
Abilitare l'ammissione di sicurezza pod per un singolo spazio dei nomi
Abilitare l'ammissione di sicurezza pod per un singolo spazio dei nomi nel cluster usando il comando
kubectl label
e impostare l'etichettapod-security.kubernetes.io/enforce
con il valore del criterio da applicare. Nell'esempio seguente viene abilitato il criterio direstricted
per lo spazio dei nomi SPAZIODEINOMI.kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Abilitare l'ammissione di sicurezza pod per tutti gli spazi dei nomi
Abilitare l'ammissione di sicurezza pod per tutti gli spazi dei nomi nel cluster usando il comando
kubectl label
e impostare l'etichettapod-security.kubernetes.io/warn
con il valore del criterio da applicare. Nell'esempio seguente vengono abilitati i criteribaseline
per tutti gli spazi dei nomi nel cluster. Questo criterio genera un avviso rivolto all'utente se i pod vengono distribuiti in uno spazio dei nomi che non soddisfa i criteri iniziali.kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Applicare un criterio di ammissione di sicurezza pod con una distribuzione
Creare due spazi dei nomi usando il comando
kubectl create namespace
.kubectl create namespace test-restricted kubectl create namespace test-privileged
Abilitare un criterio di ammissione di sicurezza pod per ogni spazio dei nomi, uno con i criteri
restricted
e uno con i criteribaseline
, usando il comandokubectl 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
In questo modo vengono configurati gli spazi dei nomi
test-restricted
etest-privileged
per bloccare i pod in esecuzione e generare un avviso rivolto all'utente se i pod che non soddisfano il tentativo di esecuzione dei criteri configurati.Provare a distribuire i pod nello spazio dei nomi
test-restricted
usando il comandokubectl apply
. Questo comando genera un errore perché lo spazio dei nomitest-restricted
è configurato per bloccare i pod che non soddisfano i criterirestricted
.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
L'output di esempio seguente mostra un avviso che indica che i pod violano i criteri configurati:
... 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
Verificare che non siano presenti pod in esecuzione nello spazio dei nomi
test-restricted
usando il comandokubectl get pods
.kubectl get pods --namespace test-restricted
L'output di esempio seguente non mostra alcun pod in esecuzione nello spazio dei nomi
test-restricted
:No resources found in test-restricted namespace.
Provare a distribuire i pod nello spazio dei nomi
test-privileged
usando il comandokubectl apply
. Questa volta, i pod devono essere distribuiti correttamente perché lo spazio dei nomitest-privileged
è configurato per consentire i pod che violano i criteriprivileged
.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
L'output di esempio seguente mostra i pod distribuiti correttamente:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
Verificare che sono ci siano pod in esecuzione nello spazio dei nomi
test-privileged
usando il comandokubectl get pods
.kubectl get pods --namespace test-privileged
L'output di esempio seguente mostra due pod in esecuzione nello spazio dei nomi
test-privileged
: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
Rimuovere gli spazi dei nomi
test-restricted
etest-privileged
usando il comandokubectl delete
.kubectl delete namespace test-restricted test-privileged
Passaggi successivi
In questo articolo, è stato illustrato si è appreso come abilitare l'ammissione di sicurezza pod in un cluster del servizio Azure Kubernetes. Per altre informazioni sull'ammissione di sicurezza pod, vedere Applicare gli standard di sicurezza dei pod con etichette dello spazio dei nomi. Per altre informazioni sugli standard di sicurezza dei pod usati dall'ammissione di sicurezza pod, vedere Standard di sicurezza dei pod.
Azure Kubernetes Service