Pré-requisitos
Antes de começar a gerar atestados de artefato, você precisa entender o que eles são e quando você deve usá-los. Confira Atestados de artefatos.
Gerar atestados de artefatos para seus builds.
Você pode usar GitHub Actions para gerar atestados de artefato que estabeleçam a origem da compilação para artefatos como binários e imagens de contêiner.
Para gerar um atestado de artefato, você deve fazer o seguinte:
- Verificar se as permissões apropriadas estão configuradas em seu fluxo de trabalho.
- Incluir uma etapa em seu fluxo de trabalho que use a ação
attest-build-provenance
.
Quando você executar seus fluxos de trabalho atualizados, eles criarão seus artefatos e gerarão um atestado de artefato que estabelece a origem da compilação. Você pode exibir os atestados na guia Ações do repositório. Para obter mais informações, consulte o repositório attest-build-provenance
.
Gerar origem de compilação para binários
-
No fluxo de trabalho que cria o binário que você deseja atestar, adicione as permissões a seguir.
permissions: id-token: write contents: read attestations: write
-
Após a etapa em que o binário foi criado, adicione a etapa a seguir.
- name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-path: 'PATH/TO/ARTIFACT'
O valor do parâmetro
subject-path
deve ser definido como o caminho do binário que você deseja atestar.
Gerar origem de compilação para imagens de contêiner
-
No fluxo de trabalho que cria a imagem do contêiner que você deseja atestar, adicione as permissões a seguir.
permissions: id-token: write contents: read attestations: write packages: write
-
Após a etapa em que a imagem foi criada, adicione a etapa a seguir.
- name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} subject-digest: 'sha256:fedcba0...' push-to-registry: true
O valor do parâmetro
subject-name
deve especificar o nome completo da imagem. Por exemplo,ghcr.io/user/app
ouacme.azurecr.io/user/app
. Não inclua uma marca como parte do nome da imagem.O valor do parâmetro
subject-digest
deve ser definido como o resumo SHA256 do assunto para o atestado, no formatosha256:HEX_DIGEST
. Se seu fluxo de trabalho usardocker/build-push-action
, você poderá usar a saídadigest
dessa etapa para fornecer o valor. Para obter mais informações sobre como usar saídas, confira Sintaxe de fluxo de trabalho para o GitHub Actions.
Gerar um atestado para uma SBOM (lista de materiais de software)
É possível gerar atestados de SBOM assinados para artefatos de fluxo de trabalho.
Para gerar um atestado para uma SBOM, você deve:
- Verificar se as permissões apropriadas estão configuradas em seu fluxo de trabalho.
- Criar uma SBOM para seu artefato. Para obter mais informações, consulte
anchore-sbom-action
no GitHub Marketplace. - Incluir uma etapa em seu fluxo de trabalho que use a ação
attest-sbom
.
Quando você executar seus fluxos de trabalho atualizados, eles criarão seus artefatos e gerarão um atestado de SBOM. Você pode exibir os atestados na guia Ações do repositório. Para obter mais informações, consulte o repositório da ação attest-sbom
.
Gerar um atestado de SBOM para binários
-
No fluxo de trabalho que cria o binário que você deseja atestar, adicione as permissões a seguir.
permissions: id-token: write contents: read attestations: write
-
Após a etapa em que o binário foi criado, adicione a etapa a seguir.
- name: Generate SBOM attestation uses: actions/attest-sbom@v2 with: subject-path: 'PATH/TO/ARTIFACT' sbom-path: 'PATH/TO/SBOM'
O valor do parâmetro
subject-path
deve ser definido como o caminho do binário descrito pela SBOM. O valor do parâmetrosbom-path
deve ser definido como o caminho do arquivo de SBOM que você gerou.
Gerar um atestado de SBOM para imagens de contêiner
-
No fluxo de trabalho que cria a imagem do contêiner que você deseja atestar, adicione as permissões a seguir.
permissions: id-token: write contents: read attestations: write packages: write
-
Após a etapa em que a imagem foi criada, adicione a etapa a seguir.
- name: Generate SBOM attestation uses: actions/attest-sbom@v2 with: subject-name: ${{ env.REGISTRY }}/PATH/TO/IMAGE subject-digest: 'sha256:fedcba0...' sbom-path: 'sbom.json' push-to-registry: true
O valor do parâmetro
subject-name
deve especificar o nome completo da imagem. Por exemplo,ghcr.io/user/app
ouacme.azurecr.io/user/app
. Não inclua uma marca como parte do nome da imagem.O valor do parâmetro
subject-digest
deve ser definido como o resumo SHA256 do assunto para o atestado, no formatosha256:HEX_DIGEST
. Se seu fluxo de trabalho usardocker/build-push-action
, você poderá usar a saídadigest
dessa etapa para fornecer o valor. Para obter mais informações sobre como usar saídas, confira Sintaxe de fluxo de trabalho para o GitHub Actions.O valor do parâmetro
sbom-path
deve ser definido como o caminho para o arquivo de SBOM formatado em JSON que você deseja atestar.
Verificar atestados de artefatos com o GitHub CLI
Você pode validar atestados de artefato para binários e imagens de contêiner e validar atestados SBOM usando a GitHub CLI. Para obter mais informações, consulte a seção attestation
do manual do GitHub CLI.
Observação
Esses comandos presumem que você esteja em um ambiente online. Se você estiver em um ambiente offline ou desconectado, confira Verificação de atestados offline.
Verificando um atestado de artefato para binários
Para verificar atestados de artefatos para binários, use o comando do GitHub CLI a seguir.
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
Verificando um atestado de artefato para imagens de contêiner
Para verificar atestados de artefatos para imagens de contêiner, você deve fornecer o FQDN da imagem prefixado com oci://
em vez do caminho para um binário. Você pode usar o comando do GitHub CLI a seguir.
docker login ghcr.io gh attestation verify oci://ghcr.io/ORGANIZATION_NAME/IMAGE_NAME:test -R ORGANIZATION_NAME/REPOSITORY_NAME
docker login ghcr.io
gh attestation verify oci://ghcr.io/ORGANIZATION_NAME/IMAGE_NAME:test -R ORGANIZATION_NAME/REPOSITORY_NAME
Verificando um atestado para SBOMs
Para verificar os atestados do SBOM, você precisa fornecer o sinalizador --predicate-type
para fazer referência a um predicado não padrão. Para obter mais informações, confira Predicados vetados no repositório in-toto/attestation
.
Por exemplo, a ação attest-sbom
atualmente dá suporte a predicados SPDX ou CycloneDX SBOM. Para verificar um atestado SBOM no formato SPDX, você pode usar o seguinte comando da GitHub CLI.
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \ -R ORGANIZATION_NAME/REPOSITORY_NAME \ --predicate-type https://spdx.dev/Document/v2.3
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \
-R ORGANIZATION_NAME/REPOSITORY_NAME \
--predicate-type https://spdx.dev/Document/v2.3
Para exibir mais informações sobre o atestado, faça referência ao sinalizador --format json
. Isso pode ser especialmente útil ao examinar atestados do SBOM.
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \ -R ORGANIZATION_NAME/REPOSITORY_NAME \ --predicate-type https://spdx.dev/Document/v2.3 \ --format json \ --jq '.[].verificationResult.statement.predicate'
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \
-R ORGANIZATION_NAME/REPOSITORY_NAME \
--predicate-type https://spdx.dev/Document/v2.3 \
--format json \
--jq '.[].verificationResult.statement.predicate'
Próximas etapas
Para manter seus atestados relevantes e gerenciáveis, exclua atestados que não são mais necessários. Confira Como gerenciar o ciclo de vida dos atestados de artefato.