Salta ai contenuti

Verificando uma versão

Questi contenuti non sono ancora disponibili nella tua lingua.

Desde a 0.9.0, tudo o que uma versão publica é assinado ou atestado pelo workflow de release do repositório (.github/workflows/release.yml), com assinatura sem chave do Sigstore. Não há chave de assinatura de longa duração para obter, proteger ou rotacionar: a identidade de assinatura é o próprio workflow do GitHub Actions, registrada em um certificado de curta duração e no log público de transparência do Sigstore. Verificar significa conferir que o artefato foi construído por esse workflow, a partir de uma tag v* de selfhostr/dumbmonit.

Cada binário na release do GitHub acompanha <arquivo>.sigstore.json (o pacote de assinatura) e <arquivo>.sha256, e a release traz dumbmonit-agent.intoto.jsonl, a proveniência de build SLSA.

Janela do terminal
cosign verify-blob dumbmonit-agent-linux-x86_64 \
--bundle dumbmonit-agent-linux-x86_64.sigstore.json \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp '^https://github.com/selfhostr/dumbmonit/\.github/workflows/release\.yml@refs/tags/v'
# or, with the GitHub CLI (checks the provenance attestation)
gh attestation verify dumbmonit-agent-linux-x86_64 -R selfhostr/dumbmonit
# or against the provenance attached to the release
gh attestation verify dumbmonit-agent-linux-x86_64 -R selfhostr/dumbmonit \
--bundle dumbmonit-agent.intoto.jsonl

Uma execução bem-sucedida imprime a identidade do workflow e a tag. Se falhar, não instale o arquivo e relate o problema.

As imagens do servidor e do agente trazem uma atestação de proveniência de build enviada ao ghcr.io, e um SBOM SPDX e a proveniência SLSA completa anexados ao índice da imagem.

Janela do terminal
gh attestation verify oci://ghcr.io/selfhostr/dumbmonit:0.9.0 -R selfhostr/dumbmonit
# the SBOM and the provenance recorded by the build
docker buildx imagetools inspect ghcr.io/selfhostr/dumbmonit:0.9.0 \
--format '{{ json .SBOM }}'
docker buildx imagetools inspect ghcr.io/selfhostr/dumbmonit:0.9.0 \
--format '{{ json .Provenance }}'

Fixe uma imagem pelo digest no seu arquivo Compose se quiser que o que você verificou seja exatamente o que roda.

As versões anteriores à 0.9.0 (v0.1.0-alpha.N), e os arquivos que o workflow de publicação não assinou por conta própria (como provenance.json), recebem seu <arquivo>.sigstore.json de um workflow separado, executado manualmente (.github/workflows/sign-releases.yml). A assinatura dele diz apenas que o arquivo estava na versão quando esse workflow rodou, não que foi compilado a partir da tag: verifique-a com a identidade desse workflow e compare o arquivo com o .sha256 que o acompanha.

Janela do terminal
cosign verify-blob dumbmonit-agent-linux-x86_64 \
--bundle dumbmonit-agent-linux-x86_64.sigstore.json \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp '^https://github.com/selfhostr/dumbmonit/\.github/workflows/sign-releases\.yml@refs/heads/(main|dev)$'

Essas versões não têm proveniência de build: gh attestation verify não se aplica a elas.

As tags de versão (v0.9.0, …) são anotadas, não assinadas com GPG, e só os administradores do repositório podem criá-las (um ruleset reserva v*). A confiança em uma versão se apoia nos artefatos assinados acima, cujo certificado nomeia a tag a partir da qual foram construídos, e não na assinatura da tag.