Lab 9.3 - Pod Security Standards
Objetivos do Lab
Ao final deste lab, você será capaz de:
- Compreender os Pod Security Standards (PSS).
- Aplicar políticas de segurança no nível do namespace.
- Testar os diferentes níveis (privileged, baseline, restricted).
- Entender as restrições de segurança.
Duração Estimada
45-60 minutos
Pré-requisitos
- kubectl instalado e configurado.
- Cluster Kubernetes 1.23+ (para PSS).
- Conhecimentos sobre Pod Security (Capítulo 9.3).
Parte 1: Compreendendo os Pod Security Standards
O Kubernetes define três níveis de segurança:
- privileged: Nenhuma restrição (desativado por padrão).
- baseline: Restrições mínimas para prevenir vulnerabilidades conhecidas.
- restricted: Restrições rígidas seguindo as melhores práticas.
Parte 2: Aplicação no Namespace
Etapa 2.1: Criar um Namespace com PSS
Crie um namespace com o nível baseline:
kubectl create namespace pss-test
Aplique o Pod Security Standard:
kubectl label namespace pss-test pod-security.kubernetes.io/enforce=baseline
kubectl label namespace pss-test pod-security.kubernetes.io/audit=baseline
kubectl label namespace pss-test pod-security.kubernetes.io/warn=baseline
Verifique:
kubectl get namespace pss-test --show-labels
Parte 3: Teste com Baseline
Etapa 3.1: Criar um Pod Compatível com Baseline
Crie pod-baseline.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod-baseline
namespace: pss-test
spec:
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
securityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
Aplique:
kubectl apply -f pod-baseline.yaml
Parte 4: Teste com Restricted
Etapa 4.1: Alterar o Nível para Restricted
Altere o nível para restricted:
kubectl label namespace pss-test pod-security.kubernetes.io/enforce=restricted --overwrite
Etapa 4.2: Testar um Pod Não Compatível
Crie pod-non-compliant.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod-non-compliant
namespace: pss-test
spec:
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
# Falta securityContext exigido para restricted
Tente criar o Pod:
kubectl apply -f pod-non-compliant.yaml
O Pod deve ser rejeitado com um erro de segurança.
Parte 5: Pod Compatível com Restricted
Crie pod-restricted.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod-restricted
namespace: pss-test
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1000
capabilities:
drop:
- ALL
Aplique:
kubectl apply -f pod-restricted.yaml
Parte 6: Limpeza
kubectl delete pod pod-baseline -n pss-test
kubectl delete pod pod-restricted -n pss-test
kubectl delete namespace pss-test
Resumo do Lab
Neste lab, você aplicou os Pod Security Standards no nível dos namespaces. Você testou os diferentes níveis de segurança e entendeu as restrições.
Próximos Passos
O último lab deste módulo mostrará como realizar um audit de segurança.
Lab 9.4: Audit de Segurança
Lab criado em: Dezembro 2024