このドキュメントでは、Artifact Registry のリモート リポジトリのアップストリーム ソースを認証する方法について説明します。
このドキュメントは、Artifact Registry リモート リポジトリがすでに作成され、外部ソースのアカウントがあることを前提としています。
リモート リポジトリの詳細については、リモート リポジトリの概要をご覧ください。
必要なロール
リモート リポジトリの アップストリームソース への認証の構成に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。
-
Artifact Registry 管理者 (
roles/artifactregistry.admin
) - Secret Manager 管理者(
roles/secretmanager.admin
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
プリセットのアップストリーム ソース
事前設定されたアップストリーム ソースの認証を構成するには、以下の各アップストリームの対応するガイダンスをご覧ください。
ユーザー定義のアップストリーム ソース
ユーザー定義のアップストリーム ソースの認証を構成するには、次の手順を行います。
アクセス トークンをシークレットに保存する
- 非公開レジストリにアクセス トークンを作成します。
- Secret Manager で Secret を作成する
- 個人用アクセス トークンをシークレット バージョンとして保存します。
Artifact Registry サービス アカウントにシークレットへのアクセス権を付与する
Artifact Registry サービス エージェントは、Google Cloud サービスを操作するときに Artifact Registry の代理として動作します。サービス エージェントが Secret Manager に保存されているシークレットを使用できるようにするには、シークレット バージョンを表示する権限をサービス エージェントに付与する必要があります。
このサービス エージェント ID は次のとおりです。
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER は、Artifact Registry が実行されている Google Cloud プロジェクトのプロジェクト番号です。
Artifact Registry サービス エージェントに Secret Manager のシークレット アクセサーのロールを付与するには:
コンソール
-
Google Cloud コンソールの [Secret Manager] ページに移動します。
-
[Secret Manager] ページで、シークレットの名前の横にあるチェックボックスをオンにします。
-
まだ開いていない場合は、[情報パネルを表示] をクリックしてパネルを開きます。
-
情報パネルで [プリンシパルを追加] をクリックします。
-
[新しいプリンシパル] テキストエリアに、追加するメンバーのメールアドレスを入力します。
-
[ロールを選択] プルダウンで、[シークレット マネージャー]、[Secret Manager のシークレット アクセサー] の順に選択します。
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
ここで、member はユーザー、グループ、サービス アカウントなどの IAM メンバーです。
C#
Artifact Registry に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Go
Artifact Registry に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
Artifact Registry に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Node.js
Artifact Registry に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
PHP
Artifact Registry に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Artifact Registry に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Ruby
Artifact Registry に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
API
注: 他の例と異なり、IAM ポリシー全体が置き換えられます。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
シークレットへのアクセス権の付与または取り消しについて詳しくは、シークレットへのアクセスを管理するをご覧ください。
アップストリーム認証情報をリモート リポジトリに追加する
リモート リポジトリをアップストリーム ソースの認証情報で更新するには:
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
リポジトリ リストでリポジトリを選択し、[リポジトリを編集] をクリックします。
[リモート リポジトリ認証モード] セクションで、アップストリームのソースユーザー名とアクセス トークンを含むシークレットを更新または追加します。
gcloud CLI
リモート リポジトリをアップストリームのソース認証情報で更新するには、次のコマンドを実行します。
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USERNAME \
--remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
次のように置き換えます。
REPOSITORY
は、Artifact Registry リモート リポジトリの名前に置き換えます。PROJECT_ID
は、Google Cloud プロジェクト ID に置き換えます。LOCATION
は、リポジトリのリージョンまたはマルチリージョンのロケーションです。デフォルトを設定すると、このフラグを省略できます。サポートされているリポジトリのロケーションの一覧を表示するには、コマンドgcloud artifacts locations list
を実行します。USERNAME
は、アップストリームのソースユーザー名に置き換えます。SECRET_PROJECT_ID
は、シークレットを作成したプロジェクトのプロジェクト ID に置き換えます。SECRET_ID
は、Secret に付けた名前に置き換えます。SECRET_VERSION
は、アクセス トークンを保存したシークレット バージョンに置き換えます。
認証情報は、次にリモート リポジトリがアップストリーム ソースからアーティファクトのリクエストを送信するときに使用されます。
次のステップ
- クリーンアップ ポリシーを作成して、不要なアーティファクトをクリーンアップします。