Private Service Connect を使用してインスタンスに接続する

このページでは、Private Service Connect を使用して Cloud SQL インスタンスに接続する方法について説明します。

Private Service Connect を使用すると、異なるグループ、チーム、プロジェクト、組織に属する複数の Virtual Private Cloud(VPC)ネットワークから、プライマリ Cloud SQL インスタンスまたはそのリードレプリカのいずれかに接続できます。

始める前に

Cloud SQL インスタンスでの Private Service Connect の使用のサポートは、gcloud CLI バージョン 416.0.0 以降で利用できます。

ユーザーロール

次の表に、Cloud SQL インスタンスで Private Service Connect を使用するために必要なロールを示します。

ロール 説明
compute.networkAdmin

Cloud SQL インスタンスへの接続を開始する VPC ネットワークを完全に制御できる権限を付与します。IP アドレス、ファイアウォール ルール、Private Service Connect エンドポイントを作成して管理できます。

Private Service Connect を使用して複数の VPC ネットワークから Cloud SQL インスタンスに接続する場合、各ネットワークには独自の管理者が存在します。

dns.admin DNS ゾーンやレコードなど、Cloud DNS リソースに対する完全な制御権を付与します。
cloudsql.admin Cloud SQL インスタンスを完全に制御し、インスタンスのライフサイクルを制御します。
cloudsql.instanceUser Cloud SQL インスタンスへのアクセスを提供します。Cloud SQL Auth Proxy クライアントを介して接続する場合は、Cloud SQL クライアントのロールが必要です。直接接続する場合、Identity and Access Management(IAM)のロールと権限は必要ありません。

Cloud SQL インスタンスを作成する

gcloud CLI、Terraform、または API を使用して、インスタンスを作成し Private Service Connect を有効にできます。

gcloud

インスタンスを作成して Private Service Connect を有効にするには、gcloud sql instances create コマンドを使用します。

gcloud 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 \
--database-version=DATABASE_VERSION
--cpu=NUMBER_OF_vCPUs \
--memory=MEMORY_SIZE \
--root-password=ROOT_PASSWORD

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

  • INSTANCE_NAME: インスタンスの名前。
  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • REGION_NAME: インスタンスのリージョン名。
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。このリストにプロジェクトが含まれていない場合、対象のプロジェクトを使用してインスタンスを作成し、Private Service Connect を有効にすることはできません。

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

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

  • DATABASE_VERSION: インスタンスのデータベース バージョン(例: SQLSERVER_2019_STANDARD)。
  • NUMBER_OF_vCPUs: インスタンスのコア数。
  • MEMORY_SIZE: インスタンスのメモリ量。
  • ROOT_PASSWORD: root Cloud SQL ユーザーのパスワード。

Terraform

Private Service Connect が有効になっているインスタンスを作成するには、google_sql_database_instance Terraform リソースを使用します。

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = [] # Add consumer project IDs here.
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false # Set to "true" to prevent destruction of the resource
}

Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

REST v1

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

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

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

  • ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。このリストにプロジェクトが含まれていない場合、対象のプロジェクトを使用してインスタンスを作成し、Private Service Connect を有効にすることはできません。

  • MACHINE_TYPE: インスタンスのマシンタイプを表す列挙文字列値。例: db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE。ここで、NUMBER_OF_vCPUsMEMORY_SIZE は、インスタンスに必要なコア数とメモリ量です。

HTTP メソッドと URL:

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

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

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "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"
}

REST v1beta4

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

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

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

  • ALLOWED_PROJECTS: 許可されているプロジェクト ID または番号のリスト(カンマ区切り)。このリストにプロジェクトが含まれていない場合、対象のプロジェクトを使用してインスタンスを作成し、Private Service Connect を有効にすることはできません。

  • MACHINE_TYPE: インスタンスのマシンタイプを表す列挙文字列値。例: db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE。ここで、NUMBER_OF_vCPUsMEMORY_SIZE は、インスタンスに必要なコア数とメモリ量です。

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

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

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/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/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

サービス アタッチメントを取得する

Private Service Connect が有効になっている Cloud SQL インスタンスを作成したら、サービス アタッチメント URI を取得し、取得した URI を使用して Private Service Connect エンドポイントを作成します。

gcloud

