このページでは、Cloud SQL Auth Proxy の概要を説明し、これを使用してインスタンスへの承認済みで暗号化された安全な接続を確立する方法を説明します。
Cloud SQL Auth Proxy を使用する詳細な手順については、次のリンクからご使用の環境に該当するものをクリックしてください。
- Cloud SQL Auth Proxy を使用するためのクイックスタート
- Cloud SQL Auth Proxy を使用して接続する方法
- GKE から Cloud SQL Auth Proxy を使用して接続する方法
App Engine スタンダード環境または App Engine フレキシブル環境から Cloud SQL に接続する場合は、Cloud SQL Auth Proxy の使用、または SSL の構成は必要ありません。
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud SQL のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
Cloud SQL の無料トライアルCloud SQL Auth Proxy のメリット
Cloud SQL Auth Proxy は、承認済みネットワークや SSL の構成を必要とせず、安全にインスタンスにアクセスできる Cloud SQL コネクタです。
Cloud SQL Auth Proxy やその他の Cloud SQL コネクタには、次のメリットがあります。
- 安全な接続: Cloud SQL Auth Proxy は、TLS 1.3 を使用してデータベースとの間で送受信されるトラフィックを自動的に暗号化します。暗号の選択は Go のルールによって決定されます。SSL 証明書はクライアントとサーバーの ID を確認するために使用され、データベース プロトコルから独立しています。SSL 証明書を管理する必要はありません。
- 接続認可の簡素化: Cloud SQL Auth Proxy では、IAM 権限を使用して、Cloud SQL インスタンスに接続できるユーザーと対象を制御します。このように、Cloud SQL Auth Proxy が Cloud SQL との認証を処理するので、静的な IP アドレスを提供する必要がなくなります。
- IAM データベース認証。必要に応じて、Cloud SQL Auth Proxy は OAuth 2.0 アクセス トークンの自動更新をサポートします。この機能については、Cloud SQL IAM データベース認証をご覧ください。
Cloud SQL Auth Proxy は新しい接続パスを提供しません。既存の IP 接続に依存します。プライベート IP を使用して Cloud SQL インスタンスに接続するには、Cloud SQL Auth Proxy が、そのインスタンスと同じ VPC ネットワークにアクセスできるリソース上に存在する必要があります。
します。Cloud SQL Auth Proxy の仕組み
Cloud SQL Auth Proxy は、ローカル環境で動作するローカル クライアントがあることで機能します。アプリケーションは、データベースで使用される標準のデータベース プロトコルを使用して Cloud SQL Auth Proxy と通信します。
Cloud SQL Auth Proxy は、セキュアなトンネルを使用して、サーバー上で動作しているコンパニオン プロセスと通信します。Cloud SQL Auth Proxy を介して確立された接続は、Cloud SQL インスタンスへの接続を 1 つ作成します。
アプリケーションが Cloud SQL Auth Proxy に接続すると、ターゲット Cloud SQL インスタンスとの既存の接続が使用可能かどうかを確認します。接続が存在しない場合、Cloud SQL Admin API を呼び出してエフェメラル SSL 証明書を取得し、それを使用して Cloud SQL に接続します。エフェメラル SSL 証明書は約 1 時間で期限切れになります。Cloud SQL Auth Proxy は、これらの証明書が期限切れになる前に更新されます。
Cloud SQL Auth Proxy はどのポートでもリッスンできますが、ポート 3307 にのみ Cloud SQL インスタンスへの送信接続または下り(外向き)接続が作成されます。Cloud SQL Auth Proxy は、固定 IP アドレスを持たないドメイン名 sqladmin.googleapis.com
を使用して API を呼び出すため、ポート 443 ですべての下り(外向き)TCP 接続を許可する必要があります。クライアント マシンにアウトバウンド ファイアウォール ポリシーがある場合は、Cloud SQL インスタンスの IP でポート 3307 への送信接続が許可されていることを確認します。
Cloud SQL Auth Proxy では接続プールは提供されませんが、他の接続プールと組み合わせることで効率を向上させることができます。
次の図は、Cloud SQL Auth Proxy が Cloud SQL に接続する方法を示しています。
Cloud SQL Auth Proxy を使用する際の要件
Cloud SQL Auth Proxy を使用するには、次の要件を満たす必要があります。
- Cloud SQL Admin API が有効になっている必要があります。
- Cloud SQL Auth Proxy に Google Cloud 認証情報を指定する必要があります。
- Cloud SQL Auth Proxy に有効なデータベース ユーザー アカウントとパスワードを指定する必要があります。
インスタンスでパブリック IPv4 アドレスが指定されているか、プライベート IP を使用するように構成されている必要があります。
パブリック IP アドレスがすべての外部アドレスからアクセス可能である必要はありません(承認済みネットワークのアドレスとして追加する必要はありません)。
接続先の Cloud SQL インスタンスで serverCaMode
設定に共有認証局(CA)を使用している場合、クライアント側で Cloud SQL Auth Proxy バージョン 2.13.0 以降を使用する必要があります。
(プレビュー)。
Cloud SQL Auth Proxy をダウンロードしてインストールする
Linux 64 ビット
- Cloud SQL Auth Proxy をダウンロードします。
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.0/cloud-sql-proxy.linux.amd64
- Cloud SQL Auth Proxy を動作可能にします。
chmod +x cloud-sql-proxy
Linux 32 ビット
- Cloud SQL Auth Proxy をダウンロードします。
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.0/cloud-sql-proxy.linux.386
curl
コマンドが見つからない場合は、sudo apt install curl
を実行してダウンロード コマンドを繰り返します。- Cloud SQL Auth Proxy を動作可能にします。
chmod +x cloud-sql-proxy
macOS 64 ビット
- Cloud SQL Auth Proxy をダウンロードします。
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.0/cloud-sql-proxy.darwin.amd64
- Cloud SQL Auth Proxy を動作可能にします。
chmod +x cloud-sql-proxy
Mac M1
- Cloud SQL Auth Proxy をダウンロードします。
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.0/cloud-sql-proxy.darwin.arm64
- Cloud SQL Auth Proxy を動作可能にします。
chmod +x cloud-sql-proxy
Windows 64 ビット
https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.0/cloud-sql-proxy.x64.exe を右クリックして [名前を付けてリンクを保存] を選択し、Cloud SQL Auth Proxy をダウンロードします。ファイル名をcloud-sql-proxy.exe
に変更します。Windows 32 ビット
https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.0/cloud-sql-proxy.x86.exe を右クリックして [名前を付けてリンクを保存] を選択し、Cloud SQL Auth Proxy をダウンロードします。ファイル名をcloud-sql-proxy.exe
に変更します。Cloud SQL Auth Proxy Docker イメージ
Cloud SQL Auth Proxy には、distroless
、alpine
、buster
など、さまざまなコンテナ イメージがあります。デフォルトの Cloud SQL Auth Proxy コンテナ イメージでは、シェルを含まない distroless
を使用します。シェルまたは関連ツールが必要な場合は、alpine
または buster
を基盤とするイメージをダウンロードします。詳細については、Cloud SQL Auth Proxy コンテナ イメージをご覧ください。
次のコマンドを使用して、ローカルマシンに最新のイメージを Docker で pull できます。
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.0
その他の OS
ここに記載されていないその他のオペレーティング システムの場合は、ソースから Cloud SQL Auth Proxy をコンパイルできます。Cloud SQL Auth Proxy の起動オプション
Cloud SQL Proxy を起動する際には、次の情報を指定します。
- 接続先の Cloud SQL インスタンス
- Cloud SQL へ送信するためにアプリケーションから受信するデータをリッスンする場所
- Cloud SQL に対するアプリケーションの認証に使用する認証情報を取得できる場所
- 使用する IP アドレスのタイプ(必要な場合)
指定した Cloud SQL Auth Proxy の起動オプションによって、TCP ポートと Unix ソケットのどちらでリッスンするかが決まります。Unix ソケットでリッスンする場合は、選択した場所(通常は /cloudsql/ ディレクトリ)にソケットが作成されます。TCP の場合、Cloud SQL Auth Proxy は、デフォルトでは localhost
でリッスンします。
引数 --help
を指定して cloud-sql-proxy
実行可能ファイルを実行すると、起動オプションすべての一覧が表示されます。
Cloud SQL Auth Proxy は、ローカル環境の任意の場所にインストールできます。Cloud SQL Auth Proxy バイナリの場所は、アプリケーションからデータをリッスンする場所には影響しません。
Cloud SQL Auth Proxy の起動方法の詳細については、Cloud SQL Auth Proxy を起動するをご覧ください。
認証にサービス アカウントを使用する
Cloud SQL Auth Proxy では、Cloud SQL インスタンスへの接続を承認するために、Cloud SQL IAM ID として認証を行う必要があります。
この目的でサービス アカウントを使用する利点は、特に Cloud SQL Auth Proxy 用の認証情報ファイルを作成できることと、Cloud SQL Auth Proxy が動作する間は、そのファイルが Cloud SQL Auth Proxy に明示的かつ永続的にリンクされることです。このため、Compute Engine インスタンスで実行していない本番環境インスタンスには、サービス アカウントを使用することをおすすめします。
複数のマシンから Cloud SQL Auth Proxy を呼び出す必要がある場合は、認証情報ファイルをシステム イメージで複製できます。
この方法を使用するには、認証情報ファイルを作成して管理する必要があります。resourcemanager.projects.setIamPolicy
権限を持つユーザー(プロジェクト オーナーなど)だけが、サービス アカウントを作成できます。Google Cloud ユーザーにこの権限がない場合は、他のユーザーにサービス アカウントを作成してもらうか、別の方法で Cloud SQL Auth Proxy を認証する必要があります。
サービス アカウントの作成方法をご確認ください。
サービス アカウントに必要な権限
サービス アカウントを使用して Cloud SQL Auth Proxy に認証情報を提示する場合は、十分な権限が付与されたサービス アカウントを作成する必要があります。よりきめ細かい Identity Access and Management(IAM)のロールを使用して Cloud SQL 権限を管理する場合は、サービス アカウントに cloudsql.instances.connect
権限を含むロールを付与する必要があります。この権限を含む事前定義された Cloud SQL のロールは次のとおりです。
- Cloud SQL クライアント
- Cloud SQL 編集者
- Cloud SQL 管理者
以前のプロジェクトの役割(閲覧者、編集者、オーナー)を使用する場合、サービス アカウントには少なくとも編集者の役割が付与されている必要があります。
Cloud SQL Auth Proxy を最新の状態に保つ
Google は、Cloud SQL Auth Proxy の新しいバージョンを随時リリースしています。最新バージョンは Cloud SQL Auth Proxy GitHub リリースページで確認できます。また、プロキシの今後のリリースについては、Google Groups Cloud SQL のお知らせフォーラムで通知されます。
API の使用
Cloud SQL Auth Proxy は、Cloud SQL Admin API に対してリクエストを発行します。これらのリクエストは、プロジェクトの API 割り当て量にカウントされます。
API 使用率は、Cloud SQL Auth Proxy の起動時に最高値となります。Cloud SQL Auth Proxy は稼働中に、接続されているインスタンスごとに 1 時間あたり 2 つの API 呼び出しを発行します。
Cloud SQL Auth Proxy 用の特別なユーザー アカウントの作成について
Cloud SQL Auth Proxy を使用してインスタンスに接続する場合は、インスタンスへのログインに使用するユーザー アカウントを指定します。この場合、任意のデータベース ユーザー アカウントを使用することができます。ただし、Cloud SQL Auth Proxy は常に Cloud SQL Auth Proxy 以外ではアクセスできないホスト名から接続するので、Cloud SQL Auth Proxy だけが使用できるユーザー アカウントを作成できます。このようにすると、インスタンスまたはデータのセキュリティを損なうことなく、パスワードを使用しないでこのアカウントを指定できるという利点があります。
Cloud SQL Auth Proxy 接続用のユーザー アカウントを作成するには、ホスト名を 'cloudsqlproxy~[IP_ADDRESS]'
と指定します。また、IP アドレスのワイルドカードを使用して、'cloudsqlproxy~%'
にすることもできます。完全なユーザー アカウント名は次のようになります。
'[USER_NAME]'@'cloudsqlproxy~%'
または
'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'
ユーザーの作成については、ユーザーを作成して管理するをご覧ください。Cloud SQL でユーザー アカウントがどのように使用されるかについては、ユーザーをご覧ください。MySQL ユーザー アカウントについては、MySQL のドキュメントの初期 MySQL アカウントの保護をご覧ください。
Cloud SQL Auth Proxy のパラメータとフラグ
Cloud SQL Auth Proxy は、起動時に複数のフラグとパラメータを受け取ります。これらのオプションにより、Cloud SQL Auth Proxy が Cloud SQL との通信に使用するソケットを作成する場所と方法、および認証の方法が決まります。
Cloud SQL Auth Proxy のオプションのヘルプについては、次の情報をご覧ください。
- Cloud SQL Auth Proxy の認証オプション
- Cloud SQL Auth Proxy の呼び出し例
- Cloud SQL Auth Proxy の GitHub ページ
./cloud-sql-proxy --help
で表示される Cloud SQL Auth Proxy ヘルプ
Cloud SQL Proxy での FUSE の使用方法
FUSEは、「Filesystem in User Space」の略です。Cloud SQL Auth Proxy の呼び出し方法によっては、Cloud SQL との接続に使用するソケットを作成するために、必要に応じて、FUSE を使用できます。
Compute Engine またはローカル開発環境から接続するときは、Cloud SQL Auth Proxy は次のように FUSE を使用して、Cloud SQL インスタンスにアクセスします。
Cloud SQL Auth Proxy によって、「/cloudsql」ディレクトリが FUSE としてマウントされます。
プロセス(
mysql
など)が $INSTANCE という名前のファイルの検索を試みます。Cloud SQL Auth Proxy は、リクエストを傍受し、
/cloudsql/$INSTANCE
がファイル システム上のどこかにある Unix ソケットを指し示すシンボリック リンクであることを返します。プロセス(
mysql
など)はリンクに従って Unix ソケットを開いてプロキシ処理を続けます。
FUSE をインストールする
Linux の場合:
FUSE が機能するには、fusermount
プログラムとカーネル モジュールが必要です。/dev/fuse/
ファイルを見ることによって、このプログラムがインストールされているかどうかを確認できます。fusermount
がシステム上にない場合は、パッケージ管理システムを使用してインストールするか、ソースからコンパイルできます。
macOS の場合:
FUSE for macOS をインストールします。
本番環境で Cloud SQL Auth Proxy を使用する
本番環境で Cloud SQL Auth Proxy を使用している場合は、Cloud SQL Auth Proxy でアプリケーションに必要な可用性を確保するための手順がいくつかあります。
Cloud SQL Auth Proxy が永続サービスとして実行されていることを確認する
Cloud SQL Auth Proxy プロセスが停止すると、そのプロキシを介した既存の接続がすべて切断され、アプリケーションは Cloud SQL Auth Proxy を使用して Cloud SQL インスタンスへの接続を確立できなくなります。このシナリオを回避するには、Cloud SQL Auth Proxy を永続的なサービスとして動作させ、Cloud SQL Auth Proxy がなんらかの理由で終了した場合には、自動的に再起動されるようにします。このためには、systemd
、upstart
、supervisor
などのサービスを使用します。Windows オペレーティング システムの場合は、Cloud SQL Auth Proxy を Windows サービスとして動作させます。通常、Cloud SQL Auth Proxy に、アプリケーション プロセスと同じ稼働時間要件があることを確認してください。
アプリケーションに必要な Cloud SQL Auth Proxy のコピー数
アプリケーション プロセスごとにプロキシ プロセスを作成する必要はありません。多くのアプリケーション プロセスが単一の Cloud SQL Auth Proxy プロセスを共有できます。ワークステーションまたは仮想マシンごとに 1 つの Cloud SQL Auth Proxy クライアント プロセスを実行します。
仮想マシンの自動スケーリングを使用している場合は、新しい仮想マシンの起動時に、常に仮想マシンに独自の Cloud SQL Auth Proxy が存在するように、仮想マシンの構成に Cloud SQL Auth Proxy が含まれていることを確認してください。
接続を制限するかプールするかにかかわらず、アプリケーションに必要な接続数の管理はユーザーが行います。Cloud SQL Auth Proxy によって、新しい接続の割合や永続的な接続の数が制限されることはありません。
Cloud SQL Auth Proxy の出力を減らす
Cloud SQL Auth Proxy のログのサイズを削減する必要がある場合は、Cloud SQL Auth Proxy の起動時に --quiet
を設定します。ただし、ログのサイズを削減すると、接続の問題を診断する際の Cloud SQL Proxy 出力の有効性が低下する点に留意してください。
フェイルオーバーが Cloud SQL Auth Proxy に及ぼす影響
高可用性向けに構成されたインスタンス上で Cloud SQL Auth Proxy を動作させている最中にフェイルオーバーが発生した場合、Cloud SQL Auth Proxy を介した接続は、IP 経由の接続と同様に影響を受けます。つまり、既存の接続がすべて失われるため、アプリケーションは新しい接続を確立する必要があります。ただし、手動による操作は必要ありません。アプリケーションは以前と同じ接続文字列を引き続き使用できます。
Cloud SQL Auth Proxy Docker イメージを最新の状態に保つ
Cloud SQL Auth Proxy Docker イメージは、Cloud SQL Auth Proxy の特定のバージョンに基づいています。Cloud SQL Auth Proxy の新しいバージョンが利用可能になったら、Cloud SQL Auth Proxy Docker イメージの新しいバージョンを pull して、環境を最新の状態に保ってください。Cloud SQL Auth Proxy の最新バージョンは Cloud SQL Auth Proxy GitHub リリースページで確認できます。
Cloud SQL Auth Proxy の使用を適用する方法
ConnectorEnforcement を使用すると、Cloud SQL インスタンス接続で Cloud SQL Auth Proxy の使用を強制できます。コネクタ強制が適用されていると、直接データベース接続は拒否されます。
コネクタ強制を使用するには、instances
API の ConnectorEnforcement
フィールドを使用します。
Private Service Connect が有効になっているインスタンスを使用している場合は、制限があります。インスタンスでコネクタの適用が有効になっている場合、そのインスタンスにリードレプリカを作成することはできません。同様に、インスタンスにリードレプリカがある場合、そのインスタンスでコネクタの適用を有効にすることはできません。
Cloud SQL Auth Proxy または Cloud SQL 言語コネクタのみを使用してインスタンスに接続するように強制する方法については、Cloud SQL Auth Proxy の使用を強制するをご覧ください。
Cloud SQL Proxy Operator について
Cloud SQL Proxy Operator は、GKE クラスタ内のワークロードの Cloud SQL データベースへの接続を自動化するオープンソースの Kubernetes Operator です。Cloud SQL Auth Proxy Operator は、特定のワークロードの Cloud SQL Auth Proxy 構成を指定するカスタム リソースの AuthProxyWorkload を利用します。Cloud SQL Auth Proxy Operator がこのリソースを読み取り、必要な構成を含む Cloud SQL Auth Proxy コンテナを適切なワークロードに追加します。
GKE クラスタにオペレーターをインストールして、ワークロードと Cloud SQL インスタンスを構成すると、Cloud SQL Auth Proxy Operator は Cloud SQL Auth Proxy を自動的に構成し、GKE ワークロードを Cloud SQL インスタンスに接続します。
Cloud SQL Auth Proxy Operator は、Cloud SQL Auth Proxy のステータスも確認します。Cloud SQL Auth Proxy が接続できない場合、Cloud SQL Auth Proxy Operator はデバッグ情報を出力し、一般的な構成の問題をトラブルシューティングして修復するためのガイダンスを提供します。
詳細については、Cloud SQL Proxy Operator を使用して接続するをご覧ください。