Kubernetes trouxe flexibilidade, mas também um novo conjunto de vetores de ataque. A segurança deve ser integrada ao pipeline, desde a construção da imagem até a execução no cluster.
Principais Camadas de Segurança
- Supply-Chain, escaneamento de vulnerabilidades nas imagens Docker.
- Controle de Acesso (RBAC), permissões mínimas por service account.
- Políticas de Rede,
NetworkPolicypara isolar pods. - Runtime Security, Falco, OPA Gatekeeper para detectar comportamentos anômalos.
- Segurança de Dados, Secrets criptografados com KMS, encriptação de volumes.
Checklist de Segurança Kubernetes
- Habilitar PodSecurityPolicy ou Pod Security Standards.
- Definir Roles e RoleBindings com princípio do menor privilégio.
- Aplicar NetworkPolicy para limitar tráfego intra-namespace.
- Escanear imagens com Trivy ou Clair no CI.
- Implementar OPA Gatekeeper para políticas de validação.
- Configurar Falco para monitorar syscalls suspeitas.
- Rotacionar Secrets regularmente.
- Auditar logs do API Server com audit policy.
Exemplo de RBAC Restrito
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: prod name: read-only-role rules: - apiGroups: [""] resources: ["pods", "services", "configmaps"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-only-binding namespace: prod subjects: - kind: ServiceAccount name: app-sa namespace: prod roleRef: kind: Role name: read-only-role apiGroup: rbac.authorization.k8s.io
Políticas de Rede Simples
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all-except-frontend namespace: prod spec: podSelector: {} policyTypes: - Ingress - Egress ingress: - from: - podSelector: matchLabels: app: frontend
Escaneamento de Imagens no CI
## .gitlab-ci.yml stages: - scan - build - deploy scan_image: stage: scan image: aquasec/trivy:latest script: - trivy image --severity HIGH,CRITICAL myapp:latest
Monitoramento de Runtime com Falco
apiVersion: apps/v1 kind: DaemonSet metadata: name: falco namespace: kube-system spec: selector: matchLabels: app: falco template: metadata: labels: app: falco spec: containers: - name: falco image: falcosecurity/falco:latest securityContext: privileged: true volumeMounts: - name: devfs mountPath: /host/dev - name: procfs mountPath: /host/proc - name: sysfs mountPath: /host/sys volumes: hostPath: path: /proc - name: sysfs hostPath: path: /sys
Conclusão
Segurança em Kubernetes é um processo contínuo. Aplicando camadas de defesa, desde a construção da imagem até políticas de runtime, você reduz drasticamente a superfície de ataque e aumenta a confiança nos ambientes de produção.
Quais práticas de segurança você já adotou no seu cluster? Compartilhe nos comentários!
Leia também
- Zero Trust: Implementando Segurança de Acesso Granular em Ambientes Distribuídos
- Autorização e Permissões em Aplicativos: Controle de Acesso Seguro
- Autorizacao E Permissoes - Melhores Praticas Fundamentos
- Proteção Contra Vazamento de Dados: Guia de Segurança
- Segurança em Aplicativos: Guia de Proteção Mobile
- HashiCorp Vault: Gerenciamento Seguro de Segredos em Aplicações
