アーティファクト メタデータを添付ファイルに保存する

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

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

アタッチメントの操作の詳細については、 アタッチメントを使用してメタデータを管理するをご覧ください。

始める前に

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

必要なロール

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

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

アタッチメントの作成

Docker リポジトリの場合、アタッチメントは OCI アーティファクト である必要があります。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 タグを割り当てることができます。

次のステップ