Cloud SQL Auth proxyについて

MySQL|PostgreSQL|SQL Server

このページでは、Cloud SQL Auth proxyの基本的な概要と、プロキシオプションについて説明します。

Cloud SQL Auth proxyの使用に関するステップバイステップの手順については、お使いの環境のリンクに従ってください:

  • Cloud SQL Authプロキシを使用するためのクイックスタート
  • Cloud SQL Authプロキシを使用して接続する方法
  • GKEからCloud SQL Authプロキシを使用して接続する方法

Cloud SQL Authプロキシを使用したり、APP Engine標準からCLOUD SQLに接続するSSLを設定したり、App Engineフレキシブル環境からCloud SQLに接続したりする必要はありません。

自分で試してみてください

Google Cloudを初めて使用する場合は、実際のシナリオでCloud SQLがどのように実行されるかを評価するアカウントを作成します。 また、新規のお客様には、ワークロードの実行、テスト、および展開に300ドルの無料クレジットが提供されます。

Try Cloud SQL free

Cloud SQL Auth proxyが提供するもの

Cloud SQL Auth proxyは、SSLを設定するための承認されたネットワークや設定を必要とせずに、インスタンスへの安全なアクセ

Cloud SQL Auth proxyを使用してCloud SQLインスタンスにアクセスするには、次の利点があります:

  • 安全な接続:Cloud SQL Authプロキシは、128ビットAES暗号を使用してTLS1.2を使用してデータベースとの間のトラフィックを自動的に暗号化します; SSL証明書は、クライアントとサーバーのidを検証するために使用されます。
  • 簡単な接続管理:Cloud SQL Authプロキシはcloud SQLで認証を処理するため、静的IPアドレスを提供する必要がなくなります。

Cloud SQL Auth proxyは新しい接続パスを提供しません。 プライベートIPを使用してCloud SQLインスタンスに接続するには、Cloud SQL Authプロキシがインスタンスと同じVPCネットワークにアクセスできるリソース上にある必

Cloud SQL Auth proxyの動作方法

Cloud SQL Auth proxyは、ローカル環境でローカルクライアントを実行することによって動作します。 アプリケーションは、データベースで使用される標準のデータベースプロトコルを使用して、Cloud SQL Authプロキシと通信します。 Cloud SQL Auth proxyは、サーバー上で実行されているコンパニオンプロセスと通信するためにsecure tunnelを使用します。

プロキシは任意のポートでリッスンできますが、ポート3307でCloud SQLインスタンスへの発信接続のみを作成します。 Outbound firewallpolicyがある場合は、Cloud SQLinstanceのIP上のポート3307への接続が許可されていることを確認してください。

次の図は、Cloud SQL AuthプロキシがCloud SQLにどのように接続するかを示しています:

Cloud SQL Auth proxyの図クライアントソフトウェアからSQLインスタンスへの接続

Cloud SQL Auth proxyを使用するための要件

Cloud SQL Auth proxyを使用するには、次の要件を満た:

  • Cloud SQL Admin APIを有効にする必要があります。
  • Cloud SQL Authプロキシにgoogle Cloud認証資格情報を提供する必要があります。
  • Cloud SQL Auth proxyに有効なデータベースユーザーアカウントとパスワードを指定する必要があります。
  • インスタンスは、パブリックIpv4アドレスを持つか、またはプライベートIPを使用するように設定する必要があります。

    パブリックIPアドレスは、外部アドレスからアクセスできる必要はありません(許可されたネットワークアドレスとして追加する必要はありません)。

Cloud SQL Auth proxyの起動オプション

Cloud SQL Auth proxyを起動するときに、次の情報を提供します:

  • どのCloud SQLインスタンスが
  • への接続を確立し、Cloud SQL
  • に送信されるアプリケーションからのデータをリッスンし、必要に応じてCloud SQL
  • への認証に使用する資格情報を検索します。

指定したCloud SQL Auth proxyの起動オプションは、TCPportまたはUnixソケットでリッスンするかどうかを決定します。 Unixソケットでリッスンしている場合は、選択した場所にソケットが作成されます。TCPの場合、Cloud SQL Authプロキシはデフォルトでlocalhostをリッスンします。

引数--helpを指定してcloud_sql_proxy実行可能ファイルを実行し、起動オプションの完全なリストを表示します。

Cloud SQL Auth proxyは、ローカル環境のどこにでもインストールできます。 Cloud SQL Auth proxyバイナリの場所は、yourapplicationからのデータをリッスンする場所には影響しません。

認証にサービスアカウントを使用する

Cloud SQL Auth proxyには認証が必要です。 この目的のためにサービスアカウントを使用する利点は、cloud SQL Authプロキシ専用の資格情報ファイルを作成でき、実行中であればCloud SQL Authプロキシに明示的かつ恒久的にリンクされていることです。 このため、Compute Engineインスタンスで実行されていないproductioninstancesでは、サービスアカウントを使用することをお勧めします。

複数のマシンからCloud SQL Authプロキシを呼び出す必要がある場合は、資格情報ファイルをシステムイメージに複製できます。

