アップストリーム ソースに対してコネクタ リポジトリを認証する

Artifact Registry コネクタ リポジトリのアップストリーム認証を構成すると、アカウント認証情報を使用して非公開の外部レジストリに接続できます。個人用アクセス トークンを Secret Manager に保存し、コネクタ リポジトリにアタッチして、アップストリーム ソースへのリクエストを認証できます。

この手順を完了するには、Artifact Registry コネクタ リポジトリと、外部ソースのアカウントが必要です。コネクタ リポジトリの詳細については、コネクタ リポジトリの概要をご覧ください。

必要なロール

コネクタ リポジトリのアップストリーム ソースに対する認証の構成に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

ユーザー定義のアップストリーム ソース

ユーザー定義のアップストリーム ソースに対する認証を構成するには、次の操作を行います。

アクセス トークンをシークレットに保存する

  1. プライベート レジストリにアクセス トークンを作成します。
  2. Secret Manager で Secret を作成する
  3. 個人用アクセス トークンをシークレット バージョンに保存する

Artifact Registry サービス アカウントにシークレットへのアクセス権を付与する

Artifact Registry サービス エージェントは、 Cloud de Confiance サービスを操作するときに Artifact Registry の代理として動作します。サービス エージェントが Secret Manager に保存されているシークレットを使用できるようにするには、シークレット バージョンを表示する権限をサービス エージェントに付与する必要があります。

このサービス エージェント ID は次のとおりです。

service-PROJECT-NUMBER@gcp-sa-artifactregistry.s3ns-system.iam.gserviceaccount.com

PROJECT-NUMBER は、Artifact Registry が実行されている Cloud de Confiance プロジェクトのプロジェクト番号です。

Artifact Registry サービス エージェントに Secret Manager のシークレット アクセサーのロールを付与するには:

コンソール

  1. Cloud de Confiance コンソールの [Secret Manager] ページに移動します。

    [Secret Manager] ページに移動

  2. [Secret Manager] ページで、シークレットの名前の横にあるチェックボックスをオンにします。

  3. まだ開いていない場合は、[情報パネルを表示] をクリックしてパネルを開きます。

  4. 情報パネルで [プリンシパルを追加] をクリックします。

  5. [新しいプリンシパル] テキスト領域に、追加するメンバーのメールアドレスを入力します。

  6. [ロールを選択] プルダウンで、[シークレット マネージャー]、[Secret Manager のシークレット アクセサー] の順に選択します。

gcloud

$ gcloud secrets add-iam-policy-binding secret-id \
    --member="member" \
    --role="roles/secretmanager.secretAccessor"

ここで、member はユーザー、グループ、サービス アカウントなどの IAM メンバーです。

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\"}]}}"

シークレットへのアクセス権の付与または取り消しについて詳しくは、シークレットへのアクセスを管理するをご覧ください。

コネクタ リポジトリにアップストリーム認証情報を追加する

アップストリーム ソースの認証情報でコネクタ リポジトリを更新するには:

コンソール

  1. Cloud de Confiance コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. リポジトリ リストでリポジトリを選択し、[リポジトリを編集] をクリックします。

  3. [コネクタ リポジトリの認証モード] セクションで、アップストリーム ソースのユーザー名とアクセス トークンを含むシークレットを更新または追加します。

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: 実際の Cloud de Confiance プロジェクト ID。
  • LOCATION: リポジトリのリージョンまたはマルチリージョンのロケーション。デフォルトを設定すると、このフラグを省略できます。サポートされているリポジトリのロケーションの一覧を表示するには、コマンド gcloud artifacts locations listを実行します。
  • USERNAME: 上流ソースのユーザー名。
  • SECRET_PROJECT_ID: シークレットを作成したプロジェクトのプロジェクト ID。
  • SECRET_ID: Secret に付けた名前。
  • SECRET_VERSION: アクセス トークンを保存したシークレット バージョン。

認証情報は、次にコネクタ リポジトリがアップストリーム ソースからアーティファクトのリクエストを送信するときに使用されます。