前提条件
成果物の構成証明の生成を始める前に、それがどのようなもので、どのようなときに使うべきかを理解しておく必要があります。 「アーティファクト証明書」を参照してください。
ビルドのアーティファクトの証明書を生成する
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 にアップロードすることをお勧めします。 このページには、成果物のビルド履歴、デプロイ レコード、およびストレージの詳細が表示されます。 このデータを使用して、セキュリティ アラートに優先順位を付けたり、脆弱な成果物を所有するチーム、ソース コード、ビルド実行にすばやく接続したりすることができます。 詳しくは、「リンクされた成果物について」をご覧ください。
構成証明アクションと構成証明ビルド-実証アクションでは、次の両方の場合、linked artifacts page にストレージ レコードが自動的に作成されます。
-
`push-to-registry` オプションは次の値に設定されます。`true` - アクションを含むワークフローには、
artifact-metadata: writeアクセス許可があります
ワークフロー例については、「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'
次のステップ
構成証明の関連性と管理性を維持するため、不要になった構成証明は削除する必要があります。 「成果物(テクノロジー)証明のライフサイクルの管理」を参照してください。
また、コンシューマーがリリースの整合性と配信元を検証できるように、リリース構成証明を生成することもできます。 詳しくは、「変更不可リリース」をご覧ください。