Aplicando Padrões de Segurança de Pod com `Labels` em Namespace
Os namespaces podem ser rotulados para aplicar os Padrões de segurança de pod. As três políticas privilegiado, linha de base e restrito cobrem amplamente o espectro de segurança e são implementados pela segurança de Pod controlador de admissão.
Antes de você começar
O seu servidor Kubernetes deve estar numa versão igual ou superior a v1.22.
Para verificar a versão, digite kubectl version
.
- Garantir que a
PodSecurity
do portal de funcionalidades esteja habilitada.
Exigindo o padrão de segurança baseline
de pod com rótulos em namespace
Este manifesto define um Namespace my-baseline-namespace
que:
- Bloqueia quaisquer Pods que não satisfazem os requisitos da política
baseline
. - Gera um aviso para o usuário e adiciona uma anotação de auditoria, a qualquer
pod criado que não satisfaça os requisitos da política
restricted
. - Fixa as versões das políticas
baseline
erestricted
à v1.30.
apiVersion: v1
kind: Namespace
metadata:
name: my-baseline-namespace
labels:
pod-security.kubernetes.io/enforce: baseline
pod-security.kubernetes.io/enforce-version: v1.30
# Estamos definindo-os para o nosso nível _desejado_ `enforce`.
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/audit-version: v1.30
pod-security.kubernetes.io/warn: restricted
pod-security.kubernetes.io/warn-version: v1.30
Adicionar Rótulos aos Namespaces Existentes com kubectl label
enforce
(ou version) é adicionada ou modificada,
O plugin de admissão testará cada Pod no namespace contra a nova política.
Violações são devolvidas ao usuário como avisos.
É útil aplicar a flag --dry-run
ao avaliar inicialmente as alterações
do perfil de segurança para namespaces. As verificações padrão de segurança
do pod ainda serão executadas em modo dry run, dando-lhe informações sobre
como a nova política trataria os pods existentes, sem realmente atualizar a política.
kubectl label --dry-run=server --overwrite ns --all \
pod-security.kubernetes.io/enforce=baseline
Aplicando a todos os namespaces
Se você está apenas começando com os padrões de segurança de pod, um primeiro passo
adequado seria configurar todos namespaces com anotações de auditoria para um
nível mais rigoroso, como baseline
:
kubectl label --overwrite ns --all \
pod-security.kubernetes.io/audit=baseline \
pod-security.kubernetes.io/warn=baseline
Observe que isso não está aplicando as definições de nível, para que os namespaces que não foram explicitamente avaliados possam ser distinguidos. Você pode listar os namespaces sem um nível aplicado, explicitamente definido, usando este comando:
kubectl get namespaces --selector='!pod-security.kubernetes.io/enforce'
Aplicando a um único namespace
Você pode atualizar um namespace específico também. Este comando adiciona a política
enforce=restricted
ao my-existing-namespace
, fixando a política que restringe
à versão v1.30.
kubectl label --overwrite ns my-existing-namespace \
pod-security.kubernetes.io/enforce=restricted \
pod-security.kubernetes.io/enforce-version=v1.30