Cloud SQL コネクタは、Cloud SQL インスタンスへの接続時に暗号化と Identity and Access Management(IAM)ベースの承認を行うライブラリです。Cloud SQL インスタンスへのネットワーク パスがまだ存在しない場合、ネットワーク パスを提供することはできません。
Cloud SQL インスタンスに接続するその他の方法には、データベース クライアントの使用または Cloud SQL Auth Proxy があります。Cloud SQL インスタンスへの接続について詳しくは、接続オプションについてのページをご覧ください。
このページでは、次の Cloud SQL コネクタについて説明します。
- Cloud SQL Java コネクタ
- Cloud SQL Python コネクタ(Colab で開く)
- Cloud SQL Go コネクタ
- Cloud SQL Node.js コネクタ
利点
Cloud SQL コネクタには、次のような利点があります。
- IAM 認可: IAM 権限を使用して、Cloud SQL インスタンスに接続できるユーザーや対象を制御します。
- 簡素化: SSL 証明書の管理、ファイアウォール ルールの構成、承認済みネットワークの有効化が不要になります。
- IAM データベース認証: Cloud SQL の自動 IAM データベース認証機能をサポートします。
始める前に
- Cloud SQL Admin API を有効にします。
- Cloud SQL インスタンスを作成し、デフォルト ユーザーを構成します。
インスタンスの作成の詳細については、インスタンスを作成するをご覧ください。
デフォルト ユーザーの構成の詳細については、デフォルト ユーザー アカウントのパスワードを設定するをご覧ください。
- Cloud SQL インスタンスへの接続に必要なロールと権限を構成します。
設定
Java
Cloud SQL Java コネクタは、Cloud SQL インスタンスへの接続時に IAM ベースの認可と暗号化を提供するライブラリです。Cloud SQL インスタンスへのネットワーク パスがまだ存在しない場合、ネットワーク パスを提供することはできません。
インストール
JDBC と R2DBC のドライバを Cloud SQL Java コネクタでビルドして使用する方法については、次のリンク先をご覧ください。
- JDBC: JDBC を使用した Cloud SQL への接続。
- R2DBC: R2DBC を使用した Cloud SQL への接続
このライブラリがアプリケーションのコンテキストでどのように使用されるかについては、サンプル アプリケーションをご覧ください。
認証
このライブラリは、アプリケーションのデフォルト認証情報を使用して Cloud SQL サーバーへの接続を認証します。
認証情報をローカルで有効にするには、次の gcloud コマンドを使用します。
gcloud auth application-default login
Intellij との接続
Cloud SQL インスタンスに IntelliJ を接続するためには、ドライバ設定ページの追加のファイルセクションで、ライブラリを依存関係のある jar として追加する必要があります。たとえば、事前にビルドされた fat jar は Cloud SQL Java コネクタのリリースページに表示されます。
Python
Cloud SQL Python コネクタはデータベース ドライバとともに使用できるライブラリです。これにより、十分な権限があるユーザーは、IP を手動で許可リストに登録することなくCloud SQL データベースに接続できます。またはSSL 証明書を管理できます。
Cloud SQL Python コネクタのインタラクティブな使用例については、Cloud SQL Python コネクタ ノートブックをご覧ください。
PostgreSQL でサポートされているドライバは、pg8000 と asyncpg です。
インストール
Cloud SQL Python コネクタの最新リリースをインストールするには、pip install
コマンドを使用して、データベースの pg8000
ドライバまたは asyncpg
ドライバを指定します。
pip install "cloud-sql-python-connector[pg8000]"
または
pip install "cloud-sql-python-connector[asyncpg]"
認証
このライブラリは、アプリケーションのデフォルト認証情報を使用して Cloud SQL サーバーへの接続を認証します。
認証情報をローカルで有効にするには、次の gcloud コマンドを使用します。
gcloud auth application-default login
Go
Cloud SQL Go コネクタは、Go 言語で使用できるように設計された Cloud SQL コネクタです。セキュリティ強化のため、このコネクタは、データベース プロトコルとは無関係に、クライアント コネクタとサーバー側プロキシの間で、堅牢な手動認証 TLS 1.3 暗号化を使用します。
インストール
このリポジトリは go get
でインストールできます。
go get cloud.google.com/go/cloudsqlconn
Node.js
Node.js コネクタは、Node.js ランタイムで使用するために設計されたライブラリであり、Cloud SQL インスタンスに安全に接続できます。
インストール
npm install
を使用してライブラリをインストールできます。
npm install @google-cloud/cloud-sql-connector
使用
Java
このスニペットをウェブ アプリケーションのコンテキストで表示するには、GitHub の README をご覧ください。
Python
ライブラリを使用する際の詳細な手順については、このコネクタの使用方法をご覧ください。GitHub で、接続テストのコード例を確認してください。
Go
ライブラリを使用する際の詳細な手順については、使用方法をご覧ください。GitHub で、接続テストのコード例を確認してください。
Node.js
ライブラリの使用方法については、使用状況をご覧ください。
適用
コネクタの適用を使用すると、Cloud SQL Auth Proxy または Cloud SQL 言語コネクタのみを使用して Cloud SQL インスタンスに接続するように強制できます。コネクタ強制が適用されている場合、Cloud SQL はデータベースへの直接接続を拒否します。
Private Service Connect が有効になっているインスタンスを使用している場合は、制限があります。インスタンスでコネクタ適用が有効になっている場合、そのインスタンスのリードレプリカは作成できません。同様に、インスタンスにリードレプリカがある場合、インスタンスでコネクタ適用を有効にすることはできません。
gcloud
Cloud SQL Auth Proxy または Cloud SQL 言語コネクタのみを使用してインスタンスに接続するように強制するには、gcloud sql instances patch
コマンドを使用します。
gcloud sql instances patch INSTANCE_NAME \ --connector-enforcement=REQUIRED
INSTANCE_NAME
は、Cloud SQL インスタンスの名前に置き換えます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: Cloud SQL インスタンスの名前
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "kind": "sql#instance", "name": INSTANCE_NAME, "project": PROJECT_ID, "settings": { "connectorEnforcement": "REQUIRED", "kind": "sql#settings" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
トラブルシューティング
ドライバのバージョン
非互換性の問題を回避するため、最新バージョンの Cloud SQL コネクタとデータベース ドライバを使用してください。一部の古いバージョンのドライバはサポートされていません。
接続パス
Cloud SQL コネクタでは接続の承認が提供されますが、接続するための新しいパスは提供されません。たとえば、プライベート IP アドレスを使用して Cloud SQL インスタンスに接続するには、アプリケーションがすでに VPC にアクセスできる必要があります。
接続の問題をデバッグする
接続の問題について詳しくは、トラブルシューティングと接続の問題をデバッグするのページをご覧ください。
次のステップ
- GitHub の Cloud SQL Java コネクタのホームページを確認します。
- GitHub の Cloud SQL Python コネクタのホームページを確認します。
- Cloud SQL Auth Proxy の詳細を確認します。
- IAM の詳細について学習する。
- サポート用オプションについて学習します。