前提条件
成果物の構成証明の生成を始める前に、それがどのようなもので、どのようなときに使うべきかを理解しておく必要があります。 「アーティファクト証明書」を参照してください。
ビルドのアーティファクトの証明書を生成する
GitHub Actions を使用すると、バイナリやコンテナー イメージなどのアーティファクトの構築実証を確立するアーティファクト構成証明を生成できます。
アーティファクトの証明書を生成するためには、次の手順を行う必要があります。
- ワークフローで適切なアクセス許可が構成されていることを確認します。
-
[ `attest-build-provenance`アクション](https://github.com/actions/attest-build-provenance)を使用するステップをワークフローに含めます。
更新されたワークフローを実行すると、アーティファクトが構築され、構築証明を確立するアーティファクトの構成証明が生成されます。 構成証明は、リポジトリ の** [アクション]** タブで表示できます。詳細については、リポジトリattest-build-provenanceを 参照してください。
バイナリのビルド由来情報の生成
-
証明するバイナリを構築するワークフローで、次のアクセス許可を追加します。
permissions: id-token: write contents: read attestations: write -
バイナリが構築された手順の後に、次の手順を追加します。
- name: Generate artifact attestation uses: actions/attest-build-provenance@v3 with: subject-path: 'PATH/TO/ARTIFACT'`subject-path` パラメーターの値は、証明したいバイナリへのパスに設定する必要があります。
コンテナーイメージのビルドプロベナンスを生成する
-
検証を行うコンテナのイメージを構築するワークフローで、次のアクセス許可を追加します。
permissions: id-token: write contents: read attestations: write packages: write -
イメージが構築された手順の後に、次の手順を追加します。
- name: Generate artifact attestation uses: actions/attest-build-provenance@v3 with: subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} subject-digest: 'sha256:fedcba0...' push-to-registry: trueパラメーターの
subject-name値には、完全修飾イメージ名を指定する必要があります。 たとえば、ghcr.io/user/appまたはacme.azurecr.io/user/appです。 イメージ名の一部としてタグを含めることはしないでください。パラメーターの
subject-digestの値は、アテステーションの対象のSHA256ダイジェストに基づいてsha256:HEX_DIGEST形式で設定する必要があります。 ワークフローで使用docker/build-push-actionする場合は、そのステップのdigest出力を 使用して値を指定できます。 出力の使用の詳細については、「GitHub Actions のワークフロー構文」を参照してください。
ソフトウェア部品表 (SBOM) のための証明書の生成
ワークフロー アーティファクトの署名付き SBOM 構成証明を生成できます。
SBOM の構成証明を生成するには、次の手順を実行する必要があります。
- ワークフローで適切なアクセス許可が構成されていることを確認します。
- アーティファクトの SBOM を作成します。 詳しくは、GitHub Marketplace で
anchore-sbom-actionをご覧ください。 -
[ `attest-sbom`アクション](https://github.com/actions/attest-sbom)を使用するステップをワークフローに含めます。
更新されたワークフローを実行すると、アーティファクトが構築され、SBOM 構成証明が生成されます。 構成証明は、リポジトリの [アクション] タブで表示できます。詳細については、attest-sbomアクション リポジトリを参照してください。
バイナリの SBOM 構成証明の生成
-
証明するバイナリを構築するワークフローで、次のアクセス許可を追加します。
permissions: id-token: write contents: read attestations: write -
バイナリが構築された手順の後に、次の手順を追加します。
- name: Generate SBOM attestation uses: actions/attest-sbom@v2 with: subject-path: 'PATH/TO/ARTIFACT' sbom-path: 'PATH/TO/SBOM'パラメーターの
subject-path値は、SBOM が記述するバイナリのパスに設定する必要があります。 パラメーターのsbom-path値は、生成した SBOM ファイルのパスに設定する必要があります。
コンテナイメージの SBOM 証明書の生成
-
検証を行うコンテナのイメージを構築するワークフローで、次のアクセス許可を追加します。
permissions: id-token: write contents: read attestations: write packages: write -
イメージが構築された手順の後に、次の手順を追加します。
- 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パラメーターの
subject-name値には、完全修飾イメージ名を指定する必要があります。 たとえば、ghcr.io/user/appまたはacme.azurecr.io/user/appです。 イメージ名の一部としてタグを含めることはしないでください。パラメーターの
subject-digestの値は、アテステーションの対象のSHA256ダイジェストに基づいてsha256:HEX_DIGEST形式で設定する必要があります。 ワークフローで使用docker/build-push-actionする場合は、そのステップのdigest出力を 使用して値を指定できます。 出力の使用の詳細については、「GitHub Actions のワークフロー構文」を参照してください。パラメーターの
sbom-path値は、構成証明する JSON 形式の SBOM ファイルへのパスに設定する必要があります。
linked artifacts page
へのアーティファクトのアップロード
確認済みの資産を組織の linked artifacts page にアップロードすることをお勧めします。 このページには、成果物のビルド履歴、デプロイ レコード、およびストレージの詳細が表示されます。 このデータを使用して、セキュリティ アラートに優先順位を付けたり、脆弱な成果物を所有するチーム、ソース コード、ビルド実行にすばやく接続したりすることができます。 詳しくは、「リンクされた成果物について」をご覧ください。
(Note: Depending on specific requirements or known terms within the application's Japanese context, further information or context might adjust how this content should be presented.)
ワークフロー例については、「linked artifacts page へのストレージおよびデプロイメント データのアップロード」を参照してください。
GitHub CLI を使用したアーティファクト認証の検証
GitHub CLIを使用して、バイナリとコンテナーイメージのアーティファクト証明を確認し、SBOM証明を確認できます。 詳しくは、GitHub CLI のマニュアルで attestation セクションをご覧ください。
メモ
これらのコマンドは、オンライン環境であることを前提としています。 オフライン環境またはエアギャップ環境の場合は、「オフラインでのアテステーションの確認」を参照してください。
バイナリのアーティファクト証明書を検証する
**バイナリ**のアーティファクト構成証明を確認するには、次の GitHub CLI コマンドを使用します。
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
コンテナー イメージのアーティファクト証明を検証する
**コンテナー イメージ**のアーティファクト構成証明を確認するには、バイナリへのパスではなく、`oci://`プレフィックスが付いたイメージの FQDN を指定する必要があります。 次の GitHub CLI コマンドを使用できます。
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
SBOMの証明書を検証する
SBOM 証明書を検証するには、既定以外の述語を参照するために --predicate-type のフラグを指定する必要があります。 詳細については、
たとえば、現在、attest-sbom アクションは SPDX または CycloneDX SBOM 述語のいずれかをサポートしています。 SPDX 形式の SBOM 構成証明を検証するには、次の 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
構成証明の詳細情報を表示するには、--format json フラグを参照してください。 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'
次のステップ
構成証明の関連性と管理性を維持するため、不要になった構成証明は削除する必要があります。 「成果物(テクノロジー)証明のライフサイクルの管理」を参照してください。
また、コンシューマーがリリースの整合性と配信元を検証できるように、リリース構成証明を生成することもできます。 詳しくは、「変更不可リリース」をご覧ください。