コネクタ リポジトリを作成する

コネクタ リポジトリはアップストリーム ソースのプロキシとして機能し、すべてのリクエストがアップストリーム ソースによって処理されるようにします。リモート リポジトリとは異なり、コネクタ リポジトリはアーティファクトをキャッシュに保存しません。そのため、コネクタ リポジトリは、アップストリーム ソースの完全な監査可能性が必要な場合や、アーティファクトのキャッシュ保存を禁止するサードパーティ ポリシーに準拠する必要がある場合に便利です。

このページでは、Artifact Registry コネクタ リポジトリを作成する方法について説明します。

サポートされているコネクタ形式

Artifact Registry は、Docker 形式のコネクタ リポジトリのみをサポートしています。

始める前に

  1. Artifact Registry API を有効にして、Google Cloud CLI をインストールします。
  2. (省略可)gcloud CLI コマンドのデフォルトを構成します。
  3. リポジトリのコンテンツを暗号化するために顧客管理の暗号鍵(CMEK)が必要な場合は、リポジトリで Cloud KMS の鍵を作成して有効化します。
  4. Secret Manager API を有効にする。

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. Artifact Registry が VPC Service Controls のサービス境界内にあり、Access Context Manager API がまだ有効になっていない場合は、それを有効にします。

    gcloud services enable accesscontextmanager.googleapis.com \
        --project=PROJECT_ID
    

必要なロール

リポジトリの管理に必要な権限を取得するには、次の IAM ロールの付与を管理者に依頼してください。

  • コネクタ リポジトリを作成し、個々のリポジトリへのアクセス権を付与する: プロジェクトに対する Artifact Registry 管理者 (roles/artifactregistry.admin)
  • アップストリーム リポジトリの認証情報をシークレット バージョンに保存する: プロジェクトに対する Secret Manager 管理者 (roles/secretmanager.admin)
  • VPC Service Controls サービス境界外のアップストリーム ソースへのアクセス権を付与する: アクセスポリシーが適用されるプロジェクト、フォルダ、または組織に対する Access Context Manager 編集者 (roles/accesscontextmanager.policyEditor)

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

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

コネクタ リポジトリを作成する

コネクタ リポジトリを作成する際は、次の設定を構成する必要があります。この設定は、リポジトリの作成後に変更できません。

  • アーティファクトの形式。Docker のみ指定できます。
  • コネクタに設定されたリポジトリのモード。
  • コネクタ リポジトリのアップストリーム ソース。
  • リポジトリのロケーション。
  • Google Cloud-powered encryption keys または顧客管理の暗号鍵による暗号化。Artifact Registry では、デフォルトでGoogle Cloud-powered encryption keys が使用されます。

Artifact Registry では組織のポリシーの制約が適用され、CMEK でリソースを暗号化するか、CMEK の保護に使用できる Cloud KMS 鍵を制限する必要があります。

