先决条件
在开始学习本指南之前,你应该熟悉以下内容:
- 项目证明的用法和安全优势。 请参阅“项目证明”。
- 生成项目证明。 请参阅“使用项目证明确立生成的来源”。
- 编写和使用可重用工作流。 请参阅“重用工作流”。
步骤 1:配置生成
首先,我们需要使用项目证明和可重用工作流进行生成。
使用可重用工作流进行生成
如果尚未使用可重用工作流来生成软件,则需要执行生成步骤并将其移动到可重用工作流中。
使用项目证明进行生成
用于生成软件的可重用工作流还必须生成项目证明来证明生成来源。
使用可重用工作流生成项目证明时,调用方工作流和可重用工作流都需要具有以下权限。
permissions: attestations: write contents: read id-token: write
permissions:
attestations: write
contents: read
id-token: write
如果要生成容器映像,则还需要包含 packages: write
权限。
步骤 2:验证使用可重用工作流生成的项目证明
要验证使用生成结果生成的项目证明,可以从 GitHub CLI 使用 gh attestation verify
。
gh attestation verify
命令需要结合使用 --owner
或 --repo
标志。 这些标志有两个作用。
- 它们会告诉
gh attestation verify
从何处提取证明。 这始终是调用方的工作流。 - 它们会告诉
gh attestation verify
进行签名的工作流来自何处。 这始终是使用attest-build-provenance
操作的工作流,并且可能是可重用的工作流。
可以将选项标志与 gh attestation verify
命令一起使用。
- 如果可重用工作流与调用方工作流不在同一存储库中,请使用
--signer-repo
标志指定包含可重用工作流的存储库。 - 如果要强制要求使用特定工作流对项目证明进行签名,请使用
--signer-workflow
标志来指示应当使用的工作流文件。
例如,假设调用方工作流是 ORGANIZATION_NAME/REPOSITORY_NAME/.github/workflows/calling.yml
并且它使用 REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml
,则可以执行以下操作:
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
如果要指定确切的工作流,则应执行以下操作:
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