Introdução
Os atestados de artefatos são uma ótima forma de garantias de procedência e integridade infalsificáveis para o software que você cria.
Por padrão, os atestados são armazenados na API de atestado do GitHub, que gh attestation verify
consultará quando você for verificar o atestado. Esse comando também entrará em contato com os servidores do GitHub para verificar se há material de chaves atualizado a ser usado para verificar o atestado.
Esse comando pode funcionar sem conectividade com a Internet, mas é necessário preencher manualmente o pacote de atestados e o material de chaves na raiz confiável.
Antes de iniciar este guia, você deve criar com a geração de atestados de artefato. Confira Usar atestados de artefatos para estabelecer a procedência de compilações.
Etapa 1: baixar o pacote de atestados
Primeiro, obtenha o pacote de atestado da API do atestado.
Você pode fazer isso com o seguinte comando em uma máquina que está online:
gh attestation download PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
gh attestation download PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
Este é um exemplo de saída desse comando:
Wrote attestations to file sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl.
Any previous content has been overwritten
The trusted metadata is now available at sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl
Etapa 2: baixar raízes confiáveis
Depois, obtenha o material de chaves das raízes confiáveis.
Os atestados de artefato usam a instância de bens públicos do Sigstore para repositórios públicos e a instância do Sigstore no GitHub para repositórios privados. É possível usar um comando para obter as duas raízes confiáveis:
gh attestation trusted-root > trusted_root.jsonl
gh attestation trusted-root > trusted_root.jsonl
Atualização de informações da raiz confiável em um ambiente offline
É uma prática recomendada gerar um novo arquivo de trusted_root.jsonl
sempre que você importar um novo material assinado para seu ambiente off-line.
O material de chaves em trusted_root.jsonl
não tem uma data do término interna, portanto, qualquer coisa assinada antes de você gerar o arquivo de raiz confiável continuará sendo verificada. Qualquer coisa assinada após a geração do arquivo será verificada até que a instância do Sigstore gire o respectivo material de chaves, o que geralmente acontece algumas vezes por ano. Você não saberá se o material de chaves foi revogado desde a última vez que gerou o arquivo de raiz confiável.
Etapa 3: fazer verificação offline
Agora, você está com tudo pronto para verificar o artefato offline.
Você deve importar para seu ambiente offline:
- GitHub CLI
- Seu artefato
- O arquivo do pacote
- O arquivo de raiz confiável
Depois, você pode fazer a verificação offline com o seguinte comando:
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME --bundle sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl --custom-trusted-root trusted_root.jsonl
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME --bundle sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl --custom-trusted-root trusted_root.jsonl
Conclusão
Você está verificando atestados de artefato em um ambiente offline. Recomendamos importar uma nova raiz confiável sempre que você adicionar novos artefatos assinados ao seu ambiente offline.