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 顧客のユーザーのみを含める必要があります。
複数の企業と連携してソースコードを共同編集する場合は、企業ごとに個別のインスタンスを作成することをおすすめします。
始める前に
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
beta
Google Cloud CLI コンポーネントをインストールします。gcloud components install beta
-
組織に対する Access Context Manager 管理者のロール (
roles/accesscontextmanager.policyAdmin
) -
インスタンスに対するインスタンス オーナーのロール (
roles/sercuresourcemanager.instanceOwner
) -
サービス ID と認証局プールを作成するには:
組織に対する CA Service オペレーション マネージャー (
roles/privateca.caManager
) 次のコマンドを実行して、プロジェクト内に 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
はプロジェクト番号です。CSR ベースの証明書リクエストが許可された認証局(CA)プールを作成します。
CA を作成します。必要に応じて、ルート CA または下位 CA を作成できます。
- ルート CA を作成するには、ルート CA を作成するの手順に沿って操作します。
- Google Cloudで親 CA から下位 CA を作成するには、下位 CA を作成するの手順に沿って操作します。
- 外部 CA から下位 CA を作成するには、外部 CA から下位 CA を作成するの手順に沿って操作します。
ルート CA と下位 CA の違いについて詳しくは、認証局の設定を決定するをご覧ください。
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 に置き換えます。
INSTANCE_ID
は、インスタンスに付ける名前に置き換えます。LOCATION
は、インスタンスを作成するリージョンに置き換えます。サポートされているロケーションについては、ロケーションをご覧ください。PROJECT_ID
は、インスタンスを作成するプロジェクトの名前に置き換えます。CA_PROJECT
(独自の CA 証明書を使用している場合のみ)。CA_LOCATION
は、CA プールを作成したリージョンに置き換えます(独自の CA 証明書を使用している場合のみ)。CA_POOL_NAME
(独自の CA 証明書を使用している場合のみ)。INSTANCE_ID
は、インスタンスに付ける名前に置き換えます。LOCATION
は、インスタンスを作成するリージョンに置き換えます。サポートされているロケーションについては、ロケーションをご覧ください。PROJECT_ID
は、インスタンスを作成するプロジェクトの名前に置き換えます。CA_PROJECT
(独自の CA 証明書を使用している場合のみ)。CA_LOCATION
は、CA プールを作成したリージョンに置き換えます(独自の CA 証明書を使用している場合のみ)。CA_POOL_NAME
(独自の CA 証明書を使用している場合のみ)。OPERATION_NAME
: 作成コマンドのレスポンスから取得したオペレーション名。LOCATION
は、インスタンスを作成するリージョンに置き換えます。サポートされているロケーションについては、ロケーションをご覧ください。Private Service Connect エンドポイントを作成するには、エンドポイントを通じて公開サービスにアクセスするの手順に沿って操作します。
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 です。
Private Service Connect エンドポイントを作成したら、プライベート DNS レコードを設定する必要があります。プライベート DNS レコードの設定方法については、DNS を手動で構成するをご覧ください。
hostConfig.html
、hostConfig.api
、hostConfig.gitHttp
の値を HTTP サービス アタッチメントの内部 IP アドレスにマッピングします。hostConfig.ssh
の値を SSH サービス アタッチメントの内部 IP アドレスにマッピングします。
たとえば、前の出力例では、
hostConfig.html
の値はmy-project-012345678901.us-central1.p.sourcemanager.dev
です。CA をダウンロードするには、次のコマンドを実行します。
gcloud privateca pools get-ca-certs CA_POOL \ --location LOCATION \ --output-file=root-cert.pem \ --project PROJECT
インスタンスに対して 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
- Cloud Build を Private Service Connect Secure Source Manager インスタンスに接続します。
- VPC Service Controls の境界で Secure Source Manager を構成する。
必要なロール
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 プールに送信されます。
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
次のように置き換えます。
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"}}'
次のように置き換えます。
長時間実行のインスタンス作成オペレーションが開始されます。インスタンスの作成には最長で 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-a9b97a2e
は OPERATION_NAME
です。
OPERATION_NAME
は、オペレーションのステータスを確認するために使用する必要があるため、メモしておきます。
オペレーションのステータスを確認するには、次のコマンドを実行します。
gcloud beta source-manager operations describe OPERATION_NAME \
--region=LOCATION
次のように置き換えます。
インスタンスが作成されると、Private Service Connect エンドポイント httpServiceAttachment
と sshServiceAttachment
、および html
、api
、gitHttp
、gitSsh
のホスト名が出力に表示されます。
プライベート インスタンスにアクセスする
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 エンドポイントを設定する
Secure Source Manager API で CA を使用する
Secure Source Manager には、コントロール プレーンとデータプレーンがあります。データプレーン エンドポイントは Secure Source Manager インスタンスによって直接ホストされるため、アクセスするにはインスタンスの API ホスト名に接続する必要があります。
プライベート Secure Source Manager インスタンスを使用するには、サービス ID と認証局プールを作成するセクションで作成した CA を使用する必要があります。