Scan de imagem e IaC — Trivy, Checkov, Terrascan e shift-left de infraestrutura
Imagens de container vulneráveis e código IaC mal configurado são dois dos vetores mais comuns de incidentes em ambientes cloud. Scan automatizado no pipeline captura esses problemas antes do deploy.
Scan de imagem de container com Trivy
O Trivy escaneia a imagem completa: SO base, pacotes, dependências de linguagem e configurações.
# scan local de uma imagem
trivy image nginx:1.25
# saída resumida
nginx:1.25 (debian 12.0)
==========================
Total: 42 (CRITICAL: 3, HIGH: 15, MEDIUM: 20, LOW: 4)
┌──────────────────┬────────────────┬──────────┬───────────────────┐
│ Library │ Vulnerability │ Severity │ Fixed Version │
├──────────────────┼────────────────┼──────────┼───────────────────┤
│ openssl │ CVE-2023-0464 │ CRITICAL │ 3.0.9-1 │
│ libexpat1 │ CVE-2023-52425 │ HIGH │ 2.5.0-1 │
└──────────────────┴────────────────┴──────────┴───────────────────┘
# GitHub Actions — Trivy no pipeline
- name: Scan container image
uses: aquasecurity/trivy-action@master
with:
image-ref: "myapp:${{ github.sha }}"
format: "sarif"
output: "trivy-results.sarif"
severity: "CRITICAL,HIGH"
exit-code: "1"
Boas práticas para imagens seguras
1. Use imagem base mínima: alpine, distroless ou scratch
2. Nunca rode como root (USER nonroot)
3. Copie apenas o necessário — .dockerignore rigoroso
4. Multi-stage build: artefatos de compilação não entram na imagem final
5. Tag fixa: FROM node:20.12.0-alpine3.19 — nunca :latest
6. Rebuild periódico para pegar atualizações do SO base
Scan de IaC com Checkov
O Checkov analisa Terraform, CloudFormation, Kubernetes YAML, Dockerfile e outros formatos de IaC.
# scan de um diretório Terraform
checkov -d ./infra --framework terraform
# saída
Check: CKV_AWS_18: "Ensure the S3 bucket has access logging enabled"
FAILED for resource: aws_s3_bucket.app_data
File: /infra/storage.tf, Line 5
Check: CKV_AWS_57: "Ensure S3 bucket has MFA delete enabled"
FAILED for resource: aws_s3_bucket.app_data
File: /infra/storage.tf, Line 5
# GitHub Actions — Checkov no pipeline
- name: Checkov IaC scan
uses: bridgecrewio/checkov-action@master
with:
directory: infra/
framework: terraform
soft_fail: false # falha o pipeline em violações CRÍTICAS
output_format: sarif
output_file_path: checkov.sarif
Scan de IaC com Terrascan
Alternativa ao Checkov, com foco em políticas OPA/Rego:
terrascan scan -i terraform -d ./infra \
--policy-type aws \
--severity HIGH \
--output json
Shift-left de infraestrutura: validação no IDE
Plugins para VS Code e JetBrains executam Checkov/Terrascan enquanto o desenvolvedor edita o arquivo .tf ou .yaml:
Fluxo de feedback:
Desenvolvedora escreve aws_security_group com ingress 0.0.0.0/0
→ IDE marca em vermelho: CKV_AWS_25 (SSH aberto para o mundo)
→ Corrige antes de commitar
→ Pipeline confirma ausência de violação
Cobertura de verificações comuns
Checkov / Terrascan verificam, entre outros:
AWS:
- S3 sem block public access
- RDS sem criptografia
- Security group com 0.0.0.0/0 em portas sensíveis
- IAM com permissões * (wildcard)
- CloudTrail desabilitado
Kubernetes:
- Pod rodando como root
- Container sem limits de CPU/memória
- Imagem com tag :latest
- readOnlyRootFilesystem: false
- Capabilities não dropadas
Resumo
Trivy encontra vulnerabilidades em imagens. Checkov e Terrascan detectam más configurações em IaC. Ambos integrados ao pipeline — e ao IDE — garantem que infraestrutura insegura nunca chegue ao ambiente antes de ser identificada e corrigida.