このページでは、Artifact Registry に保存されているアーティファクトに関連するメタデータをアタッチメントとして保存する方法について説明します。
アタッチメントに保存されるメタデータには、アーティファクトの脆弱性、ビルドの来歴、パッケージの内容、認証、脆弱性評価、ソフトウェア部品構成表(SBOM)などの情報が含まれます。 Artifact Registry のアタッチメントに保存された情報は、ポリシー システムで使用したり、ユーザーが検査してコンプライアンスを確保したりできます。
アタッチメントの操作の詳細については、 アタッチメントを使用してメタデータを管理するをご覧ください。
始める前に
- 標準モードのリポジトリを作成します(まだ作成していない場合)。 create a standard-mode repository
- (省略可)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 イメージの場合、typeはartifactTypeプロパティの 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 を使用する前に、次の手順を行います。
Oras 1.2 以降をインストールします。バージョンを確認するには、
oras versionコマンドを実行します。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
タグを割り当てることができます。
次のステップ
- アーティファクトのメタデータを管理する。
- コンテナ イメージの SBOM を生成して保存する方法を 学習する。