プライベート IP

このページでは、Cloud SQL でプライベート IP を使用する方法について説明します。プライベート IP を使用するように Cloud SQL インスタンスを構成する詳細な手順については、プライベート IP の構成をご覧ください。

概要

プライベート IP を使用して Cloud SQL インスタンスにアクセスできるようにするには、プライベート サービス アクセスを使用します。プライベート サービス アクセスは、お客様の VPC ネットワークと、基盤となる Google サービスの VPC ネットワーク(Cloud SQL インスタンスが存在するネットワーク)との間の VPC ピアリング接続として実装されます。複数の IP 範囲を割り振ることもできますが、プライベート IP に使用される IP 範囲は Google によって割り振られます。プライベート サービス アクセスを使用する IP トラフィックが公共のインターネットに公開されることはないため、攻撃ベクトルを限定できます。また、プライベート IP はパブリック IP よりもネットワーク レイテンシを低く抑えることができます。

プライベート サービス アクセスを使用して、以下の対象に接続できます。

  • VPC ネットワークにアクセスできる Cloud SQL リソース。

  • VPN トンネルまたは Cloud Interconnect を介して外部ソースから VPC ネットワークに接続する Cloud SQL リソース。

プライベート IP を経由して、どのリージョンからでも接続できます。プロジェクト間で共有 VPC を使用して接続することもできます。

次の例では、お客様の VPC ネットワークが Google サービスの 10.240.0.0/16 アドレス範囲を割り当て、割り当て範囲を使用するプライベート接続を確立しました。各 Google サービスは、Cloud SQL インスタンスなどの新しいリソースを所定のリージョンにプロビジョニングするために、割り当てられたブロックからサブネットを作成します。

プライベート IP 構成の図の概要。

  • プライベート接続には 10.240.0.0/16 割り当て範囲が割り当てられます。Google サービスは、新しいリソースがプロビジョニングされるサブネットをこの割り当てから作成できます。
  • プライベート接続の Google サービス側では、Google がお客様のプロジェクトを作成します。このプロジェクトは分離されていて他のお客様と共有されることはなく、費用はお客様がプロビジョニングしたリソースに対してのみ発生します。
  • 各 Google サービスは、リソースをプロビジョニングするためのサブネットを作成します。サブネットの IP アドレス範囲は通常、/24 CIDR ブロックです。これはサービスによって選択されるもので、割り当てられた IP アドレス範囲から取得されます。サービス プロデューサーのサブネットは変更できません。サービスは、そのサービスで以前に作成された既存のリージョン サブネットに新しいリソースをプロビジョニングします。サブネットがいっぱいの場合、サービスは同じリージョンに新しいサブネットを作成します。
  • お客様のネットワーク内の VM インスタンスは、サービスがサポートしていれば、あらゆるリージョンのサービス リソースにアクセスできます。サービスによっては、リージョン間通信をサポートしていないものもあります。たとえば、VM インスタンスは、同じリージョンにある Cloud SQL インスタンスとのみ通信できます。詳細については、関連するサービスのドキュメントをご覧ください。
  • VM インスタンスが異なるリージョンのリソースと通信する場合、リージョン間トラフィックの下り(外向き)料金が引き続き適用されます。
  • Cloud SQL インスタンスには、IP アドレス 10.240.0.2 が割り当てられます。お客様の VPC ネットワークでは、宛先が 10.240.0.2 のリクエストは、プライベート接続を経由してサービス プロデューサーのネットワークへとルーティングされます。サービス ネットワークに到達すると、サービス ネットワークにはリクエストを正しいリソースに送るルートが含まれます。
  • VPC ネットワーク間のトラフィックは、公共のインターネットを経由せず、Google のネットワーク内を内部的に転送されます。

プライベート IP の要件

プライベート IP を使用するには、ネットワークとアプリケーション環境が以下の要件を満たしている必要があります。また、初めてプライベート IP を設定するには、追加の IAM 権限が必要です。

アプリケーション環境要件

  • GKE から接続する場合は、VPC ネイティブ クラスタ上で GKE 1.8 以降を実行している必要があります。

