Pular para o conteúdo
Tecnologia

Container comprometido = servidor comprometido. Aprenda técnicas de segurança que impedem 99% dos ataques.

Conceitos Principais

Attack Surface

Imagem vulnerável, daemon Docker, kernel exploits, network exposure. Minimize cada camada.

Least Privilege

Non-root user, read-only filesystem, capabilities mínimas. Princípio de menor privilégio.

Image Provenance

Base images oficiais ou verified publishers. Content trust (notary). Scan de vulnerabilidades.

Runtime Security

Seccomp, AppArmor, SELinux. Syscall filtering. Container escape mitigation.

Passo a Passo

  1. Imagens Seguras: Use distroless ou Alpine. Scan com Trivy: trivy image --severity HIGH,CRITICAL app. Fix CVEs antes de deploy.
  2. Non-Root User: Dockerfile: RUN adduser -D appuser, USER appuser. Nunca USER root. Testa: docker exec container whoami.
  3. Read-Only Filesystem: docker run --read-only --tmpfs /tmp app. App não pode escrever em /. Logs para stdout, dados em volumes.
  4. Secrets Management: Docker secrets (Swarm) ou Vault. NUNCA env vars. docker secret create db_pass pass.txt. Mount em /run/secrets.
  5. Network Isolation: Custom networks. Expose apenas portas necessárias. Firewall rules. Use internal networks para backends.

Boas Praticas

Recomendacoes

• Content trust: DOCKER_CONTENT_TRUST=1

• Scan images no CI/CD

• Rootless Docker para dev

• AppArmor profile custom

• Audit logs do daemon

• Rotate secrets regularmente

• Principle of least privilege sempre

Erros Comuns

Evite estes erros

• ADD ao invés de COPY (executa scripts)

• curl | sh no Dockerfile

• EXPOSE 0.0.0.0 desnecessariamente

• Secrets em env vars ou layers

• --privileged mode

Checklist

  • Imagens de fontes confiáveis
  • Scan de vulnerabilidades zero critical
  • Non-root user configurado
  • Read-only filesystem quando possível
  • Secrets via Docker secrets ou Vault
  • Network isolation implementada
  • AppArmor/SELinux profiles ativos
  • Daemon em TLS mode
  • Audit logging ativo