Pular para o conteúdo
EdgeServers
Blog

Uma supply chain de Docker prática: assinada, escaneada, atestada

6 de maio de 2026 · 2 min de leitura · por Sudhanshu K.

«Minha imagem passa no scan» não é uma supply chain. Supply chain é linhagem comprovável do commit fonte até o container rodando. Este é o mínimo que entregamos para cada cliente.

Os quatro artefatos

Para cada imagem que construímos, produzimos:

  1. A imagem em si, tagueada de forma imutável (SHA do commit, não latest)
  2. Um SBOM (Software Bill of Materials) em formato SPDX ou CycloneDX
  3. Um relatório de scan de vulnerabilidades (Trivy ou Grype)
  4. Uma assinatura (Cosign) sobre o digest + uma atestação assinada ligando imagem ao SBOM + scan + commit

Tudo isso é publicado junto à imagem no registry sob as relações OCI padrão.

Pipeline de build

No GitHub Actions:

- run: docker buildx build --output type=registry,name=${IMG} .
- run: syft ${IMG} -o cyclonedx-json > sbom.json
- run: trivy image --format json ${IMG} > scan.json
- run: cosign sign --yes ${IMG}
- run: cosign attest --predicate sbom.json --type cyclonedx --yes ${IMG}
- run: cosign attest --predicate scan.json --type vuln --yes ${IMG}

Assinatura keyless via Fulcio + Rekor significa que a identidade assinante é o token OIDC do GitHub Actions. Nenhuma chave de longa duração para rotacionar.

Política de admissão

O cluster Kubernetes roda Kyverno (ou OPA Gatekeeper) com uma política que recusa qualquer pod cuja imagem:

  • Não esteja assinada por uma identidade esperada (a workload identity do pipeline de build)
  • Tenha alguma CVE crítica na atestação de scan com mais de 7 dias
  • Não tenha atestação de SBOM nenhuma

Isso significa que um desenvolvedor não consegue empurrar uma imagem não assinada para produção mesmo com permissões kubectl apply. O cluster rejeitará o pod antes de escaloná-lo.

O que monitoramos

  • Novas CVEs que afetam imagens já implantadas (a base do Trivy atualiza diariamente; re-escaneamos no lugar)
  • Imagens em produção que não foram reconstruídas há N dias
  • Falhas de verificação de assinatura (alertas para PagerDuty)
  • Drift entre o SBOM no momento do build e o que de fato roda (geralmente um apt install infiltrado)

O post completo no Medium tem as políticas Kyverno literais, o setup do Cosign keyless, e o dashboard que usamos para acompanhar a cobertura de assinaturas em toda a frota.

Full article available

Read the full article