このページでは、Cloud SQL インスタンスに接続する方法の概要と、利用可能な認証と認可のオプションについて説明します。
概要
Cloud SQL インスタンスに接続する方法を検討する際は、次のように、考慮すべき多くの選択肢があります。
- インターネットから Cloud SQL インスタンスにアクセスできるようにするか、Virtual Private Cloud(VPC)ネットワーク内で限定公開にするか、または、一般公開と限定公開の両方にするか。
- 独自の接続コードを記述するか、Cloud SQL Auth Proxy や mysql クライアントなど、一般公開されているツールを使用して接続するか。
- SSL / TLS による暗号化を必須とするか、暗号化されていないトラフィックを許可するか。
以降のセクションでは、Cloud SQL がデータベースの接続、認可、認証のために提供しているオプションについて説明します。
- 接続方法: どのネットワーク パスを使用してインスタンスに到達するのか。
- VPC のみの内部(プライベート)IP アドレス。
- インターネットにアクセスできる外部(パブリック)IP アドレス。
- 認可方法: どの接続が認可され、Cloud SQL インスタンスへの接続が許可されるのか。
- Java と Python の Cloud SQL Auth Proxy と Cloud SQL コネクタ ライブラリ: IAM に基づいてアクセスを提供する。
- セルフマネージド SSL / TLS 証明書: 特定の公開鍵に基づく接続のみを許可する。
- 承認済みネットワーク: 接続可能な IP アドレスのリスト。
- 認証方法: データベースにログインする方法。
- 組み込みのデータベース認証: データベース エンジンで設定されたユーザー名とパスワードでログイン。
以下の情報を参考に、最適な接続、認可、認証のオプションを決定してください。
始める前に
アプリケーションへのアクセスを付与しても、データベース ユーザー アカウントがインスタンスに自動的に接続できるようになるわけではありません。インスタンスに接続するには、接続に使用できるデータベース ユーザー アカウントが必要です。つまり、新しいインスタンスの場合はデフォルトのユーザー アカウントを構成しておく必要があります。詳細については、組み込み認証を使用してユーザーを管理するをご覧ください。
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 を使用して MySQL クライアントを Cloud SQL インスタンスに接続する方法については、データベース クライアントを使用して接続するをご覧ください。
動的に割り振られる IP アドレス
一部のアプリケーションでは、動的に割り当てられる一時的な IP アドレスを使用して、Cloud SQL インスタンスに接続する必要があります。これは、特に Platform as a Service(PaaS)アプリケーションの場合に該当します。
このようなアプリケーションのソリューションとして最適なのは、Cloud SQL Auth Proxy を使用して接続する方法です。このソリューションでは、インスタンスに最善のアクセス制御が提供されます。
インスタンスの接続オプション
このセクションでは、Cloud SQL がインスタンスへの接続にサポートする機能について説明します。このセクションには、インスタンスの作成、無効化、有効化に使用できる接続オプションも含まれています。
サポートされている機能
次の表に、Cloud SQL がプライベート接続を使用してインスタンスに接続するためにサポートする機能を示します。
特徴 | プライベート サービス アクセスのみのインスタンス | Private Service Connect のみを使用するインスタンス | プライベート サービス アクセスと Private Service Connect の両方を使用するインスタンス |
---|---|---|---|
複数の VPC から接続する | 非対応。 | サポート対象 | Private Service Connect エンドポイントを使用してサポートされます。 |
外部レプリカ | サポート対象 | 非対応。 | プライベート サービス アクセスのアウトバウンド接続を使用してサポートされます。 |
エンドポイントを書き込む | サポート対象 | 非対応。 | プライベート サービス アクセスでサポートされています。 |
プライベート サービス アクセスの関連付けられた VPC ネットワークを変更する | サポート対象 | 該当なし | インスタンスで Private Service Connect が有効になっているため、プライベート サービス アクセスではサポートされていません。Private Service Connect には適用されません。 |
Cloud SQL に対するクライアント IP アドレスの可視性 | サポート対象 | 非対応。 | 限定公開サービス アクセスの IP アドレスを使用することでサポートされます。Private Service Connect エンドポイントではサポートされていません。 |
インスタンスの作成用の接続オプション
Cloud SQL は、プライベート IP とパブリック IP の構成をサポートしています。接続オプションは、アプリケーションの要件に基づいて選択できます。
プライベート IP を構成して、VPC ネットワーク内で Cloud SQL インスタンスを非公開にすることができます。次のタイプのプライベート接続がサポートされています。
- プライベート サービス アクセス: 単一の VPC ネットワークから Cloud SQL インスタンスに接続する
- Private Service Connect: 異なるグループ、チーム、プロジェクト、組織に属する複数の VPC ネットワークから Cloud SQL インスタンスに接続する
インスタンスが Google Cloud のネットワークの内外から公共のインターネット経由で接続にアクセスできるようにするには、インスタンスのパブリック IP を構成します。
Cloud SQL は、インスタンスの作成に次の接続オプションをサポートしています。
- 限定公開サービス アクセスのみ
- Private Service Connect のみ
- パブリック IP のみ
- 限定公開サービス アクセスと Private Service Connect の両方
- パブリック IP とプライベート サービスの両方のアクセス
- パブリック IP、限定公開サービス アクセス、Private Service Connect
接続オプションを無効にする
Cloud SQL は、インスタンスの次の接続オプションの無効化をサポートしています。
- プライベート サービス アクセスとパブリック IP の両方があるインスタンスのパブリック IP
- パブリック IP、限定公開サービス アクセス、Private Service Connect を使用するインスタンスのパブリック IP
- Private Service Connect とプライベート サービス アクセスの両方を使用するインスタンスの Private Service Connect
- Private Service Connect、プライベート サービス アクセス、パブリック IP を使用するインスタンスの Private Service Connect
接続オプションを有効にする
Cloud SQL では、インスタンスで次の接続オプションを有効にできます。
- パブリック IP のみを持つインスタンスでのプライベート サービス アクセス
- プライベート サービス アクセスのみのインスタンスでの Private Service Connect
- プライベート サービス アクセスとパブリック IP の両方を持つインスタンスの Private Service Connect
- プライベート サービス アクセスのみのインスタンスのパブリック IP
制限事項
- パブリック IP と Private Service Connect の両方を使用してインスタンスを作成することはできません。
- プライベート サービス アクセスと Private Service Connect の両方が有効になっているインスタンスでプライベート サービス アクセスを無効にすることはできません。
- プライベート サービス アクセスとパブリック IP の両方を持つインスタンスでプライベート サービス アクセスを無効にすることはできません。
- パブリック IP のみを使用するインスタンスの場合、プライベート サービス アクセスと Private Service Connect の両方を有効にすることはできません。まず、プライベート サービス アクセスを有効にしてから、Private Service Connect を有効にします。
- Private Service Connect が有効になっているインスタンスでは、承認済みネットワークを使用した IP ベースの許可リストはサポートされていません。
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 プロキシを使用する場合を除き、インスタンスのパブリック IP アドレスへの接続は、接続が承認済みネットワークから送信された場合のみ許可されます。承認済みネットワークとは、ユーザーが接続権限を持たせるよう指定した IP アドレスまたは範囲のことです。
承認済みネットワークのご利用にあたっては、承認済みネットワークでの認証をご覧ください。
Cloud SQL への認証方法
認証とは、ユーザーの ID を確認することによるアクセス制御です。エンドユーザーについては、ユーザーが認証情報(ユーザー名とパスワード)を入力すると認証が行われます。アプリケーションでは、ユーザーの認証情報がサービス アカウントに割り当てられている場合に認証が行われます。
Cloud SQL では、ユーザー名とパスワードで認証を行うデータベースの組み込み認証を使用します。詳細については、MySQL ユーザーの作成と管理をご覧ください。
Cloud SQL に接続するためのツール
次の表に、Cloud SQL に接続するためのオプションを示します。
接続オプション | 詳細 |
---|---|
Cloud SQL Auth Proxy | |
gcloud CLI | |
Cloud SQL 言語コネクタ | |
Cloud Shell | |
Apps Script | |
Cloud Code | |
サードパーティのデータベース管理ツールを使用して接続する | |
MySQL Workbench | |
Toad for MySQL | |
SQuirrel SQL | |
phpMyAdmin |
コードサンプル
Unix または TCP ソケットに接続できる任意の言語を使用して、Cloud SQL Auth Proxy に接続できます。アプリケーションでどのように連携するのかを把握できるように、GitHub の詳細な例からコード スニペットをいくつか紹介します。
トラブルシューティング
接続に問題がある場合は、以下のページで既知の問題のデバッグ方法やソリューションを確認してください。
次のステップ
- Cloud SQL for MySQL のクイックスタートを使用して接続方法を学習する。
- データベース接続の管理についてのベスト プラクティス
- IAM データベース認証について学習する。
- ローカルマシンまたは Compute Engine から mysql クライアントを使用して接続する方法について学習する。
- IP 接続を構成する方法を学習する。
- 他の MySQL ツールで接続する方法を学習する。
- MySQL のコネクタについて学習する。
- Cloud SQL Auth Proxy について学習する。
- サポート用オプションについて学習します。