プライベート 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 を使用して接続することもできます。

次の図は、プライベート IP で構成された Cloud SQL インスタンス(DB1 および DB2)と同じ GCP プロジェクト内にある Compute Engine インスタンス(VM1)を示しています。Cloud SQL インスタンスの IP アドレスは、プライベート サービス アクセスによって割り当てられた範囲内にあり、プライベート サービス接続を介して VPC ネットワークにピアリングされます。

プライベート IP 構成の図の概要。上記のテキストに記載。

プライベート IP の要件

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

ネットワークの要件

新しい VPC ネットワークを作成するときに、ネットワークに割り振られる IP アドレス範囲を定義し、プライベート サービス接続を作成する必要があります。アドレス範囲には Cloud SQL インスタンスの IP アドレスが含まれますが、このアドレス範囲はプロジェクトの VPC ネットワーク内の他の範囲と重複することはできません。

IP アドレス範囲を割り振ることで、VPC ネットワーク内のカスタムルートのサブネット IP 範囲と宛先が、プライベート サービス アクセス接続で使用されるアドレス範囲と重複することを回避できます。CIDR ブロックを制御する場合は、割り当てられる IP 範囲を手動で作成できます。また、Google Cloud で自動的に作成することもできます。

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

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

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

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

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

API と IAM の要件

  • プロジェクトで Service Networking API を有効にする必要があります。

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

  • プライベート サービス アクセスを確立するには、compute.networkAdmin の IAM ロールが必要です。

    共有 VPC ネットワークを使用している場合は、ホスト プロジェクトのユーザーに compute.networkAdmin ロールも割り当てる必要があります。

    ネットワークでプライベート サービス アクセスを確立した後は、compute.networkAdmin IAM ロールがなくても、プライベート IP を使用するようにインスタンスを構成できます。

セキュリティ

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

Cloud SQL 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 の構成をご覧ください。

プライベート 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 をレプリカ上で直接構成することはできません。
Cloud Run Cloud Run ではプライベート IP を使用できません。
Cloud SQL Proxy プライベート IP を使用して Cloud SQL インスタンスに接続するには、プロキシがそのインスタンスと同じ VPC ネットワークにアクセスできるリソース上にある必要があります。インスタンスで両方の IP タイプが有効になっている場合、プロキシはデフォルトでパブリック IP を使用します。プライベート IP を使用していることを確認する場合は、-ip_address_types=PRIVATE フラグをプロキシに渡す必要があります。詳細については、こちらをご覧ください。
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 と通信できません。

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

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

次のステップ