この方法を使用するには、資格情報ファイルを作成および管理する必要があります。 サービスアカウントを作成できるのは、resourcemanager.projects.setIamPolicy権限を持つユーザー(プロジェクト所有者など)のみです。 YourGoogle Cloudユーザーにこの権限がない場合は、someoneelseにサービスアカウントを作成させるか、別の方法を使用してCloud SQL Authプロキシを認証する必要があります。

資格情報ファイルの作成については、”サービスアカウントの作成”を参照してください。

サービスアカウントに必要な権限

サービスアカウントを使用してCloud SQL Auth proxyの資格情報を提供する場合は、十分な権限で作成する必要があります。 細かい粒度のIdentity Access and Management(IAM)ロールを使用してyourCloud SQL権限を管理する場合は、サービスアカウントにcloudsql.instances.connect権限を含むロールを付与する必要があります。 この権限を含むpredefinedCloud SQLロールは次のとおりです:

  • Cloud SQL Client
  • Cloud SQL Editor
  • Cloud SQL Admin

レガシープロジェクトロール(Viewer、Editor、Owner)を使用している場合、serviceaccountには少なくともEditorロールが必要です。

Cloud SQLインスタンスを指定するためのオプション

接続するインスタンスをCloud SQL Authプロキシに指示する方法はいくつかあります。 いくつかは明示的であり、いくつかは暗黙的です。 一部の構成では、Cloud SQL Auth proxyは接続要求に基づいて接続するため、接続するインスタンスを事前にCloud SQL Auth proxyに通知する必要はありません。

インスタンス仕様のオプションは、オペレーティングシステムと環境によって異なります:

オプション 利点 注意事項と要件 Linux/macOS
(Unixソケット)
Java Windows 注意事項
FUSE
(Filesystem in User Space)
接続要求に基づく動的ソケット作成。 ヒューズを取り付ける必要があります。 サポート いいえ いいえ -fuseフラグを使用します。
自動インスタンス検出 インスタンスを指定する必要はありません; 既定のプロジェクト内のすべてのインスタンス用に作成されたソケット。 Cloud SQL Auth proxy APIの使用量が増加しました。 Cloud SDKがインストールされ、認証され、デフォルトのプロジェクトが設定されている必要があります。 新しいインスタンスを追加するには、Cloud SQL Auth proxyを再起動する必要があります。 サポートされています いいえ いいえ 本番インスタンスには推奨されません。
Project discovery インスタンスを指定する必要はありません。 Cloud SQL Auth proxy APIの使用量が増加しました。 Cloud SDKがインストールされ、認証されている必要があります。 新しいインスタンスを追加するには、Cloud SQL Auth proxyを再起動する必要があります。 サポートされている いいえ いいえ -projectsパラメータを使用します。 実稼働インスタンスには推奨されません。
Cloud SQL Auth proxy invocation インスタンスリスト既知および静的で指定されたインスタンス。 新しいインスタンスを追加するには、Cloud SQL Auth proxyを再起動する必要があります。 サポートされている TCPソケットでサポートされている TCPソケットでサポートされている -instancesパラメータを使用します。 複数のインスタンスの場合は、コンマ区切りのリストを使用し、スペースは使用しません。 詳細をご覧ください。
Compute Engine metadata インスタンスリストを使用して指定されたインスタンスは、Cloud SQL Auth proxyを再起動せずにメタデータ値を変更することで更新できます。 Compute Engineでのみ使用できます。 サポートされている TCPソケットでサポートされている TCPソケットでサポートされている -instances_metadataフラグを使用します。 詳細をご覧ください。

呼び出しと接続文字列のサンプルを参照してください。

Cloud SQL Auth proxyを最新の状態に保つ

Googleは、Cloud SQL Auth proxyの新しいバージョンをリリースすることがあります。 現在のバージョンは、cloud SQL Auth proxy GitHub releasesページを確認することで確認できます。将来のプロキシリリースは、google Groups Cloud SQL announce forumにも記載されています。

APIの使用法

Cloud SQL Auth proxyは、Cloud SQL Admin APIに要求を発行します。 これらの要求は、プロジェクトのAPIクォータに対してカウントされます。

Cloud SQL Auth proxyを起動すると、APIの使用率が最も高くなります; これは、自動インスタンス検出または-projectsパラメータを使用する場合に特に当てはまります。 TheCloud SQL認証プロキシの実行中に、接続されたインスタンスごとに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 addresswildcardを使用することもできます。 完全なユーザーアカウント名は次のようになります:

''@'cloudsqlproxy~%'

または

''@'cloudsqlproxy~'

ユーザーの作成については、ユーザーの作成と管理を参照してください。Cloud SQLがユーザーアカウントでどのように機能するかについては、”ユーザー”を参照してください。 MySQLユーザーアカウントの詳細については、theMySQLのドキュメントの最初のMySQLアカウントの確認を参照してくださ

Cloud SQL Auth proxyのパラメータとフラグ

