Cloud SQL のプライベート サービス アクセスの概要

このドキュメントでは、プライベート サービス アクセスが Cloud SQL にプライベート IP 接続を提供する方法について説明します。また、IP アドレスの割り振り、ネットワークとセキュリティに関する考慮事項、マルチ VPC 接続についても説明します。

プライベート サービス アクセスは、VPC ネットワークと、Cloud SQL インスタンスが存在するサービス提供者の VPC ネットワークとの間の VPC ネットワーク ピアリング接続として実装されます。このプライベート ネットワーク接続を使用すると、VPC ネットワーク内の VM インスタンスとアクセスする Google Cloudサービスで、プライベート IP アドレスを使用して Cloud SQL インスタンスと排他的に通信できるようになります。VM インスタンスは、インターネット アクセスまたは外部 IP アドレスがなくても、プライベート サービス アクセスを介してサービスにアクセスできます。

IP アドレス

VPC ネットワークでプライベート サービス アクセスを使用するには、VPC で 1 つ以上の IP アドレス範囲を使用できる必要があります(IP アドレスの詳細については、IP アドレスをご覧ください)。これらの範囲は、Cloud SQL と使用予定の他の Google Cloudマネージド サービスに十分な大きさである必要があります。Cloud SQL と他の Google Cloudサービスには、割り振られた範囲内にある専用の IP ブロックが必要です。このようなブロックの最小サイズは 256 アドレス(プレフィックス長 /24)ですが、推奨サイズは 65,536 アドレス(プレフィックス長 /16)です。

複数のリージョンまたは別のデータベース タイプでインスタンスを作成する場合は、各リージョンまたはデータベース タイプで使用可能な少なくとも /24 の IP アドレス範囲が必要です。これには、Filestore や Memorystore などの他のアプリケーションが含まれます。

プライベート サービス アクセスを設定するときに、既存の範囲を選択するか、新しい範囲を割り振ることができます。次のセクションで説明するように、 Google Cloud で範囲を割り振るようにすると、 Google Cloud は default-ip-range という名前でプレフィックス長 /24 の範囲を割り振ります。

個別の CIDR の範囲を使用する場合

Cloud SQL は IP 範囲の単位として /24 CIDR の範囲を使用するため、個別の /24 範囲が必要になる条件がいくつかあります。

  • リージョン分離: 2 つの Cloud SQL インスタンスを 2 つの個別のリージョンに作成する場合は、少なくとも 2 つの個別の /24 CIDR 範囲を割り当てる必要があります。各 IP 範囲の単位は、単一リージョン内の Cloud SQL インスタンスにのみ使用できます。
  • 以前の PostgreSQL の分離: 以前のネットワーク アーキテクチャを使用するネットワーク プロジェクトでは、PostgreSQL インスタンスは MySQL インスタンスまたは SQL Server インスタンスと同じ IP 範囲の単位を共有できません。PostgreSQL インスタンスには、すべてのリージョンで専用の /24 範囲が必要です。
  • ネットワーク アーキテクチャの分離の適用: --enforce-new-sql-network-architecture フラグ(または同等の API フィールド)を使用して作成したインスタンスは、以前のネットワーク アーキテクチャを使用する同じプロジェクト内のインスタンスと、同じ IP 範囲の単位を共有できません。新しいネットワーク アーキテクチャで作成するインスタンスには、すべてのリージョンで専用の /24 範囲が必要です。

プライベート サービス アクセスの例

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

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

この図は、プライベート サービス アクセス構成の次の側面を示しています。

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

ネットワークに関する考慮事項

Cloud SQL は、リージョンごとにプライベート サービス アクセス IP 範囲から /24 サブネットを割り振ります。たとえば、PostgreSQL インスタンスを 2 つのリージョンに配置するには、割り振られた IP アドレス範囲にサイズが /24 の利用可能なサブネットが少なくとも 2 つ含まれている必要があります。

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

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

セキュリティ上の考慮事項

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

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

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

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

複数の VPC の接続

Cloud SQL では、プライベート サービス アクセスによりプライベート IP アドレスがサポートされます。Cloud SQL インスタンスを作成すると、Cloud SQL は Cloud SQL VPC という独自の VPC ネットワーク内にインスタンスを作成します。プライベート IP を有効にするには、Cloud SQL VPC と VPC ネットワークの間にピアリング接続を設定する必要があります。これにより、VPC ネットワーク内のリソースは、Cloud SQL VPC ネットワーク内の Cloud SQL リソースの内部 IP アドレスにアクセスできます。

Cloud SQL では、VPC ネットワーク ピアリングを使用してプライベート サービス アクセスを内部的に実装します。これにより、同じプロジェクトや組織に属しているかどうかにかかわらず、2 つの VPC ネットワーク間で内部 IP アドレスを接続できます。ただし、VPC ネットワーク ピアリングは推移的ではないため、直接ピアリングされている 2 つの VPC 間のルートのみをブロードキャストします。追加の VPC がある場合、元の VPC で設定された接続を使用して Cloud SQL リソースにアクセスすることはできません。

この制限を軽減し、プライベート IP アドレスを使用して Cloud SQL インスタンスを複数の VPC に接続するには、次の接続オプションを使用できます。

  • カスタム アドバタイズ ルートを使用して接続する
  • 中間プロキシ(SOCKS5)を使用して接続する
  • Cloud SQL Auth Proxy をサービスとして使用して接続する

複数の VPC を接続する方法については、インスタンスを複数の VPC ネットワークに接続するをご覧ください。

次のステップ