Private Service Connect Secure Source Manager インスタンスを作成する

このページでは、Private Service Connect インスタンスを作成する方法について説明します。

Private Service Connect インスタンスは、エンドポイントを公共のインターネットに公開しません。Private Service Connect インスタンスを作成すると、インスタンスへの SSH(Git)アクセスと HTTPS(Git、ウェブ インターフェース、API)アクセスを提供するエンドポイントが作成されます。エンドポイントには、プライベート ネットワーク上の IP アドレスが割り当てられている必要があります。Private Service Connect インスタンスとの間のすべてのトラフィックは、Private Service Connect エンドポイントを通過します。

Private Service Connect を使用して VPC ネットワーク内からマネージド サービスにプライベートにアクセスする方法については、Private Service Connect をご覧ください。

Secure Source Manager は単一テナント サービスです。1 つの Secure Source Manager インスタンスには、契約関係にある複数の企業がコラボレーションのために単一のインスタンスを使用する必要がある場合を除き、1 つのGoogle Cloud 顧客のユーザーのみを含める必要があります。

複数の企業と連携してソースコードを共同編集する場合は、企業ごとに個別のインスタンスを作成することをおすすめします。

始める前に

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Secure Source Manager API.

    Enable the API

  4. Install the Google Cloud CLI.

  5. 外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。

  6. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Enable the Secure Source Manager API.

    Enable the API

  9. Install the Google Cloud CLI.

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  12. beta Google Cloud CLI コンポーネントをインストールします。
    gcloud components install beta
  13. 必要なロール

    Private Service Connect Secure Source Manager インスタンスの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

    サービス ID と認証局プールを作成する

    このセクションでは、独自の CA 証明書を使用している場合の対処方法について説明します。 Googleマネージド証明書を使用するには、サービス ID と CA プールを作成せずに gcloud beta source-manager instances create コマンドを実行するだけで済みます。

    Googleで管理される証明書を使用する代わりに独自の CA 証明書を使用する場合は、プライベート Secure Source Manager インスタンスを作成するときに認証局(CA)プール名を指定する必要があります。インスタンスの HTTPS SSL 証明書に署名するリクエストが CA プールに送信されます。

    1. 次のコマンドを実行して、プロジェクト内に Secure Source Manager API のサービス ID を作成します。

      gcloud beta services identity create \
          --service=securesourcemanager.googleapis.com \
          --project=PROJECT_ID
      

      ここで、PROJECT_ID はプロジェクト ID です。

      出力は次のようになります。

      Service identity created: service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com

      ここで、service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com は Secure Source Manager サービス エージェントPROJECT_NUM はプロジェクト番号です。

    2. CSR ベースの証明書リクエストが許可された認証局(CA)プールを作成します。

    3. CA を作成します。必要に応じて、ルート CA または下位 CA を作成できます。

      ルート CA と下位 CA の違いについて詳しくは、認証局の設定を決定するをご覧ください。

    4. Secure Source Manager API サービス ID に、CA プールで新しい証明書をリクエストする権限を付与します。

      gcloud privateca pools add-iam-policy-binding CA_POOL_NAME \
          --location=CA_LOCATION \
          --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com' \
          --role='roles/privateca.certificateRequester' \
          --project=CA_PROJECT_ID
      

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

      • CA_POOL_NAME は、CA プールに付けた名前に置き換えます。
      • CA_LOCATION: CA プールのリージョンまたはゾーン。
      • PROJECT_NUMBER は、Secure Source Manager が有効になっているプロジェクトのプロジェクト番号に置き換えます。プロジェクト番号は、プロジェクトの識別の手順に沿って確認できます。
      • CA_PROJECT_ID は、CA プールを作成したプロジェクトのプロジェクト ID に置き換えます。

    Private Service Connect Secure Source Manager インスタンスを作成する

    gcloud

    次のコマンドを使用して、Private Service Connect インスタンスを作成します。

    gcloud beta source-manager instances create INSTANCE_ID \
      --region=LOCATION \
      --project=PROJECT_ID \
      --is-private \
      --ca-pool=projects/CA_PROJECT/locations/CA_LOCATION/caPools/CA_POOL_NAME
    

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

    • INSTANCE_ID は、インスタンスに付ける名前に置き換えます。
    • LOCATION は、インスタンスを作成するリージョンに置き換えます。サポートされているロケーションについては、ロケーションをご覧ください。
    • PROJECT_ID は、インスタンスを作成するプロジェクトの名前に置き換えます。
    • CA_PROJECT(独自の CA 証明書を使用している場合のみ)。
    • CA_LOCATION は、CA プールを作成したリージョンに置き換えます(独自の CA 証明書を使用している場合のみ)。
    • CA_POOL_NAME(独自の CA 証明書を使用している場合のみ)。

    API

    次のコマンドを使用して、Private Service Connect インスタンスを作成します。

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=INSTANCE_ID \
        -H "Content-Type: application/json" \
        -d '{"private_config":{"is_private":true,"ca_pool":"projects/CA_PROJECT/locations/CA_LOCATION/caPools/CA_POOL_NAME"}}'
    

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

    • INSTANCE_ID は、インスタンスに付ける名前に置き換えます。
    • LOCATION は、インスタンスを作成するリージョンに置き換えます。サポートされているロケーションについては、ロケーションをご覧ください。
    • PROJECT_ID は、インスタンスを作成するプロジェクトの名前に置き換えます。
    • CA_PROJECT(独自の CA 証明書を使用している場合のみ)。
    • CA_LOCATION は、CA プールを作成したリージョンに置き換えます(独自の CA 証明書を使用している場合のみ)。
    • CA_POOL_NAME(独自の CA 証明書を使用している場合のみ)。

    長時間実行のインスタンス作成オペレーションが開始されます。インスタンスの作成には最長で 60 分かかります。出力は次のようになります。

    Create request issued for [my-instance].
    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata
      apiVersion: v1
      createTime: '2023-02-27T20:57:52.315609549Z'
      requestedCancellation: false
      target: projects/my-project/locations/us-central1/instances/my-instance
      verb: create
    name: projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e
    

    ここで、projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2eOPERATION_NAME です。

    OPERATION_NAME は、オペレーションのステータスを確認するために使用する必要があるため、メモしておきます。

    オペレーションのステータスを確認するには、次のコマンドを実行します。

    gcloud beta source-manager operations describe OPERATION_NAME \
        --region=LOCATION
    

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

    • OPERATION_NAME: 作成コマンドのレスポンスから取得したオペレーション名。
    • LOCATION は、インスタンスを作成するリージョンに置き換えます。サポートされているロケーションについては、ロケーションをご覧ください。

    インスタンスが作成されると、Private Service Connect エンドポイント httpServiceAttachmentsshServiceAttachment、および htmlapigitHttpgitSsh のホスト名が出力に表示されます。

    プライベート インスタンスにアクセスする

    Private Service Connect インスタンスにアクセスするには、転送ルールに基づいて Private Service Connect エンドポイントを作成するか、ロードバランサに基づいて Private Service Connect バックエンドを作成します。

    ロードバランサに基づく Private Service Connect バックエンドは柔軟性が高く、Cloud Build などの他の Google Cloud サービスと統合できますが、複雑で追加の課金が発生します。

    転送ルールに基づく Private Service Connect エンドポイントはシンプルで費用も抑えられますが、Cloud Build や他のGoogle Cloud サービスに接続することはできません。

    Private Service Connect インスタンスのロードバランサに基づいて Private Service Connect バックエンドを設定し、Cloud Build に接続するには、Cloud Build を Private Service Connect インスタンスに接続するをご覧ください。

    転送ルールに基づいて Private Service Connect エンドポイントを設定する

    1. Private Service Connect エンドポイントを作成するには、エンドポイントを通じて公開サービスにアクセスするの手順に沿って操作します。

    2. Secure Source Manager インスタンスの HTTP サービスと SSH サービスのアタッチメントの URI を取得するには、次のコマンドを実行します。

      gcloud beta source-manager instances describe INSTANCE_ID \
          --region=LOCATION
      

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

      • INSTANCE_ID は、インスタンスの名前に置き換えます。特定のリージョンのインスタンスを一覧表示するには、gcloud beta source-manager instances list --region=LOCATION を実行します。
      • LOCATION は、インスタンスのロケーションです。サポートされているロケーションについては、ロケーションをご覧ください。

      出力は次のようになります。

      createTime: '2023-09-22T18:21:35.729454612Z'
      hostConfig:
        api: my-project-012345678901-api.us-central1.p.sourcemanager.dev
        gitHttp: my-project-012345678901-git.us-central1.p.sourcemanager.dev
        gitSsh: my-project-012345678901-ssh.us-central1.p.sourcemanager.dev
        html: my-project-012345678901.us-central1.p.sourcemanager.dev
      name: projects/my-project/locations/us-central1/instances/my-instance
      privateConfig:
        caPool: projects/my-project/locations/us-central1/caPools/my-ca-pool
        httpServiceAttachment: projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc
        isPrivate: true
        sshServiceAttachment: projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc
      state: ACTIVE
      updateTime: '2023-09-22T18:39:53.390563549Z'
      

      ここで

      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc は、インスタンスの HTTP サービス アタッチメント URI です。
      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc は、インスタンスの SSH サービス アタッチメント URI です。
    3. Private Service Connect エンドポイントを作成したら、プライベート DNS レコードを設定する必要があります。プライベート DNS レコードの設定方法については、DNS を手動で構成するをご覧ください。

      1. hostConfig.htmlhostConfig.apihostConfig.gitHttp の値を HTTP サービス アタッチメントの内部 IP アドレスにマッピングします。
      2. hostConfig.ssh の値を SSH サービス アタッチメントの内部 IP アドレスにマッピングします。

      たとえば、前の出力例では、hostConfig.html の値は my-project-012345678901.us-central1.p.sourcemanager.dev です。

    Secure Source Manager API で CA を使用する

    Secure Source Manager には、コントロール プレーンとデータプレーンがあります。データプレーン エンドポイントは Secure Source Manager インスタンスによって直接ホストされるため、アクセスするにはインスタンスの API ホスト名に接続する必要があります。

    プライベート Secure Source Manager インスタンスを使用するには、サービス ID と認証局プールを作成するセクションで作成した CA を使用する必要があります。

    1. CA をダウンロードするには、次のコマンドを実行します。

      gcloud privateca pools get-ca-certs CA_POOL \
          --location LOCATION \
          --output-file=root-cert.pem \
          --project PROJECT
      
    2. インスタンスに対して API 呼び出しを行うには、CA 証明書をデータプレーンの Secure Source Manager API に渡します。

      たとえば、次のコマンドは、CA 証明書 root-cert.pem を Secure Source Manager API に渡して、ロケーション us-central1 のプライベート インスタンス my-instance 内のリポジトリを一覧表示します。

      curl \
          --cacert root-cert.pem \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          https://my-instance-01234567890-api.us-central1.sourcemanager.dev/v1/projects/01234567890/locations/us-central1/repositories
      

    次のステップ