- Minimal base image (alpine)
- No :latest tag
- Non-root user
- HEALTHCHECK in place
- Trivy scan with no critical vulnerabilities
- Complete .dockerignore
- Resource limits on each container
- No privileged containers
- NetworkPolicies in place
- Secrets via Secret Manager (not in plain text)
- RBAC configured
- Secrets in GitHub Secrets (not in the code)
- Automatic dependency scan
- Automatic image scan
- Secret detection (gitleaks)
- Environments with protection
- Encrypted Terraform state
- No hard-coded credentials in IaC files
- Principle of least privilege (IAM)