VPC の外部から Cloud SQL インスタンスに接続する

このページでは、構成済みの Virtual Private Cloud(VPC)の外部から Cloud SQL インスタンスに接続する方法について説明します。

始める前に

始める前に、以下のことを行ってください。

  1. Cloud SQL インスタンスを作成します。
  2. 外部 IP アドレスではなく内部 IP アドレスを使用するようにインスタンスを構成します。

外部接続について

Cloud SQL インスタンスは、Google マネージド VPC 内の複数のノードで構成されます。インスタンスを作成する際、使用している VPC の 1 つと、新しいインスタンスを含む Google マネージド VPC との間でプライベート サービス アクセスまたは Private Service Connect も構成します。このピアリング接続により、内部 IP アドレスを使用して、それが自分の VPC の一部であるかのようにインスタンスの VPC 上のリソースにアクセスできます。

次の状況では、接続された VPC の外部からインスタンスに接続します。

  • プライベート サービス アクセスまたは Private Service Connect を介してインスタンスに接続するために使用した VPC の外部でアプリケーションが実行されている。

  • Google のネットワークの外部にある VPC でアプリケーションが実行されている。

  • 公共のインターネット上のどこか別の場所にあるマシンでアプリケーションが実行されている。

上記のいずれの場合も、Cloud SQL インスタンスへのこの種の外部接続を有効にするには、追加のサービスを構成する必要があります。

外部接続を行うには、ニーズに応じて次のソリューションを使用することをおすすめします。

  • プロジェクト開発やプロトタイピング、または比較的低コストの本番環境の場合は、中間仮想マシン(VM)(「踏み台」とも呼ばれます)を VPC 内に構成します。この中間 VM を足場として、これを外部アプリケーション環境と Cloud SQL インスタンス間の安全な接続に変換する方法はいくつかあります。

  • 高可用性が必要な本番環境では、Cloud VPN または Cloud Interconnect を介して VPC とアプリケーションの間に永続的な接続を確立することを検討してください。

以降のセクションで、これらのソリューションについて説明します。

中間 VM を介して接続する

オープンソース ツールと最小限の追加リソースを使用して VPC の外部から Cloud SQL インスタンスへの接続を確立するには、その VPC 内で構成された中間 VM でプロキシ サービスを実行します。新しい VM を構成するか、Cloud SQL インスタンスの VPC 内ですでに実行されている VM を使用できます。

セルフマネージド ソリューションとして中間 VM を使用すると、通常は Network Connectivity プロダクトを使用する場合よりも費用が少なくて済み、セットアップ時間も短くなります。ただし欠点もあります。接続の可用性、セキュリティ、データ スループットはすべて中間 VM に依存することになり、中間 VM をプロジェクトの一部として自分で維持管理する必要があります。

IAP を介して接続する

Identity-Aware Proxy(IAP)を使用すると、中間 VM の内部 IP アドレスを公開せずに Cloud SQL インスタンスに安全に接続できます。このルートからのアクセスを制限するには、ファイアウォール ルールと Identity and Access Management(IAM)を組み合わせて使用します。そのため、IAP は開発やプロトタイピングのような非本番環境の用途に適したソリューションです。

Identity-Aware Proxy のアーキテクチャ

この図では、IAP は VPC の外側にある外部クライアントと VPC の内側にある中間 VM の間のゲートウェイとして機能しています。クライアントは IAP への SSH トンネルを作成します。Cloud SQL Auth Proxy は、VM と Cloud SQL インスタンス間のトラフィックを暗号化します。これら 2 つのプロキシを介して、クライアントとインスタンス間の通信が確立されます。

IAP を介したインスタンスへのアクセスを構成する手順は次のとおりです。

  1. 外部クライアントに gcloud CLI をインストールします。

  2. 中間 VM で、Cloud SQL Auth Proxy をダウンロードしてインストールします。

  3. 中間 VM で、Cloud SQL Auth Proxy を起動します。

    この VM は内部 IP アドレスを使用するように構成されているため、Cloud SQL Auth Proxy を起動するときに --private-ip オプションを指定する必要があります。

  4. Google Cloud プロジェクトで、IAP TCP 転送を有効にします

    新しいファイアウォール ルールを定義するときに、上り(内向き)TCP トラフィックに対してポート 22(SSH)へのアクセスを許可します。プロジェクトのデフォルト ネットワークを使用していて、事前設定された default-allow-ssh ルールを有効にしている場合、追加のルールを定義する必要はありません。

  5. IAP 経由の SSH を使用して、外部クライアントと中間 VM の間のポート転送を構成します。

    gcloud compute ssh VM_NAME \
    --tunnel-through-iap \
    --zone=ZONE_NAME \
    --ssh-flag="-L 5432:localhost:5432"
    

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

    • VM_NAME: VM の名前
    • ZONE_NAME: VM に関連付けられているゾーンの名前
  6. 外部クライアントで、psql を使用して接続をテストします。

SOCKS プロキシを介して接続する

中間 VM で SOCKS サービスを実行すると、Cloud SQL Auth Proxy によって提供されるエンドツーエンドの暗号化により、Cloud SQL インスタンスへの柔軟でスケーラブルな接続が可能になります。

SOCKS プロキシを使用して Cloud SQL インスタンスに接続する方法については、中間プロキシ(SOCKS5)を使用して接続するをご覧ください。

プーラーを介して接続する

外部クライアントの代わりに中間 VM に Cloud SQL Auth Proxy をインストールして実行する必要がある場合、Cloud SQL Auth Proxy をプロトコル対応プロキシ(プーラー)とペアリングすることで、Cloud SQL Auth Proxy への安全な接続を有効にできます。PostgreSQL 用の一般的なオープンソース プーラーには、Pgpool-IIPgBouncer があります。

このソリューションでは、Cloud SQL Auth Proxy とプーラーの両方を中間 VM で実行します。クライアントまたはアプリケーションは SSL 経由でプーラーに直接安全に接続でき、追加のサービスを実行する必要はありません。プーラーは、Cloud SQL Auth Proxy を介して PostgreSQL クエリを Cloud SQL インスタンスに渡します。

Cloud SQL インスタンスはそれぞれ個別の内部 IP アドレスを持つため、各プロキシ サービスは、プライマリ インスタンス、スタンバイ、読み取りプールのいずれか 1 つのインスタンスのみと通信できます。そのため、インスタンスごとに、適切に構成された SSL 証明書を使用して個別にプーラー サービスを実行する必要があります。

Cloud VPN または Cloud Interconnect を介して接続する

高可用性(HA)が必要な本番環境では、外部サービスのニーズとネットワーク トポロジに応じて、Cloud VPNCloud Interconnect などの Google Cloud Network Connectivity プロダクトを使用することをおすすめします。さらに、Cloud Router で適切なルートがアドバタイズされるように構成します。

Network Connectivity ソリューションの詳細については、Network Connectivity プロダクトの選択をご覧ください。

次のステップ