Usar a Admissão de Segurança do Pod no Serviço Kubernetes do Azure (AKS)
A Admissão de Segurança de Pod (PSA) usa rótulos para impor políticas de Padrões de Segurança de Pod em pods executados em um namespace. No AKS, a Admissão de Segurança do Pod está ativada por padrão. Para obter mais informações sobre Pod Security Admission e Pod Security Standards, consulte Enforce Pod Security Standards with namespace labels and Pod Security Standards.
O Pod Security Admission é uma solução de política integrada para implementações de cluster único. Se você quiser usar uma política de nível empresarial, recomendamos que você use a política do Azure.
Antes de começar
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, pode criar uma conta gratuita.
- A CLI do Azure instalada.
- Um cluster AKS existente executando o Kubernetes versão 1.23 ou superior.
Habilitar a Admissão de Segurança do Pod para um namespace em seu cluster
Habilitar o PSA para um único namespace
Habilite o PSA para um único namespace em seu cluster usando o
kubectl label
comando e defina opod-security.kubernetes.io/enforce
rótulo com o valor da política que você deseja impor. O exemplo a seguir habilita arestricted
política para o namespace NAMESPACE .kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Habilitar o PSA para todos os namespaces
Habilite o PSA para todos os namespaces em seu cluster usando o
kubectl label
comando e defina opod-security.kubernetes.io/warn
rótulo com o valor da política que você deseja impor. O exemplo a seguir habilita abaseline
política para todos os namespaces em seu cluster. Essa política gera um aviso voltado para o usuário se algum pods for implantado em um namespace que não atenda à política de linha de base .kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Aplique uma política de Admissão de Segurança de Pod com uma implantação
Crie dois namespaces usando o
kubectl create namespace
comando.kubectl create namespace test-restricted kubectl create namespace test-privileged
Habilite uma política PSA para cada namespace, uma com a
restricted
política e outra com abaseline
política, usando okubectl label
comando.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
Isso configura os namespaces e
test-privileged
para bloquear pods em execução e gerar um aviso voltado para otest-restricted
usuário se algum pod que não atenda à política configurada tentar ser executado.Tente implantar pods no
test-restricted
namespace usando okubectl apply
comando. Esse comando resulta em um erro porque otest-restricted
namespace está configurado para bloquear pods que não atendem àrestricted
política.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
A saída de exemplo a seguir mostra um aviso informando que os pods violam a política configurada:
... 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
Confirme se não há pods em execução no
test-restricted
namespace usando okubectl get pods
comando.kubectl get pods --namespace test-restricted
A saída de exemplo a seguir não mostra pods em execução no
test-restricted
namespace:No resources found in test-restricted namespace.
Tente implantar pods no
test-privileged
namespace usando okubectl apply
comando. Desta vez, os pods devem ser implantados com êxito porque otest-privileged
namespace está configurado para permitir pods que violam aprivileged
política.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
O exemplo de saída a seguir mostra os pods implantados com êxito:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
Confirme se você tem pods em execução no
test-privileged
namespace usando okubectl get pods
comando.kubectl get pods --namespace test-privileged
A saída de exemplo a seguir mostra dois pods em execução no
test-privileged
namespace: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
Remova os
test-restricted
namespaces etest-privileged
usando okubectl delete
comando.kubectl delete namespace test-restricted test-privileged
Próximos passos
Neste artigo, você aprendeu como habilitar a Admissão de Segurança do Pod em um cluster AKS. Para obter mais informações sobre a admissão de segurança do pod, consulte Impor padrões de segurança do pod com rótulos de namespace. Para obter mais informações sobre os Padrões de Segurança do Pod usados pela Admissão de Segurança do Pod, consulte Padrões de Segurança do Pod.
Azure Kubernetes Service