このページでは、Cloud SQL インスタンスに接続する方法の概要と、利用可能な認証と認可のオプションについて説明します。
概要
Cloud SQL インスタンスに接続する方法を検討する際は、次のように、考慮すべき多くの選択肢があります。
- インターネットから Cloud SQL インスタンスにアクセスできるようにするか、Virtual Private Cloud(VPC)ネットワーク内で限定公開にするか、または、一般公開と限定公開の両方にするか。
- 独自の接続コードを記述するか、Cloud SQL Auth Proxy や psql クライアントなど、一般公開されているツールを使用して接続するか。
- SSL / TLS による暗号化を必須とするか、暗号化されていないトラフィックを許可するか。
以降のセクションでは、Cloud SQL がデータベースの接続、認可、認証のために提供しているオプションについて説明します。
- 接続方法: どのネットワーク パスを使用してインスタンスに到達するのか。
- VPC のみの内部(プライベート)IP アドレス。
- インターネットにアクセスできる外部(パブリック)IP アドレス。
- 認可方法: どの接続が認可され、Cloud SQL インスタンスへの接続が許可されるのか。
- Java と Python の Cloud SQL Auth Proxy と Cloud SQL コネクタ ライブラリ: IAM に基づいてアクセスを提供する。
- セルフマネージド SSL / TLS 証明書: 特定の公開鍵に基づく接続のみを許可する。
- 承認済みネットワーク: 接続可能な IP アドレスのリスト。
- 認証方法: データベースにログインする方法。
- 組み込みのデータベース認証: データベース エンジンで設定されたユーザー名とパスワードでログイン。
- IAM データベース認証: メールまたは OAuth 2.0 トークンをパスワードとして使用してログインする。
以下の情報を参考に、最適な接続、認可、認証のオプションを決定してください。
始める前に
アプリケーションへのアクセスを付与しても、データベース ユーザー アカウントがインスタンスに自動的に接続できるようになるわけではありません。インスタンスに接続するには、接続に使用できるデータベース ユーザー アカウントが必要です。つまり、新しいインスタンスの場合はデフォルトのユーザー アカウントを構成しておく必要があります。詳細については、組み込み認証を使用してユーザーを管理するをご覧ください。
Cloud SQL に接続する方法
データベース接続は、サーバーと接続元アプリケーションのリソースを消費します。アプリケーションのフットプリントを最小限に抑え、Cloud SQL の接続制限を超える可能性を少なくするには、常に適切な接続管理方法を採用してください。詳細については、データベース接続の管理をご覧ください。
パブリック IP とプライベート IP
Cloud SQL では、パブリック IP は、インスタンスに公共のインターネット経由でアクセスできることを意味します。逆に、プライベート IP のみを使用するインスタンスに、公共のインターネットからはアクセスできませんが、Virtual Private Cloud(VPC)経由ではアクセスできます。Cloud SQL インスタンスでは、パブリック IP アドレスとプライベート IP アドレスのどちらも使用できます。
プライベート IP
プライベート IP は、Virtual Private Cloud(VPC)でアクセス可能な IPv4 アドレスです。
このアドレスを使用して、VPC にアクセスできる他のリソースから接続できます。プライベート IP 経由の接続では、インターネットを経由する必要がないため、通常はレイテンシが小さく、攻撃ベクトルが制限されます。任意で、すべての接続で Cloud SQL Proxy またはセルフマネージド SSL 証明書のいずれかを使用するよう要求できます。
VPC にアクセスできるリソース上のクライアントから接続を行う場合は、プライベート IP を使用するインスタンスを構成することをおすすめします。プライベート IP を使用できるリソースの詳細については、プライベート IP の要件をご覧ください。
プライベート IP パスの場合は、次のサービスとアプリケーションがサーバーレス VPC アクセスを介してインスタンスに直接接続されます。
- App Engine スタンダード環境
- App Engine フレキシブル環境
- Cloud Run 関数
- Cloud Run
詳細については Cloud SQL でプライベート IP を使用するをご覧ください。
インスタンスにプライベート IP を追加する手順については、次のいずれかをご覧ください。
パブリック IP
パブリック IP は、公共のインターネット上で外部から利用できる IPv4 アドレスです。このアドレスは、自宅や職場など、Google のネットワーク内外のデバイスからの接続を受信できます。
インスタンスのセキュリティを保つため、パブリック IP を使用する Cloud SQL インスタンスへの接続は、Cloud SQL Auth Proxy または承認済みネットワークのいずれかを使用して認可する必要があります。
VPC の要件を満たしていないクライアントから接続する場合は、パブリック IP を使用してインスタンスを構成することをおすすめします。
インスタンスにパブリック IP を追加する手順については、パブリック IP 接続を構成するをご覧ください。
パブリック IP を使用して psql クライアントを Cloud SQL インスタンスに接続する方法については、データベース クライアントを使用して接続するをご覧ください。
動的に割り振られる IP アドレス
一部のアプリケーションでは、動的に割り振られる一時的な IP アドレスを使用して、Cloud SQL インスタンスに接続する必要があります。これは、特に Platform as a Service(PaaS)アプリケーションの場合に該当します。
この場合、Cloud SQL Auth Proxy を使用する必要があります。
Cloud SQL の承認方法
Cloud SQL 言語コネクタ
Cloud SQL 言語コネクタは、Cloud SQL インスタンスへの接続時に暗号化と IAM 承認を行うクライアント ライブラリです。Cloud SQL インスタンスに接続するには、他の接続オプションではなく、Cloud SQL 言語コネクタを使用することをおすすめします。
これらのライブラリは、サポート対象のプログラミング言語から直接使用できます。外部プロセスを必要とせずに Cloud SQL Auth Proxy と同じ認証が行われます。これにより、セキュリティが向上し、Cloud SQL に接続するための構成要件が削減されます。Cloud SQL 言語コネクタは、パブリック IP アドレスまたはプライベート IP アドレスを使用して接続する場合も同じコードを使用します。
開始するには、Cloud SQL 言語コネクタについてをご覧ください。
Cloud SQL Auth Proxy
Cloud SQL Auth Proxy では、Identity and Access Management(IAM)権限を使用して接続を承認し、保護できます。Cloud SQL Auth Proxy は、ユーザーまたはサービス アカウントの認証情報を使用して接続を検証し、Cloud SQL インスタンスに対して承認された SSL / TLS レイヤに接続をラップします。Cloud SQL Auth Proxy の動作の詳細については、Cloud SQL Auth Proxy についてをご覧ください。
Cloud SQL インスタンスへの接続の認証には、Cloud SQL Auth Proxy を使用することをおすすめします。これは最も安全な方法です。
Cloud SQL Auth Proxy は、実行可能なバイナリとして配布されるオープンソース ライブラリです。Cloud SQL Auth Proxy は、受信接続をリッスンして SSL / TLS でラップし、Cloud SQL インスタンスに渡す中間サーバーとして機能します。
環境によっては、Cloud SQL Auth Proxy を使用して接続するメカニズムが提供されています。これらの環境を使用した接続の手順については、次のいずれかをご覧ください。
- Cloud Run から接続する
- Cloud Run 関数から接続する
- App Engine スタンダード環境から接続する
- App Engine フレキシブル環境から接続する
- Google Kubernetes Engine から接続する
セルフマネージド SSL / TLS 証明書
Cloud SQL Auth Proxy を使用して接続を暗号化する代わりに、Cloud SQL インスタンスに固有のクライアントとサーバーの SSL / TLS 証明書を設定できます。この証明書は、クライアントとサーバーの両方を相互に検証し、その間の接続を暗号化するために使用されます。
Cloud SQL Auth Proxy を使用しない場合は、セルフマネージド SSL / TLS 証明書を使用して暗号化することを強くおすすめします。暗号化しないと、データが安全に送信されず、第三者によって傍受または監視されるおそれがあります。
セルフマネージド SSL / TLS 証明書のご利用にあたっては、SSL / TLS 証明書による承認をご覧ください。
承認済みネットワーク
Cloud SQL Auth Proxy を使用する場合を除き、インスタンスのパブリック IP アドレスへの接続は、接続が承認済みネットワークから送信された場合のみ許可されます。承認済みネットワークとは、ユーザーが接続権限を持たせるよう指定した IP アドレスまたは範囲のことです。
承認済みネットワークのご利用にあたっては、承認済みネットワークでの認証をご覧ください。
Cloud SQL への認証方法
認証とは、ユーザーの ID を確認することによるアクセス制御です。エンドユーザーについては、ユーザーが認証情報(ユーザー名とパスワード)を入力すると認証が行われます。アプリケーションでは、ユーザーの認証情報がサービス アカウントに割り当てられている場合に認証が行われます。
Cloud SQL では、ユーザー名とパスワードで認証を行うデータベースの組み込み認証を使用します。詳細については、PostgreSQL ユーザーの作成と管理をご覧ください。
また、Cloud SQL は IAM と統合されており、ユーザーとサービス アカウントのデータベース アクセスのモニタリングおよび管理を適切に行うことができます。この機能を IAM データベース認証と呼びます。IAM データベース認証について学習する。
IAM データベース認証を使用するユーザーの作成と管理について学習する。
Cloud SQL に接続するためのツール
次の表に、Cloud SQL に接続するためのオプションを示します。
接続オプション | 詳細 |
---|---|
Cloud SQL Auth Proxy | |
gcloud CLI | |
Cloud SQL 言語コネクタ | |
Cloud Shell | |
Cloud Code | |
サードパーティのデータベース管理ツールを使用して接続する | |
pgAdmin | |
Toad Edge | |
Blendo |
コードサンプル
Unix または TCP ソケットに接続できる任意の言語を使用して、Cloud SQL Auth Proxy に接続できます。アプリケーションでどのように連携するのかを把握できるように、GitHub の詳細な例からコード スニペットをいくつか紹介します。
トラブルシューティング
接続に問題がある場合は、以下のページで既知の問題のデバッグ方法やソリューションを確認してください。
次のステップ
- Cloud SQL for Postgres のクイックスタートを使用して接続方法を学習する。
- データベース接続の管理についてのベスト プラクティス
- IAM データベース認証について学習する。
- ローカルマシンまたは Compute Engine からの psql クライアントを使用した接続について学習する。
- IP 接続を構成する方法を学習する。
- Cloud SQL Auth Proxy について学習する。
- サポート用オプションについて学習する。