このページでは、プライベート サービス アクセスと Private Service Connect の両方を構成する方法について説明します。
プライベート サービス アクセスを構成すると、IP アドレス範囲を割り振り、Google Cloud プロジェクトの Virtual Private Cloud(VPC)ネットワークの限定公開サービス接続を作成できます。これにより、VPC ネットワーク内のリソースは Cloud SQL インスタンスに接続できます。
Private Service Connect を構成すると、異なるグループ、チーム、プロジェクト、組織に属する複数の VPC ネットワークから、プライマリ Cloud SQL インスタンスまたはそのリードレプリカのいずれかに接続できます。
プライベート サービス アクセスと Private Service Connect をサポートするインスタンスを作成する
プライベート サービス アクセスと Private Service Connect の両方をサポートする Cloud SQL インスタンスを作成すると、両方のサービスのメリットを活用できます。詳細については、インスタンスの接続オプションをご覧ください。
Private Service Connect を使用すると、異なるグループ、チーム、プロジェクト、組織に属する複数の VPC ネットワークから Cloud SQL インスタンスに接続できます。
gcloud CLI または API を使用して、プライベート サービス アクセスと Private Service Connect をサポートする Cloud SQL インスタンスを作成できます。
gcloud
プライベート サービス アクセスと Private Service Connect の両方をサポートするインスタンスを作成するには、gcloud beta sql instances create
コマンドを使用します。
gcloud beta sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --network=VPC_PSA_NETWORK_PATH \ --enable-bin-log \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
次のように置き換えます。
- INSTANCE_NAME: インスタンスの名前。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- REGION_NAME: インスタンスのリージョン名。
ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。このリストに含まれていないプロジェクトでは、インスタンスに接続する Private Service Connect エンドポイントを作成できません。
- AVAILABILITY_TYPE: インスタンスの高可用性を有効にします。このパラメータには、次のいずれかの値を指定します。
REGIONAL
: 高可用性を有効にします。本番環境インスタンスに推奨されます。インスタンスは、選択したリージョン内の別のゾーンにフェイルオーバーします。ZONAL
: フェイルオーバー機能を提供しません。これがデフォルト値です。
インスタンスの高可用性の設定と削除の詳細については、既存のインスタンスを高可用性向けに構成するとインスタンスの高可用性を無効にするをご覧ください。
- RANGE_NAME: このオプションのパラメータには、IP 範囲が割り振られる範囲名を設定します。範囲名は
RFC 1035
に準拠し、1 ~ 63 文字にする必要があります。 - MACHINE_TYPE: インスタンスのマシンタイプ。
- DATABASE_VERSION: インスタンスのデータベース バージョン(例:
MYSQL_8_0
)。 - VPC_PSA_NETWORK_PATH: インスタンスが接続する VPC ネットワークの名前とパス(
"projects/PROJECT_ID/global/networks/default"
など)。このネットワークは、プライベート サービス アクセス接続と、Cloud SQL インスタンスのプライベート サービス アクセス IP アドレスに使用されます。 - VPC_PSC_NETWORK_PATH: Private Service Connect エンドポイントを作成する VPC ネットワークへのパス。例:
projects/my-host-project/global/networks/default
。 SERVICE_PROJECT: Private Service Connect エンドポイントが作成されるプロジェクト。VPC ネットワークが共有 VPC でない場合は、ネットワークのホスト プロジェクトのみにできます。共有 VPC の場合は、ホスト プロジェクトまたはサービス プロジェクトのいずれかになります。
Private Service Connect が有効になっているインスタンスに接続する方法については、Cloud SQL インスタンスに接続するをご覧ください。
パブリック IP を無効にするには、--no-assign-ip
パラメータを使用します。
また、必要に応じて --enable-google-private-path
パラメータを使用して、BigQuery などの他の Google Cloud サービスが Cloud SQL 内のデータにアクセスし、プライベート IP 接続でこのデータに対するクエリを実行できるようにします。このパラメータは次の場合にのみ有効です。
--no-assign-ip
パラメータを使用する。--network
パラメータを使用して、プライベート接続の作成に使用する VPC ネットワークの名前を指定する。
Terraform
プライベート サービス アクセスと Private Service Connect の両方が有効になっているインスタンスを作成するには、
google_sql_database_instance
Terraform リソースを使用します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行う必要があります。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- INSTANCE_NAME: インスタンスの名前。
- REGION_NAME: インスタンスのリージョン名。
- AVAILABILITY_TYPE: インスタンスの高可用性を有効にします。このパラメータには、次のいずれかの値を指定します。
REGIONAL
: 高可用性を有効にします。本番環境インスタンスに推奨されます。インスタンスは、選択したリージョン内の別のゾーンにフェイルオーバーします。ZONAL
: フェイルオーバー機能を提供しません。これがデフォルト値です。
インスタンスの高可用性の設定と削除の詳細については、既存のインスタンスを高可用性向けに構成するとインスタンスの高可用性を無効にするをご覧ください。
- VPC_PSA_NETWORK_PATH: インスタンスが接続する VPC ネットワークのパス(
"projects/PROJECT_ID/global/networks/default"
など)。このネットワークは、プライベート サービス アクセス接続と、Cloud SQL インスタンスのプライベート サービス アクセス IP アドレスに使用されます。 - RANGE_NAME: このオプションのパラメータには、IP 範囲が割り振られる範囲名を設定します。範囲名は
RFC 1035
に準拠し、1 ~ 63 文字にする必要があります。 ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。このリストに含まれていないプロジェクトでは、インスタンスに接続する Private Service Connect エンドポイントを作成できません。
- VPC_PSC_NETWORK_PATH: Private Service Connect エンドポイントを作成する VPC ネットワークへのパス。例:
projects/my-host-project/global/networks/default
。 SERVICE_PROJECT: Private Service Connect エンドポイントが作成されるプロジェクト。VPC ネットワークが共有 VPC でない場合は、ネットワークのホスト プロジェクトのみにできます。共有 VPC の場合は、ホスト プロジェクトまたはサービス プロジェクトのいずれかになります。
- MACHINE_TYPE: インスタンスのマシンタイプ。
Private Service Connect が有効になっているインスタンスに接続する方法については、Cloud SQL インスタンスに接続するをご覧ください。
インスタンスに内部 IP アドレスがあるため、ipv4Enabled
パラメータを false
に設定します。
オプションの enablePrivatePathForGoogleCloudServices
パラメータを true
に設定すると、BigQuery などの他の Google Cloud サービスが Cloud SQL 内のデータにアクセスし、内部 IP 接続を介してこのデータに対してクエリを実行できるようになります。このパラメータを false
に設定すると、他のサービスは内部 IP 接続を介して Cloud SQL 内のデータにアクセスできなくなります。 Google Cloud
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{ "name": "INSTANCE_NAME", "project": PROJECT_ID", "region": "REGION_NAME", "databaseVersion": "MYSQL_8_0", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true, "kind": "sql#backupConfiguration", "startTime": "00:00" }, "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": VPC_PSA_NETWORK_PATH, "allocatedIpRange": "RANGE_NAME", "enablePrivatePathForGoogleCloudServices": true, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
インスタンスの Private Service Connect を無効にする
プライベート サービス アクセスと Private Service Connect の両方が有効になっているインスタンスで、Private Service Connect を無効にできます。
インスタンスで Private Service Connect を無効にすると、このオペレーションには 8 分かかり、インスタンスのダウンタイムは約 45 秒になります。オペレーションが完了すると、プライベート サービス アクセスと Private Service Connect 接続パスの両方が同じインスタンスに存在しなくなります。Private Service Connect を使用してインスタンスに接続することはできません。
インスタンスの Private Service Connect を無効にするには、gcloud CLI または API を使用します。
gcloud
インスタンスの Private Service Connect を無効にするには、gcloud beta sql instances patch
コマンドを使用します。
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --no-enable-private-service-connect \ --clear-allowed-psc-projects
次のように置き換えます。
- INSTANCE_NAME: インスタンスの名前
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: インスタンスの名前
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscEnabled": "false", "allowedConsumerProjects": [{}] } }, "kind": "sql#settings" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
インスタンスで Private Service Connect を有効にする
プライベート サービス アクセスがすでに有効になっているインスタンスで Private Service Connect を有効にできます。Private Service Connect を使用して、複数の VPC ネットワークから Cloud SQL インスタンスに接続できます。
インスタンスで Private Service Connect を有効にすると、このオペレーションには 8 分ほどかかり、インスタンスのダウンタイムは約 45 秒になります。オペレーションが完了すると、プライベート サービス アクセスと Private Service Connect 接続パスの両方が同じインスタンスに共存します。
インスタンスで Private Service Connect を有効にするには、gcloud CLI または API を使用します。
gcloud
インスタンスで Private Service Connect を有効にするには、gcloud beta sql instances patch
コマンドを使用します。
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
次のように置き換えます。
- INSTANCE_NAME: インスタンスの名前
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。このリストに含まれていないプロジェクトでは、インスタンスに接続する Private Service Connect エンドポイントを作成できません。
- VPC_PSC_NETWORK_PATH: Private Service Connect エンドポイントが作成される VPC ネットワークへのパス。例:
projects/my-host-project/global/networks/default
。 SERVICE_PROJECT: Private Service Connect エンドポイントが作成されるプロジェクト。VPC ネットワークが共有 VPC でない場合は、ネットワークのホスト プロジェクトのみにできます。共有 VPC の場合は、ホスト プロジェクトまたはサービス プロジェクトのいずれかになります。
Private Service Connect が有効になっているインスタンスに接続する方法については、Cloud SQL インスタンスに接続するをご覧ください。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- INSTANCE_NAME: インスタンスの名前。
- ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。これらのプロジェクトは、Private Service Connect を使用するようにすでに構成されているプロジェクトをオーバーライドします。このリストに含まれていないプロジェクトでは、インスタンスに接続する Private Service Connect エンドポイントを作成できません。
- VPC_PSC_NETWORK_PATH: Private Service Connect エンドポイントが作成される VPC ネットワークへのパス。例:
projects/my-host-project/global/networks/default
。 SERVICE_PROJECT: Private Service Connect エンドポイントが作成されるプロジェクト。VPC ネットワークが共有 VPC でない場合は、ネットワークのホスト プロジェクトのみにできます。共有 VPC の場合は、ホスト プロジェクトまたはサービス プロジェクトのいずれかになります。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": "true", "allowedConsumerProjects": [ALLOWED_PROJECTS] } }, "kind": "sql#settings" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Private Service Connect が有効になっているインスタンスに接続する方法については、Cloud SQL インスタンスに接続するをご覧ください。