Capítulo 9.4 - Pod Security Standards
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender os Pod Security Standards (PSS)
- Aplicar os níveis de segurança (Privileged, Baseline, Restricted)
- Configurar o admission control
- Entender as restrições de segurança
- Migrar para Pods mais seguros
- Utilizar Pod Security Policies (obsoleto)
Introdução
Os Pod Security Standards (PSS) definem três níveis de segurança para os Pods no Kubernetes. Eles substituem as Pod Security Policies (obsoletas).
Níveis de Segurança
Privileged
Sem restrições. Permite todas as capacidades.
Casos de uso: Sistemas de baixo nível, debugging.
Baseline
Restrições mínimas. Impede as configurações mais perigosas.
Recomendado para: A maioria das aplicações.
Restricted
Restrições máximas. Segue as melhores práticas de segurança.
Recomendado para: Aplicações críticas, ambientes sensíveis.
Configuração no Nível do Namespace
Via Labels
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
Labels:
enforce: Aplica o nível (bloqueia Pods não conformes)audit: Registra as violaçõeswarn: Exibe um aviso
Via Admission Control
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: PodSecurity
configuration:
defaults:
enforce: "restricted"
enforce-version: "latest"
audit: "restricted"
audit-version: "latest"
warn: "restricted"
warn-version: "latest"
exemptions:
usernames: []
runtimeClasses: []
namespaces: ["kube-system"]
Restrições Baseline
Exemplos de Restrições
- Sem
hostPID,hostIPC,hostNetwork - Sem volumes hostPath
- Sem capabilities perigosas
- Sem runAsUser=0 (root)
Exemplo: Pod Baseline
apiVersion: v1
kind: Pod
metadata:
name: baseline-pod
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: my-app:1.0
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
Restrições Restricted
Restrições Adicionais
runAsNonRoot: trueobrigatórioseccompProfile: RuntimeDefaultobrigatório- Sem volumes hostPath
- Sem capabilities
readOnlyRootFilesystem: truerecomendado
Exemplo: Pod Restricted
apiVersion: v1
kind: Pod
metadata:
name: restricted-pod
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: my-app:1.0
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
capabilities:
drop:
- ALL
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
Migração Progressiva
Etapa 1: Audit
apiVersion: v1
kind: Namespace
metadata:
name: my-app
labels:
pod-security.kubernetes.io/audit: baseline
pod-security.kubernetes.io/warn: baseline
Resultado: As violações são registradas, mas os Pods são aceitos.
Etapa 2: Warning
metadata:
labels:
pod-security.kubernetes.io/warn: restricted
Resultado: As violações exibem avisos.
Etapa 3: Enforcement
metadata:
labels:
pod-security.kubernetes.io/enforce: restricted
Resultado: Os Pods não conformes são rejeitados.
Comandos Úteis
Verificação
# Ver os labels de segurança
kubectl get namespace production -o yaml | grep pod-security
# Verificar a conformidade de um Pod
kubectl get pod my-pod -o yaml | grep -A 10 securityContext
# Testar um Pod
kubectl apply -f pod.yaml --dry-run=server
Boas Práticas
1. Comece com Baseline
Comece pelo Baseline, depois migre para Restricted.
2. Migração Progressiva
Use audit → warn → enforce para uma migração suave.
3. Exceções
Defina exceções para namespaces de sistema.
4. Documentação
Documente os motivos das exceções.
5. Monitoramento
Monitore as violações para identificar problemas.
Resumo
Neste capítulo, você aprendeu:
Pod Security Standards: Três níveis (Privileged, Baseline, Restricted)
Configuração: Via labels no namespace ou admission control
Baseline: Restrições mínimas, recomendado para a maioria
Restricted: Restrições máximas, melhores práticas
Migração: Audit → Warn → Enforce
Boas práticas: Início progressivo, exceções, monitoramento
Próximos Passos
Módulo 10: Helm e Gerenciamento de Pacotes
Lab 9.4: Auditoria de Segurança
Capítulo criado em: Dezembro de 2024