このドキュメントでは、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 のシークレット アクセサーのロールを付与するには:
Console
-
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
は、アクセス トークンを保存したシークレット バージョンに置き換えます。
認証情報は、次にリモート リポジトリがアップストリーム ソースからアーティファクトのリクエストを送信するときに使用されます。
次のステップ
- クリーンアップ ポリシーを作成して、不要なアーティファクトをクリーンアップする。