Private Service Connect が有効になっているインスタンスの概要情報(インスタンスのサービス アタッチメントを指す URI を表示する pscServiceAttachmentLink フィールドなど)を表示するには、gcloud sql instances describe コマンドを使用します。

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

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

  • INSTANCE_NAME: VPC ネットワーク内の Private Service Connect エンドポイントが接続できる Cloud SQL インスタンスの名前
  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号

次の例は、このコマンドの出力例を示しています。

gcloud sql instances describe myinstance \
--project=12345

...
pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment

Terraform

サービス アタッチメント URI を取得するには、google_compute_address Terraform リソースを使用します。

resource "google_compute_address" "default" {
  name         = "psc-compute-address-${google_sql_database_instance.default.name}"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.44" # Replace value with the IP address to reserve.
}

data "google_sql_database_instance" "default" {
  name = resource.google_sql_database_instance.default.name
}

resource "google_compute_forwarding_rule" "default" {
  name                  = "psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region                = "us-central1"
  network               = "default"
  ip_address            = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target                = data.google_sql_database_instance.default.psc_service_attachment_link
}

Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

Private Service Connect エンドポイントを作成する

Private Service Connect エンドポイントの内部 IP アドレスを予約し、対象のアドレスでエンドポイントを作成できます。エンドポイントを作成するには、サービス アタッチメント URI と、インスタンスに対して許可されているプロジェクトが必要です。

gcloud

  1. Private Service Connect エンドポイントの内部 IP アドレスを予約するには、gcloud compute addresses create コマンドを使用します。

    gcloud compute addresses create ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --subnet=SUBNET_NAME \
    --addresses=INTERNAL_IP_ADDRESS

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

    • ADDRESS_NAME: 内部 IP アドレスの名前。
    • PROJECT_ID: エンドポイントの Google Cloud プロジェクトの ID またはプロジェクト番号
    • REGION_NAME: エンドポイントのリージョン名。
    • SUBNET_NAME: IP アドレスのサブネット名。
    • INTERNAL_IP_ADDRESS: 予約する IP アドレス。この IP アドレスは、サブネットのプライマリ IP 範囲内にする必要があります。IP アドレスには、RFC 1918 アドレス、または RFC 以外の範囲を持つサブネットを指定できます。
  2. IP アドレスが予約されていることを確認するには、gcloud compute addresses list コマンドを使用します。

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    レスポンスで、IP アドレスに RESERVED ステータスが表示されていることを確認します。

  3. Private Service Connect エンドポイントを作成し、作成したエンドポイントが Cloud SQL サービス アタッチメントを指すようにするには、gcloud compute forwarding-rules create コマンドを使用します。

    gcloud compute forwarding-rules create ENDPOINT_NAME \
    --address=ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --network=NETWORK_NAME \
    --target-service-attachment=SERVICE_ATTACHMENT_URI

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

    • ENDPOINT_NAME: エンドポイントの名前。
    • NETWORK_NAME: エンドポイントの VPC ネットワークの名前。
    • SERVICE_ATTACHMENT_URI: サービス アタッチメントの URI。
  4. サービス アタッチメントがエンドポイントを受け入れることを確認するには、gcloud compute forwarding-rules describe コマンドを使用します。

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    レスポンスで、pscConnectionStatus フィールドに ACCEPTED ステータスが表示されていることを確認します。エンドポイントはサービス アタッチメントに接続できます。

Cloud SQL インスタンスに接続する

内部 IP アドレス、DNS レコード、Cloud SQL Auth Proxy、Cloud SQL 言語コネクタ、またはその他の Google Cloud アプリケーションを使用して、Private Service Connect を有効にした Cloud SQL インスタンスに接続できます。

DNS マネージド ゾーンと DNS レコードを構成する

Cloud SQL では DNS レコードは自動的には作成されません。代わりに、インスタンス ルックアップ API のレスポンスで DNS 名の候補が提示されます。対応する VPC ネットワークの限定公開 DNS ゾーンに DNS レコードを作成することをおすすめします。これにより、一貫した方法で Cloud SQL Auth Proxy を使用して異なるネットワークから接続できます。