Cloud SQL Auth proxyは、起動時にいくつかのフラグとパラメータを受け入れます。 これらのオプションは、Cloud SQL Auth proxyがCloud SQLとの通信に使用するソケットをどこでどのように作成するか、およびどのように認証するかを決定します。

Cloud SQL Authプロキシオプションのヘルプについては、次の情報を参照してください:

  • Cloud SQL Auth proxyを認証するためのオプション
  • Cloud SQLインスタンスを指定するためのオプション
  • Cloud SQL Auth proxy呼び出しの例
  • Cloud SQL Auth proxy GitHubページ
  • Cloud SQL Auth proxyヘルプ。./cloud_sql_proxy -help

Cloud SQL Auth proxy

でのFUSEの使用方法FUSEは”Filesystem in User Space”の略です。Cloud SQL Auth proxyの呼び出し方法に応じて、fuseを使用してcloud SQLとの接続に使用するソケットを作成することができます。

Compute Engineまたはローカル開発環境から接続する場合、cloud SQL認証プロキシはFUSEを使用してCloud SQLインスタンスに次のようにアクセスします:

  • Cloudsql”ディレクトリは、Cloud SQL Auth proxyによってユーザースペースまたはfuseにファイルシステムとしてマウントされます。

  • プロセス(たとえば、mysql)はINSTANCE INSTANCEという名前のファイルを検索しようとします。

  • Cloud SQL Auth proxyはリクエストをインターセプトし、/cloudsql/$INSTANCEがファイルシステム上の他の場所にあるUnixソケットを指すasymbolic linkであることを返します。

  • プロセス(たとえば、mysql)はリンクをたどり、Unixソケットを開き、それがつながって接続します。

FUSE

For Linux:

FUSEをインストールするには、fusermountプログラムとカーネルモジュールが必要です。 このプログラムがインストールされているかどうかを確認するには、ファイル/dev/fuse/を探します。 システム上にfusermountがない場合は、パッケージマネージャーを使用してインストールするか、ソースからコンパイルすることができます。

macOS用:

macOS用のFUSEをインストールします。

本番環境でのCloud SQL Authプロキシの使用

本番環境でCloud SQL Authプロキシを使用している場合、Cloud SQL Authプロキシがアプリケーションのrequiredavailabilityを提供するようにす

Cloud SQL Auth proxyが永続サービスとして実行されていることを確認します

Cloud SQL Auth proxyプロセスが停止されている場合、Cloud SQL Auth proxyプロセスを介した既存の接続 このシナリオを回避するには、cloud SQL Auth proxyを永続サービスとして実行し、Cloud SQL Auth proxyがanyreasonのために終了した場合に自動的に再起動されるようにしてください。 これは、systemdupstartsupervisorなどのaserviceを使用して実現できます。 Windows operatingsystemの場合は、Cloud SQL Auth proxyをWindowsサービスとして実行します。 一般的に、Cloud SQL Auth proxyにアプリケーションプロセスと同じ稼働時間要件があることを確認してください。

アプリケーションに必要なCloud SQL Authプロキシのコピー数

アプリケーションプロセスごとにプロキシプロセスを作成する必要はありません。 ワークステーションまたは仮想マシンごとにCloud SQL Auth proxy clientprocessを実行します。

仮想マシンの自動スケーリングを使用している場合は、Cloud SQL Auth proxyが仮想マシン構成に含まれていることを確認して、新しい仮想マシンが起動されるたびに、独自のCloud SQL Auth proxyプロセスがあることを確認してください。

接続を制限またはプールするかどうかにかかわらず、アプリケーションが必要とする接続の数を管理するのはあなた次第です。 Cloud SQL Auth proxyは、新しい接続レートや永続的な接続数に制限を加えません。

Cloud SQL Auth proxy出力の削減

Cloud SQL Auth proxyログのサイズを小さくする必要がある場合は、Cloud SQL Auth proxyの起動時に-verbose=falseを設定することで設定できます。 ただし、doingsoはconnectionissuesの診断におけるCloud SQL Auth proxy出力の有効性を低下させることに注意してください。

フェイルオーバーがCloud SQL Auth proxyに与える影響

高可用性用に構成されたインスタンスでCloud SQL Auth proxyを実行していて、フェイルオーバーが発生した場合、Cloud SQL Auth proxyを介 アプリケーションは、以前と同じ接続文字列を使用し続けることができます。

Cloud SQL Auth proxy Dockerイメージを最新の状態に保つ

Cloud SQL Auth proxy Dockerイメージは、Cloud SQL Auth proxyの特定のバージョンに基づいています。Cloud SQL Auth proxyの新しいバージョンが使用可能になったら、Cloud SQL Auth proxy Dockerイメージのnewversionをプルして、環境を最新の状態に保ちます。 Cloud SQL Auth proxyの現在のバージョンを確認するには、cloud SQL Auth proxy GitHub releasesページを参照してください。

  • Cloud SQL Auth proxyの詳細については、こちらを参照してください。

コメントを残す

メールアドレスが公開されることはありません。