Pular para o conteúdo principal
Este documento descreve como verificar as assinaturas criptográficas e as atestações geradas pelo pipeline de publicação de imagens vantage-packager.

Visão geral

O pipeline vantage-packager cria vários artefatos de segurança para cada imagem publicada:
  • Assinatura de imagem de contêiner: Assinatura criptográfica usando Cosign
  • Atestação de SBOM em SPDX: Lista de materiais de software (SBOM) no formato SPDX 2.3
  • Atestação de varredura de vulnerabilidades: Resultados de varredura de segurança no formato SARIF
Todos os artefatos são assinados com a mesma chave privada e podem ser verificados com a chave pública correspondente.

Pré-requisitos

Você precisará das seguintes ferramentas instaladas:
  • cosign - para verificação de assinaturas e atestações
  • jq - para processamento e análise de JSON
  • curl - para baixar artefatos (opcional)

Verificação de assinatura

Verificação básica

Verifique a assinatura de uma imagem usando a chave pública:
# Verificar assinatura (pular log de transparência para registros privados)
cosign verify --key cosign.key.pub --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Com a verificação de TLS desativada

Para registries com certificados autoassinados:
cosign verify --key cosign.key.pub --insecure-ignore-tlog --allow-insecure-registry \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
Resultado esperado:
[{
  "critical": {
    "identity": {
      "docker-reference": "abyvtgonprm27.azurecr.io/vantage-installer"
    },
    "image": {
      "docker-manifest-digest": "sha256:a4190ad9d5289d7ad2d02d05749c10713a7aac217e8010b5e4ef15161b181c94"
    },
    "type": "cosign container image signature"
  }
}]

Verificação da atestação

Atestação de SBOM SPDX

Verifique a atestação do Software Bill of Materials (SBOM) no formato SPDX:
# Verificar atestação SPDX
cosign verify-attestation --key cosign.key.pub --type spdx --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Atestado de varredura de vulnerabilidades

Verifique o atestado da varredura de vulnerabilidades:
# Verificar o atestado de varredura de vulnerabilidade
cosign verify-attestation --key cosign.key.pub --type vuln --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Obtendo dados de atestação

Baixar SBOM SPDX

Extraia o SBOM SPDX da atestação:
# Fazer download e extrair SPDX SBOM
cosign download attestation --predicate-type spdx \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1 | \
  jq -r '.payload' | base64 -d | jq -r '.predicate' > sbom.json

Baixar a varredura de vulnerabilidades

Extraia os resultados da varredura de vulnerabilidades:
# Baixar e extrair verificação de vulnerabilidades
cosign download attestation --predicate-type vuln \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1 | \
  jq -r '.payload' | base64 -d | jq -r '.predicate' > vuln-scan.sarif

Analisando dados de SBOM no formato SPDX

Informações básicas do SBOM

# Visualizar metadados SBOM
jq '{
  name: .name,
  spdxVersion: .spdxVersion,
  creationInfo: .creationInfo,
  packageCount: (.packages | length)
}' sbom.json

Listar todos os pacotes

# Lista todos os pacotes com versões
jq -r '.packages[] | "\(.name) \(.versionInfo // "unknown")"' sbom.json | sort

Localizar pacotes com vulnerabilidades conhecidas

# Lista pacotes com identificadores CPE (referências de vulnerabilidades)
jq -r '.packages[] | select(.externalRefs[]?.referenceType == "cpe23Type") |
  "\(.name) \(.versionInfo // "unknown") - \(.externalRefs[0].referenceLocator)"' sbom.json

Informações da licença

# Exibir pacotes com licenças declaradas
jq -r '.packages[] | select(.licenseDeclared != "NOASSERTION") |
  "\(.name): \(.licenseDeclared)"' sbom.json

Analisando dados de varredura de vulnerabilidades

Informações básicas da varredura

# Visualizar metadados da verificação
jq '{
  version: .version,
  tool: .runs[0].tool.driver.name,
  toolVersion: .runs[0].tool.driver.version,
  resultCount: (.runs[0].results | length)
}' vuln-scan.sarif

Listar vulnerabilidades

# Lista todas as vulnerabilidades encontradas
jq -r '.runs[0].results[] |
  "\(.ruleId) - \(.level // "unknown") - \(.message.text)"' vuln-scan.sarif

Vulnerabilidades de Alta Severidade

# Mostrar apenas vulnerabilidades de alta gravidade
jq -r '.runs[0].results[] | select(.level == "error") |
  "\(.ruleId): \(.message.text)"' vuln-scan.sarif

Ferramentas de visualização de SBOM

Ferramentas de linha de comando

Utilitário CycloneDX SBOM

Instale e use o utilitário CycloneDX SBOM para análises avançadas:
# Instalar sbom-utility (se disponível)
go install github.com/CycloneDX/sbom-utility@latest

# Validar SBOM SPDX
sbom-utility validate --input-file sbom.json

# Gerar relatório de componentes
sbom-utility query --input-file sbom.json --select "name,version" --from "packages"

Análise personalizada com jq

# Criar uma visualização de árvore de dependências
jq -r '.packages[] |
  select(.name != null) |
  "\(.name)@\(.versionInfo // "unknown") (\(.supplier // "unknown"))"' sbom.json |
  sort | uniq

Visualização na Web

Visualizador online do SBOM.sh

  1. Acesse https://sbom.sh/
  2. Faça upload do seu arquivo sbom.json
  3. Explore a visualização interativa de componentes e dependências

Descoberta de Referências de Artefatos

Localizar artefatos de assinatura

# Localizar referência de artefato de assinatura
cosign triangulate --type signature \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Localizar artefatos de atestação

# Encontrar referência de artefato de atestação
cosign triangulate --type attestation \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1