Pular para o conteúdo principal

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ções
  • warn: 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: true obrigatório
  • seccompProfile: RuntimeDefault obrigatório
  • Sem volumes hostPath
  • Sem capabilities
  • readOnlyRootFilesystem: true recomendado

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