gcloud

  1. Cloud SQL インスタンスの概要情報(インスタンスの DNS 名など)を表示するには、gcloud sql instances describe コマンドを使用します。

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

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

    • INSTANCE_NAME: Cloud SQL インスタンスの名前
    • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号

    レスポンスに DNS 名が表示されていることを確認します。この名前には、次のようなパターンがあります: INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.。例: 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.

  2. 限定公開 DNS ゾーンを作成するには、gcloud dns managed-zones create コマンドを使用します。このゾーンは、Private Service Connect エンドポイントを介して Cloud SQL インスタンスに接続するために使用される VPC ネットワークに関連付けられています。

    gcloud dns managed-zones create ZONE_NAME \
    --project=PROJECT_ID \
    --description=DESCRIPTION \
    --dns-name=DNS_NAME \
    --networks=NETWORK_NAME \
    --visibility=private

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

    • ZONE_NAME: DNS ゾーンの名前
    • PROJECT_ID: ゾーンを含む Google Cloud プロジェクトの ID またはプロジェクト番号
    • DESCRIPTION: ゾーンの説明(Cloud SQL インスタンスの DNS ゾーンなど)
    • DNS_NAME: ゾーンの DNS 名。例: REGION_NAME.sql.goog.REGION_NAME はゾーンのリージョン名)
    • NETWORK_NAME: VPC ネットワークの名前
  3. Private Service Connect エンドポイントを作成した後、ゾーンに DNS レコードを作成するには、gcloud dns record-sets create コマンドを使用します。

    gcloud dns record-sets create DNS_NAME \
    --project=PROJECT_ID \
    --type=RRSET_TYPE \
    --rrdatas=RR_DATA \
    --zone=ZONE_NAME

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

    • DNS_NAME: この手順で先ほど取得した DNS 名。
    • RRSET_TYPE: DNS レコードセットのリソース レコードタイプ(例: A)。
    • RR_DATA: Private Service Connect エンドポイントに割り振られた IP アドレス(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 などの複数の値を入力することもできます(例: 10.1.2.3 10.2.3.4 10.3.4.5)。

DNS レコードを使用して直接接続する

DNS レコードを使用して Cloud SQL インスタンスに接続する前に、次の操作を行います。

  1. Private Service Connect エンドポイントを作成します
  2. インスタンスのサービス アタッチメントがエンドポイントを受け入れることを確認します。エンドポイントのステータスが ACCEPTED であることを確認するには、ステータスを確認します。
  3. DNS マネージド ゾーンと DNS レコードを構成します

これらの条件を満たしたら、DNS 名を使用して、エンドポイントを作成した任意の VPC ネットワークからインスタンスにアクセスします。

gcloud

  1. Private Service Connect エンドポイントの DNS レコードを取得するには、gcloud compute addresses describe コマンドを使用します。

    gcloud compute addresses describe DNS_RECORD \
    --project=PROJECT_ID \
    --region=REGION_NAME

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

    • DNS_RECORD: エンドポイントの DNS レコード
    • PROJECT_ID: エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
    • REGION_NAME: エンドポイントのリージョン名
  2. Cloud SQL インスタンスに接続するには、DNS レコードを使用します。

    sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME

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

    • DNS_RECORD: エンドポイントの DNS レコード
    • DATABASE_NAME: インスタンスに含まれる Cloud SQL for SQL Server データベースの名前
    • USERNAME: インスタンスに接続するユーザーの名前

内部 IP アドレスを介して直接接続する

Private Service Connect が有効になっている Cloud SQL インスタンスに接続する前に、次の操作を完了します。

  1. Private Service Connect エンドポイントを作成します
  2. インスタンスのサービス アタッチメントがエンドポイントを受け入れることを確認します。エンドポイントのステータスが ACCEPTED であることを確認するには、ステータスを確認します。

これらの条件を満たしたら、エンドポイントの IP アドレスを使用して、エンドポイントを作成した任意の VPC ネットワークからインスタンスにアクセスします。

gcloud

  1. Private Service Connect エンドポイントの IP アドレスを取得するには、gcloud compute addresses describe コマンドを使用します。

    gcloud compute addresses describe ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

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

    • ADDRESS_NAME: エンドポイントの IP アドレスの名前
    • PROJECT_ID: エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
    • REGION_NAME: エンドポイントのリージョン名
  2. Cloud SQL インスタンスに接続するには、内部 IP アドレスを使用します。

    sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME

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

    • IP_ADDRESS: エンドポイントの IP アドレス
    • DATABASE_NAME: インスタンスに含まれる Cloud SQL for SQL Server データベースの名前
    • USERNAME: インスタンスに接続するユーザーの名前

Cloud SQL Auth Proxy を使用して接続する

Cloud SQL Auth Proxy は、承認済みネットワークや SSL の構成を必要とせずに、Private Service Connect が有効なインスタンスへの安全なアクセスを提供するコネクタです。

Cloud SQL Auth Proxy クライアントの接続を許可するには、インスタンスに指定された推奨 DNS 名に一致する DNS レコードを設定します。DNS レコードは、DNS リソースとドメイン名のマッピングです。

Cloud SQL Auth Proxy をダウンロードしてインストールする

Private Service Connect が有効になっているインスタンスに接続するには、Cloud SQL Auth Proxy のバイナリをダウンロードしてインストールする必要があります。ダウンロードするバイナリは、オペレーティング システムと、使用しているカーネルが 32 ビットか 64 ビットかによって異なります。新しいハードウェアのほとんどは 64 ビットのカーネルを使用しています。

お使いのマシンが 32 ビットと 64 ビットのどちらのカーネルを実行しているかわからない場合は、Linux または macOS で uname -a コマンドを使用します。Windows の場合は、Windows のドキュメントをご覧ください。

Cloud SQL Auth Proxy を起動する

Cloud SQL Auth Proxy は、Private Service Connect が有効になっているインスタンスへの接続をサポートしています。詳細については、Cloud SQL Auth Proxy を起動するをご覧ください。

gcloud

  1. Cloud SQL インスタンスの概要情報(インスタンスの接続名など)を表示するには、gcloud sql instances describe コマンドを使用します。この接続名は PROJECT_ID:REGION_NAME:INSTANCE_NAME の形式で記述します。

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID \
    --format='value(connectionName)'

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

    • INSTANCE_NAME: Cloud SQL インスタンスの名前
    • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  2. インスタンス接続名をコピーします。
  3. Cloud SQL Auth Proxy を起動します。

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    INSTANCE_CONNECTION_NAME を、前のステップでコピーしたインスタンス接続名に置き換えます。

Cloud SQL 言語コネクタを使用して接続する

Cloud SQL 言語コネクタは、Private Service Connect が有効になっている Cloud SQL インスタンスへの安全なアクセスを提供するライブラリであり、承認済みネットワークや SSL 構成は不要です。

Cloud SQL 言語コネクタとの接続を許可するには、インスタンスに指定された推奨 DNS 名に一致する DNS レコードを設定します。DNS レコードは、DNS リソースとドメイン名のマッピングです。

Cloud SQL 言語コネクタは、それぞれのライブラリ内の PSC IP タイプを介した Private Service Connect 接続をサポートしています。

App Engine スタンダード環境、Cloud Run、Cloud Functions から接続する

Private Service Connect が有効になっている Cloud SQL インスタンスに接続するには、App Engine スタンダード環境Cloud Run、または Cloud Functions を使用します。

このようなサーバーレス環境では、Cloud SQL 言語コネクタと、IP アドレスとポート番号を使用した直接 TCP 接続の両方がサポートされています。直接 TCP 接続の場合、これは Private Service Connect エンドポイントを作成するときに予約する IP アドレスです。IP アドレスは、データベース ホストのアドレスとして指定できます。

エンドポイントに DNS レコードを作成する場合は、このレコードをホストに指定できます。

BigQuery から接続する

Cloud SQL のデータにアクセスし、内部 IP 接続を介してこのデータに対してクエリを実行するには、
--enable-google-private-path パラメータを使用します。このパラメータは次の場合にのみ有効です。

  • --no-assign-ip パラメータを使用する。
  • --network パラメータを使用して、内部接続の作成に使用する VPC ネットワークの名前を指定する。

接続をテストする

Private Service Connect が有効になっている Cloud SQL インスタンスへのインバウンド接続をテストするには、Private Service Connect エンドポイントの IP アドレスを宛先 IP アドレスに設定します。

gcloud

Private Service Connect が有効になっている Cloud SQL インスタンスの接続テストを作成するには、gcloud network-management connectivity-tests create コマンドを使用します。

gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \
--source-instance=SOURCE_INSTANCE \
--destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \
--destination-network=DESTINATION_NETWORK \
--destination-port=DESTINATION_PORT \
--protocol=tcp

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

  • CONNECTIVITY_TEST_NAME: 接続テストの名前。
  • SOURCE_INSTANCE: 送信元 IP アドレスがある Compute Engine インスタンスの URI(例: projects/myproject/zones/myzone/instances/myinstance)。
  • DESTINATION_CLOUD_SQL_INSTANCE: Cloud SQL インスタンスの URL(例: projects/myproject/instances/myinstance)。
  • DESTINATION_NETWORK: 宛先 IP アドレスがある VPC ネットワークの URI(例: projects/myproject/global/networks/mynetwork)。
  • DESTINATION_PORT: インスタンス用に予約されたポート番号。Cloud SQL for SQL Server インスタンスの場合、ポート番号は 1433 です。

制限事項

  • Private Service Connect が有効になっている Cloud SQL インスタンスのサービス アタッチメントに接続する Private Service Connect エンドポイントは、20 個まで設定できます。
  • 次のフラグが無効であるか、影響を受けています。
    • Private Service Connect が有効になっている Cloud SQL インスタンスは、外部 IP 接続などの他の接続タイプを使用できないため、--no-assign-ip: ではこのフラグを使用します。
    • --authorized-networks: このフラグを使用して承認済みネットワークを追加することはできません。
    • --network: このフラグはプライベート サービス アクセスに関連付けられているため使用できません。
    • --allocated-ip-range-name: 許可された IP 範囲名がサポートされていないため、このフラグは使用できません。
  • Private Service Connect が有効になっているインスタンスの外部レプリカを作成することはできません。
  • 既存のインスタンスで Private Service Connect を有効または無効にすることはできません。
  • Private Service Connect が有効になっているインスタンスを、プライベート サービス アクセスまたは外部 IP 接続を使用するように構成することはできません。
    • Private Service Connect が有効になっているインスタンスでは、外部 IP 接続を有効にできません。
    • 限定公開サービス アクセスの有効化や承認済みネットワークのインスタンスへの追加はできません。
    • インスタンスの接続タイプは変更できません。
    • Private Service Connect が有効になっている Cloud SQL インスタンスに gcloud sql connect コマンド、Cloud Shell、Cloud Build、Database Migration Service を使用して接続することはできません。
    • Private Service Connect が有効になっている Cloud SQL インスタンスへの接続をテストする場合、次の項目は設定できません。
      • 直接接続の宛先としてのインスタンスの内部 IP アドレスまたは DNS 名
      • 接続元としてのインスタンス
      • 接続元としての Private Service Connect エンドポイントの IP アドレス
    • 承認済みネットワークを使用した IP ベースの許可リストはサポートされていません。
    • Private Service Connect が有効になっている Cloud SQL インスタンスでは、Managed Service for Microsoft Active Directory(Managed Microsoft AD)とリンクサーバーの両方はサポートされていません。

    トラブルシューティング

    このセクションでは、Private Service Connect が有効になっている Cloud SQL インスタンスに関連する問題と、その問題のトラブルシューティング手順について説明します。

    問題 トラブルシューティング
    インスタンスのサービス アタッチメントは、Private Service Connect エンドポイントを受け入れません。
    1. エンドポイントのステータスを確認するには、gcloud compute forwarding-rules コマンドを使用します。

      
      gcloud compute forwarding-rules ENDPOINT_NAME \
      --project=PROJECT_ID \
      --region=REGION_NAME \
      | grep pscConnectionStatus

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

      • ENDPOINT_NAME: エンドポイントの名前。
      • PROJECT_ID: エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
      • REGION_NAME: エンドポイントのリージョン名
    2. エンドポイントのステータスが ACCEPTED であることを確認します。ステータスが PENDING の場合、インスタンスはエンドポイントを含む Google Cloud プロジェクトを許可していません。エンドポイントが作成されるネットワーク プロジェクトが許可されていることを確認します。詳細については、Private Service Connect が有効になっているインスタンスを編集するをご覧ください。

    次のステップ

    • プライベート IP の詳細を確認する。
    • Private Service Connect の詳細を確認する。
    • Private Service Connect が有効になっているインスタンスのリードレプリカの作成の詳細を確認する。
    • Private Service Connect が有効になっているインスタンスのクローン作成の詳細を確認する。
    • Private Service Connect が有効になっているインスタンスの概要情報の表示について詳細を確認する。
    • Private Service Connect が有効になっているインスタンスの高可用性の設定削除の詳細を確認する。
    • Private Service Connect が有効になっているインスタンスの編集削除の詳細を確認する。