Pré-requisitos
Antes de começar este guia, você deve ter familiaridade com:
- Os benefícios de uso e segurança dos atestados de artefato. Confira Atestados de artefatos.
- Gerar atestados de artefatos Confira Usar atestados de artefatos para estabelecer a procedência de compilações.
- Escrever e usar fluxos de trabalho reutilizáveis. Confira Reutilizar fluxos de trabalho.
Etapa 1: Configurar seus builds
Primeiro, precisamos compilar com atestados de artefatos e um fluxo de trabalho reutilizável.
Compilar com um fluxo de trabalho reutilizável
Se você ainda não estiver usando fluxos de trabalho reutilizáveis para compilar seu software, precisará executar suas etapas de build e movê-las para um fluxo de trabalho reutilizável.
Compilar com atestados de artefatos.
O fluxo de trabalho reutilizável que você usa para criar seu software também deve gerar atestados de artefato para estabelecer a procedência do build.
Quando você usa um fluxo de trabalho reutilizável para gerar atestados de artefatos, o fluxo de trabalho de chamada e o fluxo de trabalho reutilizável precisam ter as permissões a seguir.
permissions: attestations: write contents: read id-token: write
permissions:
attestations: write
contents: read
id-token: write
Se você estiver compilando imagens de contêiner, também precisará incluir a permissão packages: write
.
Etapa 2: Verificar atestados de artefato compilados com um fluxo de trabalho reutilizável
Para verificar os atestados de artefato gerados com seus builds, você pode usar gh attestation verify
da CLI do GitHub.
O comando gh attestation verify
exige o uso de um sinalizador --owner
ou --repo
. Esses sinalizadores fazem duas coisas.
- Eles informam a
gh attestation verify
o local em que o atestado deve ser buscado. Isso será sempre o seu fluxo de trabalho de chamador. - Eles informam a
gh attestation verify
o local de origem do fluxo de trabalho que fez a assinatura. Esse sempre será o fluxo de trabalho que usa a açãoattest-build-provenance
, que pode ser um fluxo de trabalho reutilizável.
Você não pode usar sinalizadores opcionais com o comando gh attestation verify
.
- Se o fluxo de trabalho reutilizável não estiver no mesmo repositório que o fluxo de trabalho do chamador, use o sinalizador
--signer-repo
para especificar o repositório que contém o fluxo de trabalho reutilizável. - Se você quiser exigir que um fluxo de trabalho específico assine um atestado de artefato, use o sinalizador
--signer-workflow
para indicar o arquivo de fluxo de trabalho que deve ser usado.
Por exemplo, se o fluxo de trabalho de chamada for ORGANIZATION_NAME/REPOSITORY_NAME/.github/workflows/calling.yml
e usar REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml
, você poderá fazer:
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
Se você quiser especificar o fluxo de trabalho exato:
gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY