Pular para o conteúdo principal

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