Condividi tramite


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

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'etichetta pod-security.kubernetes.io/enforce con il valore del criterio da applicare. Nell'esempio seguente viene abilitato il criterio di restricted 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'etichetta pod-security.kubernetes.io/warn con il valore del criterio da applicare. Nell'esempio seguente vengono abilitati i criteri baseline 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

  1. Creare due spazi dei nomi usando il comando kubectl create namespace.

    kubectl create namespace test-restricted
    kubectl create namespace test-privileged
    
  2. Abilitare un criterio di ammissione di sicurezza pod per ogni spazio dei nomi, uno con i criteri restricted e uno con i criteri baseline, usando il comando 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
    

    In questo modo vengono configurati gli spazi dei nomi test-restricted e test-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.

  3. Provare a distribuire i pod nello spazio dei nomi test-restricted usando il comando kubectl apply. Questo comando genera un errore perché lo spazio dei nomi test-restricted è configurato per bloccare i pod che non soddisfano i criteri restricted .

    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
    
  4. Verificare che non siano presenti pod in esecuzione nello spazio dei nomi test-restricted usando il comando kubectl 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.
    
  5. Provare a distribuire i pod nello spazio dei nomi test-privileged usando il comando kubectl apply. Questa volta, i pod devono essere distribuiti correttamente perché lo spazio dei nomi test-privileged è configurato per consentire i pod che violano i criteri privileged.

    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
    
  6. Verificare che sono ci siano pod in esecuzione nello spazio dei nomi test-privileged usando il comando kubectl 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
    
  7. Rimuovere gli spazi dei nomi test-restricted e test-privileged usando il comando kubectl 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.