このドキュメントでは、Artifact Registry のリモート リポジトリの Maven Central アップストリーム リポジトリへの認証を構成する方法について説明します。
このドキュメントは、Artifact Registry Maven リモート リポジトリと Maven Central アカウントがすでに作成されていることを前提としています。
リモート リポジトリの詳細については、リモート リポジトリの概要をご覧ください。
必要なロール
リモート リポジトリの Maven Central への認証の構成に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。
-
Artifact Registry 管理者 (
roles/artifactregistry.admin
) - Secret Manager 管理者(
roles/secretmanager.admin
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Maven Central の個人アクセス トークンを作成する
- Maven Central にログインします。
アクセス トークンを作成します。
Artifact Registry に認証情報を追加するときは、個人用のアクセス トークンのユーザーコードをユーザー名として使用します。Maven Central でのユーザー トークンの管理の詳細については、ユーザー トークンによるセキュリティ設定をご覧ください。
個人用アクセス トークンをシークレット バージョンに保存する
- Secret Manager で Secret を作成する
- Maven Central の個人用アクセス トークンをシークレット バージョンとして保存します。
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\"}]}}"
シークレットへのアクセス権の付与または取り消しについて詳しくは、シークレットへのアクセスを管理するをご覧ください。
Maven Central 認証情報をリモート リポジトリに追加する
Maven Central 認証情報でリモート リポジトリを更新するには:
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
リポジトリ リストでリポジトリを選択し、[リポジトリを編集] をクリックします。
[Remote repository authentication mode] セクションで、ユーザー名として個人用アクセス トークンに関連付けられている Maven Central ユーザーコードと、Maven Central アクセス トークンを含むシークレット バージョンを更新または追加します。
gcloud CLI
Maven Central 認証情報でリモート リポジトリを更新するには、次のコマンドを実行します。
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USER_CODE \
--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
を実行します。USER_CODE
は、Maven Central アクセス トークンに関連付けられたユーザーコードです。Maven Central でのユーザー トークンの管理の詳細については、ユーザー トークンによるセキュリティ設定をご覧ください。SECRET_PROJECT_ID
は、シークレットを作成したプロジェクトのプロジェクト ID に置き換えます。SECRET_ID
は、Secret に付けた名前に置き換えます。SECRET_VERSION
は、Maven Central アクセス トークンを保存したシークレット バージョンに置き換えます。
認証情報は、次にリモート リポジトリがアップストリーム ソースからアーティファクトのリクエストを送信するときに使用されます。