このドキュメントでは、Artifact Registry リモート リポジトリの Docker Hub アップストリーム リポジトリに対する認証を構成する方法について説明します。
未認証の Docker Hub の割り当てが使用されないようにするには、リモート リポジトリを使用するときに Docker Hub に対する認証をおすすめします。リモート リポジトリを使用すると、Docker Hub のユーザー名とシークレットとして保存された個人アクセス トークンを Docker Hub の認証に使用できます。
このドキュメントは、Artifact Registry Docker リモート リポジトリと Docker Hub アカウントをすでに作成していることを前提としています。
リモート リポジトリの詳細については、リモート リポジトリの概要をご覧ください。
準備
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Artifact Registry, Secret Manager API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Artifact Registry, Secret Manager API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
必要なロール
リモート リポジトリの Docker Hub への認証の構成に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。
-
Artifact Registry 管理者 (
roles/artifactregistry.admin
) - Secret Manager 管理者(
roles/secretmanager.admin
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Docker Hub の個人アクセス トークンを作成する
- Docker Hub にログインします。
- 読み取り専用の権限を持つ個人用アクセス トークンを作成します。
アクセス トークンをコピーします。
アクセス トークンをローカルまたは Cloud Shell のテキスト ファイルに保存します。
個人用のアクセス トークンをシークレット バージョンに保存する
- Secret Manager で Secret を作成する
- Docker Hub の個人アクセス トークンをシークレット バージョンとして保存します。
Artifact Registry サービス アカウントにシークレットへのアクセス権を付与する
Artifact Registry サービス エージェントは、Google Cloud サービスを操作するときに Artifact Registry の代理として動作する Google マネージド サービス アカウントです。サービス エージェントが 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\"}]}}"
シークレットへのアクセス権の付与または取り消しの詳細については、シークレットへのアクセス権の管理をご覧ください。
リモート リポジトリに Docker Hub 認証情報を追加する
Docker Hub の認証情報でリモート リポジトリを更新するには:
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
リポジトリ リストでリポジトリを選択し、[リポジトリを編集] をクリックします。
[リモート リポジトリ認証モード] セクションで、Docker Hub アクセス トークンを含む Docker Hub のユーザー名とシークレットを更新または追加します。
gcloud CLI
リモート リポジトリを Docker Hub 認証情報で更新するには、次のコマンドを実行します。
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USERNAME \
--remote-password-secret-version=projects/PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
次のように置き換えます。
REPOSITORY
は、Artifact Registry のリモート リポジトリの名前に置き換えます。PROJECT_ID
は、Google Cloud プロジェクト ID に置き換えます。LOCATION
は、リポジトリのリージョンまたはマルチリージョンのロケーションです。デフォルトを設定すると、このフラグを省略できます。サポートされているリポジトリのロケーションの一覧を表示するには、コマンドgcloud artifacts locations list
を実行します。USERNAME
を Docker Hub のユーザー名に置き換えます。SECRET_ID
を、Secret に付けた名前に置き換えます。SECRET_VERSION
は、Docker Hub のアクセス トークンを保存したシークレット バージョンに置き換えます。
次のステップ
- Artifact Registry リポジトリの詳細を確認する。
- Docker を使用してイメージを pull する。
- Docker Hub リモート リポジトリのクイックスタートを使用します。