Console

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

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

  2. [リポジトリを作成] をクリックします。

  3. リポジトリ名を指定します。プロジェクト内のリポジトリの場所ごとに、リポジトリ名は一意であることが必要です。

  4. [形式] セクションで、[Docker] を選択します。

  5. [リポジトリ モード] セクションで、[コネクタ] を選択します。

  6. [コネクタ リポジトリのソース] セクションで、次のいずれかのオプションを選択します。

    • Docker Hub: コネクタは、アップストリーム リポジトリとして Docker Hub(https://docker.io)を使用します。
    • Custom: コネクタは、アップストリーム リポジトリに別の Docker アップストリーム URL を使用します。
  7. [カスタム] を選択した場合は、[カスタム リポジトリ] フィールドにリポジトリの完全な URL を入力します。リポジトリの作成後に URL を変更することはできません。

    一般的なアップストリーム URL の例については、カスタム アップストリームをご覧ください。

  8. [コネクタ リポジトリの認証モード] セクションに、次の情報を入力します。

    1. アップストリーム リポジトリのユーザー名。
    2. 認証情報を Secret Manager に保存するシークレット。

    これらの値は、リポジトリの作成後に編集できます。

  9. [ロケーション タイプ] セクションで、リポジトリのロケーションを選択します。

    1. ロケーション タイプには、[リージョン] または [マルチリージョン] を選択します。ロケーションのリストは、選択した内容に応じて変わります。

    2. [リージョン] リストまたは [マルチリージョン] リストでロケーションを選択します。

    ロケーション タイプとサポートされているロケーションについては、リポジトリのロケーションをご覧ください。

  10. リポジトリの説明を追加します。説明は、リポジトリの目的とリポジトリに含まれるアーティファクトの種類の識別に役立ちます。

    リポジトリの説明は暗号化されないため、センシティブ データは含めないでください。

  11. リポジトリの整理に ラベル を使用する場合は、ラベルの追加をクリックし、ラベルの Key-Value ペアを入力します。リポジトリを作成した後にラベルを追加、編集、削除できます。

  12. [暗号化] セクションで、リポジトリの暗号化方式を選択します。

    • Google Cloud-powered encryption key - Google Cloud-powered encryption keyを使用してリポジトリ コンテンツを暗号化します。
    • 顧客管理の暗号鍵 - Cloud Key Management Service で管理する鍵を使用してリポジトリのコンテンツを暗号化します。鍵の設定手順については、リポジトリの CMEK の設定をご覧ください。
  13. [Artifact Analysis] セクションで、脆弱性スキャンの設定を選択します。

    • 有効 - このリポジトリでのスキャンを許可します。プロジェクトで Container Scanning API を有効にする必要があります。

      Container Scanning API を有効にすると、すぐに課金が開始されます。プロジェクトで Container Scanning API を有効にすると、すべての新しいリポジトリと既存のリポジトリで脆弱性スキャンが有効になります。イメージを Artifact Registry に push すると、Artifact Analysis によって自動的にスキャンされます。

    • 無効 - このリポジトリでのスキャンを防止します。プロジェクトで Container Scanning API が有効になっている場合、他のリポジトリではスキャンが続行されます。このリポジトリは除外されます。

      脆弱性スキャンのオプションの詳細については、自動スキャンを有効または無効にするをご覧ください。

  14. [作成] をクリックします。

Artifact Registry でリポジトリが作成され、リポジトリのリストに追加されます。

gcloud CLI

コネクタ リポジトリを作成するには、Docker コネクタ リポジトリまたはカスタム コネクタ リポジトリのいずれかを作成するコマンドを実行します。

  gcloud artifacts repositories create CONNECTOR-REPOSITORY-NAME \
      --project=PROJECT_ID \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --repository-format=docker \
      --mode=connector-repository \
      --remote-docker-repo="UPSTREAM-NAME" \
      --remote-username="USERNAME" \
      --remote-password-secret-version="PASSWORD" \

リポジトリをコネクタ リポジトリとして定義するには、--mode=connector-repository フラグが必要です。--repository-format は docker にする必要があります。

次のように置き換えます。

  • CONNECTOR-REPOSITORY-NAME: リポジトリの名前 プロジェクト内のリポジトリの場所ごとに、リポジトリ名は一意であることが必要です。
  • PROJECT_ID: プロジェクト ID。このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
  • LOCATION: リポジトリのリージョンまたはマルチリージョンのロケーション。デフォルトを設定すると、このフラグを省略できます。サポートされているリポジトリのロケーションの一覧を表示するには、コマンド gcloud artifacts locations listを実行します。
  • DESCRIPTION: 省略可。コネクタ リポジトリの説明。リポジトリの説明は暗号化されないため、センシティブ データは含めないでください。
  • UPSTREAM-NAME: 上流リポジトリのプリセットの上流名またはユーザー定義の URL。
  • USERNAME: 省略可。アップストリーム リポジトリの認証に使用するユーザー名。
  • PASSWORD: 省略可。アップストリーム リポジトリのパスワードを含むシークレット バージョン。

たとえば、次のコマンドは、アップストリームの Jfrog リポジトリを Cloud de Confiance プロジェクト my-project に接続する my-connector-repo という名前のコネクタ リポジトリを作成します。アップストリーム リポジトリの完全な URL は https://my-account.jfrog.io/scoped-repo です。

gcloud artifacts repositories create my-connector-repo \
    --project=my-project \
    --location=us-east1 \
    --repository-format=docker \
    --mode=connector-repository \
    --remote-docker-repo=https://my-account.jfrog.io/scoped-repo \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1

アップストリーム リポジトリに対する認証の詳細については、アップストリーム ソースに対してコネクタ リポジトリを認証するをご覧ください。

Terraform

google_artifact_registry_repository リソースを使用して、リポジトリを作成します。 terraform-provider-google のバージョン 5.0.0 以降が必要です。

Cloud de Confiance by S3NSで Terraform を初めて使用する場合は、HashiCorp ウェブサイトのスタートガイド - Cloud de Confiance by S3NS ページをご覧ください。

次の例では、プロバイダと、Terra リソース名が my-repo のコネクタ リポジトリを定義します。

```hcl
provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "NAME" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "docker"
  mode          = "REMOTE_REPOSITORY"

  # Setting mode="REMOTE_REPOSITORY" and no_cache() together configures the repository as a connector-type repository.
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    docker_repository {
      public_repository = "DOCKER_HUB"
    }
    no_cache {}
  }
}
```

Replace the following:

  * `PROJECT-ID`: the Cloud de Confiance project ID.
  * `NAME`: the name of your repository.
  * `LOCATION`: the repository location.
  * `REPOSITORY_ID`: the repository ID.
  * `DESCRIPTION`: optional. A description for the repository.
    Do not include sensitive data. Repository descriptions are
    not encrypted.
  * `KEY`: the name of the Cloud Key Management Service key, if you are using
    [customer-managed encryption keys][cmek] (CMEK) for encryption. Omit
    this argument to use the default setting, Google-managed encryption
    keys.
  * `CONFIG_DESCRIPTION`: optional. A description of the remote
    source.

リポジトリを作成したら、次の操作を行います。

リポジトリの説明を編集する

リポジトリの説明は、 Cloud de Confiance コンソールまたは gcloud CLI から変更できます。

コンソール

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

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

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

  3. リポジトリの説明を編集し、[保存] をクリックします。

gcloud

リポジトリの説明を更新するには次のコマンドを実行します。

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT \
    --location=LOCATION \
    --description="DESCRIPTION"

以下を置き換えます。

  • REPOSITORY: リポジトリの名前。デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。
  • PROJECT: Cloud de Confiance by S3NSプロジェクト ID。このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
  • LOCATION は、リポジトリのリージョン ロケーションです。 このフラグを使用して、特定のロケーションのリポジトリを表示します。デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。
  • DESCRIPTION: リポジトリの説明。

サービス境界内のアップストリーム ソースにアクセスする

VPC Service Controls のサービス境界内のサービスは、境界外のリソースへのアクセスを制限しています。

指定したCloud de Confiance プロジェクトとロケーション内のアップストリーム ソースへのアクセスを許可または拒否できます。

デフォルトでは、アクセス権を明示的に付与していない場合、Artifact Registry はアップストリーム ソースへのアクセスを拒否します。

Artifact Registry の場合、必要なロールは Artifact Registry 管理者(roles/artifactregistry.admin)です。

アップストリーム ソースの設定を表示する

特定のプロジェクトとロケーションの組み合わせの構成を表示するには、次のコマンドを実行します。

gcloud artifacts vpcsc-config describe \
    --project=PROJECT_ID \
    --location=LOCATION

たとえば、プロジェクト my-project の us-east1 でコネクタ リポジトリの設定を表示するには、次のコマンドを使用します。

gcloud artifacts vpcsc-config describe \
    --project=my-project \
    --location=us-east1

アップストリーム ソースへのアクセスを許可する

指定したロケーションにあるアップストリーム ソースへのアクセスを許可するには、次のコマンドを実行します。

gcloud artifacts vpcsc-config allow \
    --project=PROJECT_ID \
    --location=LOCATION

たとえば、次のコマンドを使用して、プロジェクト my-project の us-east1 内のすべてのコネクタ リポジトリが境界外のアップストリーム ソースにアクセスできるようにします。

gcloud artifacts vpcsc-config allow \
    --project=my-project \
    --location=us-east1

アップストリーム ソースへのアクセスを拒否する

指定したロケーションにあるアップストリーム ソースへのアクセスを拒否するには、次のコマンドを実行します。

gcloud artifacts vpcsc-config deny \
    --project=PROJECT_ID \
    --location=LOCATION

たとえば、次のコマンドを使用して、プロジェクト my-project の us-west1 内のすべてのコネクタ リポジトリについて、境界外のアップストリーム ソースへのアクセスをブロックします。

gcloud artifacts vpcsc-config deny \
    --project=my-project \
    --location=us-west1

次のステップ