Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Pod Security Admission (PSA) usa le etichette per applicare i criteri dei Pod Security Standards sui pod in esecuzione in un namespace. In AKS, Pod Security Admission è abilitato per impostazione predefinita. Per ulteriori informazioni su Pod Security Admission e Pod Security Standards, consulta Applicazione di Pod Security Standards con etichette dei namespace e Pod Security Standards.
Pod Security Admission è una soluzione di criteri integrata per le implementazioni a cluster singolo. 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.
- Un cluster AKS esistente che esegue Kubernetes versione 1.23 o versioni successive.
Abilitare l'ammissione di sicurezza pod per uno spazio dei nomi nel proprio cluster
Abilitare PSA per un singolo namespace
Abilitate PSA per un singolo namespace nel tuo cluster usando il comando
kubectl labele impostate l'etichettapod-security.kubernetes.io/enforcecon il valore del criterio che desiderate applicare. L'esempio seguente abilita il criterio direstrictedper lo spazio dei nomi NAMESPACE.kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Abilita PSA per tutti i namespace
Abilita PSA per tutti i namespace del cluster usando il comando
kubectl labele imposta l'etichettapod-security.kubernetes.io/warncon il valore del criterio che vuoi applicare. L'esempio seguente abilita il criteriobaselineper tutti i namespace nel cluster. Questo criterio genera un avviso visibile all'utente se vengono distribuiti pod in un namespace che non soddisfa la policy baseline.kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Imporre un criterio di ammissione della sicurezza dei Pod con un deployment
Crea due namespace utilizzando il comando
kubectl create namespace.kubectl create namespace test-restricted kubectl create namespace test-privilegedAbilita un criterio PSA per ogni namespace, uno con il criterio
restrictede uno con il criteriobaseline, 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=privilegedIn questo modo vengono configurati i namespace
test-restrictedetest-privilegedper impedire l'esecuzione dei pod e generare un avviso visibile all'utente se dei pod che non soddisfano i criteri configurati tentano di essere eseguiti.Provare a distribuire i pod nello spazio dei nomi
test-restrictedusando 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.yamlL'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 createdVerificare che non siano presenti pod in esecuzione nello spazio dei nomi
test-restrictedusando il comandokubectl get pods.kubectl get pods --namespace test-restrictedL'output di esempio seguente mostra che non è in esecuzione alcun pod nello spazio dei nomi
test-restricted:No resources found in test-restricted namespace.Provare a distribuire i pod nello spazio dei nomi
test-privilegedusando il comandokubectl apply. Questa volta, i pod dovrebbero essere distribuiti con successo perché il namespacetest-privilegedè configurato per consentire i pod che violano la policyprivileged.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yamlL'esempio di output seguente mostra i pod distribuiti con successo:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front createdVerifica che siano presenti pod in esecuzione nel namespace
test-privilegedutilizzando il comandokubectl get pods.kubectl get pods --namespace test-privilegedL'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 2m28sRimuovere i namespace
test-restrictedetest-privilegedmediante il comandokubectl delete.kubectl delete namespace test-restricted test-privileged
Passaggi successivi
In questo articolo si è appreso come abilitare Pod Security Admission in un cluster AKS. Per ulteriori informazioni su Pod Security Admission, consulta Far rispettare gli standard di sicurezza dei pod con le etichette del namespace. Per ulteriori informazioni sugli standard di sicurezza dei pod utilizzati da Pod Security Admission, vedi Standard di sicurezza dei pod.