このページでは、構成済みの Virtual Private Cloud(VPC)の外部から Cloud SQL インスタンスに接続する方法について説明します。
始める前に
始める前に、以下のことを行ってください。
- Cloud SQL インスタンスを作成します。
- 外部 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 は開発やプロトタイピングのような非本番環境の用途に適したソリューションです。
この図では、IAP は VPC の外側にある外部クライアントと VPC の内側にある中間 VM の間のゲートウェイとして機能しています。クライアントは IAP への SSH トンネルを作成します。Cloud SQL Auth Proxy は、VM と Cloud SQL インスタンスの間のトラフィックを暗号化します。これら 2 つのプロキシを介して、クライアントとインスタンスの間の通信が確立されます。
IAP を介したインスタンスへのアクセスを構成する手順は次のとおりです。
外部クライアントに gcloud CLI をインストールします。
中間 VM で、Cloud SQL Auth Proxy をダウンロードしてインストールします。
中間 VM で、Cloud SQL Auth Proxy を起動します。
この VM は内部 IP アドレスを使用するように構成されているため、Cloud SQL Auth Proxy を起動するときに
--private-ip
オプションを指定する必要があります。Google Cloud プロジェクトで、IAP TCP 転送を有効にします。
新しいファイアウォール ルールを定義するときに、上り(内向き)TCP トラフィックに対してポート
22
(SSH)へのアクセスを許可します。プロジェクトのデフォルト ネットワークを使用していて、事前設定されたdefault-allow-ssh
ルールを有効にしている場合、追加のルールを定義する必要はありません。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 に関連付けられているゾーンの名前
外部クライアントで、
psql
を使用して接続をテストします。
SOCKS プロキシを介して接続する
中間 VM で SOCKS サービスを実行すると、Cloud SQL インスタンスへの柔軟でスケーラブルな接続が可能になります。また、Cloud SQL Auth Proxy によってエンドツーエンドの暗号化も提供されます。
SOCKS プロキシを使用して Cloud SQL インスタンスに接続する方法については、中間プロキシ(SOCKS5)を使用して接続するをご覧ください。
プーラーを介して接続する
外部クライアントの代わりに中間 VM に Cloud SQL Auth Proxy をインストールして実行する必要がある場合、Cloud SQL Auth Proxy をプロトコル対応プロキシ(プーラー)とペアリングすることで、Cloud SQL Auth Proxy への安全な接続を有効にできます。PostgreSQL 用の一般的なオープンソース プーラーには、Pgpool-II と PgBouncer があります。
このソリューションでは、Cloud SQL Auth Proxy とプーラーの両方を中間 VM で実行します。クライアントまたはアプリケーションは、SSL 経由でプーラーに直接かつ安全に接続でき、追加のサービスを実行する必要はありません。プーラーは、Cloud SQL Auth Proxy を介して PostgreSQL クエリを Cloud SQL インスタンスに渡します。
Cloud SQL インスタンスはそれぞれ個別の内部 IP アドレスを持ち、各プロキシ サービスは、プライマリ、スタンバイ、読み取りプールのうちいずれか 1 つのインスタンスのみと通信できます。そのため、インスタンスごとに、適切に構成された SSL 証明書を使用して個別にプーラー サービスを実行する必要があります。
Cloud VPN または Cloud Interconnect を介して接続する
高可用性(HA)が必要な本番環境では、外部サービスのニーズとネットワーク トポロジに応じて、Cloud VPN や Cloud Interconnect などの Google Cloud Network Connectivity プロダクトを使用することをおすすめします。さらに、Cloud Router で適切なルートがアドバタイズされるように構成します。
Network Connectivity ソリューションの詳細については、Network Connectivity プロダクトの選択をご覧ください。
次のステップ
- プライベート IP の詳細を確認する。
- Google マネージド VPC でのプライベート サービス アクセスとオンプレミス接続の詳細を確認する。
- Private Service Connect を使用して Cloud SQL インスタンスに接続する方法を確認する。