API と IAM の要件

  • プロジェクトで Service Networking API を有効にする必要があります。
  • 共有 VPC ネットワークを使用している場合は、ホスト プロジェクトでもこの API を有効にする必要があります。

  • プライベート サービス アクセス接続を管理するため、ユーザーには次の IAM 権限が必要です。必要な権限がない場合は、権限不足のエラーが発生することがあります。
    • compute.networks.list
    • compute.addresses.create
    • compute.addresses.list
    • servicenetworking.services.addPeering

    また、共有 VPC ネットワークを使用している場合は、ユーザーをホスト プロジェクトに追加して、そのホスト プロジェクトのユーザーに同じ権限を割り当てる必要もあります。

ネットワークに関する問題

Cloud SQL は、リージョンとデータベースのタイプの組み合わせごとに、プライベート サービス アクセス IP 範囲から /24 サブネットを割り振ります。たとえば、MySQL インスタンスを 2 つのリージョンに配置するには、割り当てられた IP アドレス範囲にサイズが /24 の利用可能なサブネットが少なくとも 2 つ含まれている必要があり、2 つのリージョンに MySQL と PostgreSQL をデプロイするには、サイズが /24 の利用可能なサブネットが 4 つ必要です。SQL Server インスタンスは、リージョン内の MySQL インスタンスと同じサブネットを共有できます。

プライベート IP アドレスを使用して Cloud SQL インスタンスへ接続すると、RFC 1918 アドレス範囲が自動的に承認されます。これにより、すべてのプライベート クライアントは、Cloud SQL Auth Proxy を経由せずにデータベースにアクセスできます。RFC 1918 以外のアドレス範囲は、承認済みネットワークとして構成する必要があります。

Cloud SQL は、デフォルトでは VPC から RFC 1918 以外のサブネット ルートを学習しません。RFC 1918 以外のルートをエクスポートするには、Cloud SQL へのネットワーク ピアリングを更新する必要があります。

セキュリティ

プライベート サービス アクセスを介したトラフィックでは、特定のレベルの暗号化が提供されています。詳細については、Google Cloud の仮想ネットワークの暗号化と認証をご覧ください。

Cloud SQL Auth Proxy は、プライベート IP を使用して接続するように構成できます。また、IAM 認証情報を使用して認証を行い、ローテーション SSL / TLS 証明書を使用してエンドツーエンドでの暗号化を実施します。

セキュリティ要件で、ユーザーが管理するセルフマネージド SSL / TLS 証明書が必要とされる場合は、SSL / TLS の構成方法をご覧ください。

プライベート IP アドレスを持つインスタンスごとに 1 つの VPC ネットワークを作成すると、すべてのインスタンスを「デフォルト」の VPC ネットワークに接続するよりも適切にネットワークが分離されます。

ネットワークのプライベート サービス アクセスの設定の概要

特定の VPC ネットワークで初めてプライベート IP 接続を構成する場合は、Cloud SQL のプライベート サービス アクセスを設定する 1 回限りの手順を行う必要があります。

プライベート サービス アクセスを確立したら、プライベート IP を使用するように構成された Cloud SQL インスタンスを作成できます。また、既存の Cloud SQL インスタンスにプライベート IP を構成することもできます。詳しい手順については、プライベート IP の構成をご覧ください。

確立済みの接続を変更するたびに、vpc-peerings の更新もする必要があります。

プライベート IP に関するクイック リファレンス

プライベート IP を使用して Cloud SQL インスタンスを管理する場合、次のトピックが役立ちます。

