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