アーティファクト メタデータをアタッチメントに保存する

このページでは、Artifact Registry に保存されているアーティファクトに関連するメタデータをアタッチメントとして保存する方法について説明します。

アタッチメントに保存されるメタデータには、アーティファクトの脆弱性、ビルドの来歴、パッケージの内容、認証、脆弱性評価、ソフトウェア部品構成表(SBOM)などに関する情報を含めることができます。Artifact Registry の添付ファイルに保存された情報は、ポリシー システムで使用したり、ユーザーがコンプライアンスを確認するために検査したりできます。

添付ファイルの操作の詳細については、添付ファイルを使用してメタデータを管理するをご覧ください。

始める前に

  1. 標準モードのリポジトリを作成します(まだ作成していない場合)。
  2. (省略可)Google Cloud CLI コマンドのデフォルトを構成します。

必要なロール

アタッチメントの作成に必要な権限を取得するには、リポジトリに対する Artifact Registry 書き込み roles/artifactregistry.writer)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

アタッチメントの作成

Docker リポジトリの場合、アタッチメントは OCI アーティファクトである必要があります。Docker 以外のすべての形式では、添付ファイルは任意のファイル形式にできます。

gcloud CLI または Oras を使用して、Docker 形式のリポジトリにアタッチメントを作成できます。

添付ファイルを作成するには、次の手順を行います。

gcloud(すべての形式)

後述のコマンドデータを使用する前に、次のように置き換えます。

  • ATTACHMENT: アタッチメントの完全修飾名(projects/my-project/locations/us-west1/repositories/my-repo/attachments/my-attachment など)。または、添付ファイル ID のみを提供し、--location フラグと --repository フラグを使用します。
  • TARGET: 完全修飾バージョン名。Docker イメージの場合のみ、添付ファイルが参照するアーティファクトの Artifact Registry URI を使用することもできます。URI では、ダイジェストを使用できます。Docker イメージの場合は、タグを使用できます(例: us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1)。
  • TYPE: アタッチメントの type 属性。Docker イメージの場合、typeartifactType プロパティの OCI 仕様に準拠している必要があります。
  • ATTACHMENT_NAMESPACE: アタッチメントのデータソースを識別するアタッチメントに固有の変数(example.com など)。
  • FILES: アタッチメントに含めるローカル ファイルのカンマ区切りのリスト。
    • 次のコマンドを実行します。

      Linux、macOS、Cloud Shell

      gcloud artifacts attachments create ATTACHMENT \
          --target=TARGET \
          --attachment-type=TYPE \
          --attachment-namespace=ATTACHMENT_NAMESPACE \
          --files=FILES

      Windows(PowerShell)

      gcloud artifacts attachments create ATTACHMENT `
          --target=TARGET `
          --attachment-type=TYPE `
          --attachment-namespace=ATTACHMENT_NAMESPACE `
          --files=FILES

      Windows(cmd.exe)

      gcloud artifacts attachments create ATTACHMENT ^
          --target=TARGET ^
          --attachment-type=TYPE ^
          --attachment-namespace=ATTACHMENT_NAMESPACE ^
          --files=FILES
      詳細については、gcloud artifacts attachments create コマンドをご覧ください。

Oras(Docker のみ)

Oras を使用してアタッチメントを作成すると、Artifact Registry はアタッチメント名として使用するランダムな UUID を生成します。

Oras を使用する前に、次の手順を完了します。

  1. Oras 1.2 以降をインストールします。バージョンを確認するには、oras version コマンドを実行します。

  2. Artifact Registry で認証するように Oras を構成します。

コマンドを実行する前に、次のように置き換えます。

  • ARTIFACT_TYPE: アタッチメントの artifactType

  • IMAGE_URI: アタッチメントが参照するイメージ コンテナの URI。

  • FILE: アタッチメントのメタデータとして含めるローカル ファイル。

  • MEDIA_TYPE: レイヤの mediaType

  oras attach --artifact-type ARTIFACT_TYPE IMAGE_URI FILE:MEDIA_TYPE

次の例では、URI とタグで識別されるコンテナ イメージ my-image を参照するファイル hello-world.txt で構成されたアタッチメントを作成します。

  oras attach --artifact-type doc/example \
  us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1 \
  hello-world.txt:application/vnd.me.hi

ここで

  • doc/example は、添付ファイルの artifactType プロパティを定義します。

  • us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1 は、アタッチメントが参照するコンテナ イメージ バージョンのタグを含む URI です。

  • hello-world.txt は、アタッチメントがデータとして保持するローカル ファイルです。

  • application/vnd.me.hi は、レイヤの mediaType を定義します。

完全なガイドとその他の例については、oras attach のドキュメントをご覧ください。

クリーンアップ ポリシーで添付ファイルを管理する

ビルドの出所などの Docker リポジトリの添付ファイルは、添付先のアーティファクトが削除されると削除されます。クリーンアップ ポリシーを使用してリポジトリからイメージを削除すると、デフォルトでは、それらのイメージの添付ファイルも削除されます。

保持する添付ファイルがクリーンアップ ポリシーによって誤って削除されないようにするには、保持する添付ファイルを含むイメージにタグを割り当てます。次に、これらのタグを持つイメージを保持するようにクリーンアップ ポリシーを構成できます。たとえば、ビルドの来歴が添付された画像に production-signed タグを割り当てることができます。

次のステップ