前提条件
このガイドを開始する前に、以下について理解しておく必要があります。
- 成果物証明の使用とセキュリティ上の利点。 「アーティファクト証明書」を参照してください。
- 成果物証明の生成 「アーティファクトの構成証明を使用して構築の実績を確立する」を参照してください。
- 再利用可能なワークフローの作成と使用。 「ワークフローを再利用する」を参照してください。
手順 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 フラグを使用する必要があります。 これらのフラグは 2 つのことを行います。
-
それらは
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