Avançado DevSecOps

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.