限定公開サービス アクセスと Private Service Connect の両方を構成する

このページでは、プライベート サービス アクセス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_NETWORK_NAME \
--psc-auto-connections=network=VPC_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: インスタンスのデータベース バージョン(例: POSTGRES_13)。
  • VPC_NETWORK_NAME: インスタンスが接続する VPC ネットワークの名前とパス(例: "projects/PROJECT_ID/global/networks/default")。
  • VPC_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 ネットワークの名前を指定する。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • INSTANCE_NAME: インスタンスの名前。
  • REGION_NAME: インスタンスのリージョン名。
  • AVAILABILITY_TYPE: インスタンスの高可用性を有効にします。このパラメータには、次のいずれかの値を指定します。
    • REGIONAL: 高可用性を有効にします。本番環境インスタンスに推奨されます。インスタンスは、選択したリージョン内の別のゾーンにフェイルオーバーします。
    • ZONAL: フェイルオーバー機能を提供しません。これがデフォルト値です。

    インスタンスの高可用性の設定と削除の詳細については、既存のインスタンスを高可用性向けに構成するインスタンスの高可用性を無効にするをご覧ください。

  • VPC_NETWORK_NAME: インスタンスが接続する VPC ネットワークの名前とパス(例: "projects/PROJECT_ID/global/networks/default")。
  • RANGE_NAME: このオプションのパラメータには、IP 範囲が割り振られる範囲名を設定します。範囲名は RFC 1035 に準拠し、1 ~ 63 文字にする必要があります。
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。このリストに含まれていないプロジェクトでは、インスタンスに接続する Private Service Connect エンドポイントを作成できません。

  • VPC_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 に設定すると、他の Google Cloud サービスは、内部 IP 接続を介した Cloud SQL 内のデータへのアクセスができなくなります。

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

リクエストの本文(JSON):

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "POSTGRES_13",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": VPC_NETWORK_NAME,
      "allocatedIpRange": "RANGE_NAME",
      "enablePrivatePathForGoogleCloudServices": true,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscAutoConnections": [
          {
            "consumerProject":"SERVICE_PROJECT",
            "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_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 を無効にできます。セキュリティ上の理由から、異なるグループ、チーム、プロジェクト、組織に属する複数の VPC ネットワークからインスタンスに接続できない場合があります。

インスタンスの 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 を有効にするには、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_NETWORK_PATH,project=SERVICE_PROJECT

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

  • INSTANCE_NAME: インスタンスの名前
  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。このリストに含まれていないプロジェクトでは、インスタンスに接続する Private Service Connect エンドポイントを作成できません。

  • VPC_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_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_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 インスタンスに接続するをご覧ください。