トピック ディスカッション
共有 VPC ネットワーク 共有 VPC ネットワーク内にプライベート IP アドレスを持つ Cloud SQL インスタンスを作成できます。ただし、共有 VPC ネットワークのプライベート IP アドレスを既存の Cloud SQL インスタンスに割り当てることはできません。
リージョン プライベート IP はリージョン間で接続できます。
レガシー ネットワーク レガシー ネットワークから Cloud SQL インスタンスのプライベート IP に接続することはできません。レガシー ネットワークでは、VPC ネットワーク ピアリングやプライベート サービス アクセスがサポートされていません。
プライベート IP の削除 プライベート IP を使用するように Cloud SQL インスタンスを構成した後で、そのインスタンスからプライベート IP 機能を削除することはできません。
パブリック IP とプライベート IP パブリック IP とプライベート IP の両方を使用して同じ Cloud SQL インスタンスに接続できます。どちらの接続方法も他方に影響しません。
既存の Cloud SQL インスタンス インスタンス作成時にプライベート IP を使用するようにインスタンスを構成できます。プライベート IP を使用するように既存のインスタンスを構成することもできます。プライベート IP を使用するように既存のインスタンスを構成するか、接続先のネットワークを変更すると、インスタンスが再起動され、数分のダウンタイムが発生します。
静的 IP アドレス Cloud SQL インスタンスのプライベート IP アドレスは静的です。これは変更できません。
レプリカ レプリカは、プライマリ インスタンスからプライベート IP ステータスを継承します。レプリカにプライベート IP を直接構成することはできません。プライベート IP アドレスを使用してレプリカに接続している場合は、プライマリ インスタンスから継承されるため、レプリカに追加の VPC プライベート接続を作成する必要はありません。
Cloud SQL Auth Proxy プライベート IP を使用して Cloud SQL インスタンスに接続するには、Cloud SQL Auth Proxy が、そのインスタンスと同じ VPC ネットワークにアクセスできるリソース上に存在する必要があります。インスタンスで両方の IP タイプが有効になっている場合、Cloud SQL Auth Proxy は、デフォルトでパブリック IP を使用します。プライベート IP を使用するようにするには、Cloud SQL Auth Proxy に -ip_address_types=PRIVATE フラグを渡す必要があります。詳細
サーバーレス VPC アクセス App Engine スタンダード環境App Engine フレキシブル環境Cloud Run、または Cloud Functions などのサーバーレス ソースから接続する場合は、アプリケーションまたは関数は、Cloud SQL Auth Proxy を使用せずにサーバーレス VPC アクセスを介してインスタンスに直接接続します。
VPC ネットワーク ピアリング プライベート サービス アクセスを使用する接続は、VPC ネットワーク ピアリングに依存します。ただし、このピアリングは Google Cloud の内部にあるため、VPC ネットワーク ピアリングを明示的に作成する必要はありません。プライベート サービス アクセス接続を作成した後、その基になる VPC ネットワーク ピアリングの情報は Cloud Console の VPC ネットワーク ピアリングのページで確認できますが、プライベート接続を削除する場合を除き、そのページで VPC ネットワーク ピアリングを削除しないでください。

VPC ネットワーク ピアリングの詳細を確認する。

VPC Service Controls VPC Service Controls を使用すると、データの引き出しのリスクを軽減できます。VPC Service Controls で Cloud SQL インスタンスの周囲に境界を作成します。VPC Service Controls により、境界内部のリソースへのアクセスが制限されます。境界内のクライアントとリソースだけが相互に通信可能です。詳細については、VPC Service Controls の概要をご覧ください。また、VPC Service Controls を使用する場合の Cloud SQL の制限事項も確認してください。Cloud SQL で VPC Service Controls を使用するには、VPC Service Controls の構成をご覧ください。
推移的ピアリング 通信できるのは、直接ピアリングしたネットワークだけです。推移的ピアリングはサポートされていません。たとえば、VPC ネットワーク N1 が N2 と N3 にピアリングされ、N2 と N3 が直接接続されていない場合、VPC ネットワーク N2 は VPC ネットワーク ピアリング経由で VPC ネットワーク N3 と通信できません。

1 つのプロジェクト内のクライアントは、共有 VPC ネットワークを使用して、複数のプロジェクトの Cloud SQL インスタンスに接続できます。

Cloud SQL インスタンスの移動 Cloud SQL インスタンスは、プロジェクトが所有するネットワーク間でのみ移動できます。また、Cloud SQL インスタンスはプロジェクト間で移動することも、異なるプロジェクトでホストされているネットワーク間で移動することもできません。

次のステップ