GoogleCloudPlatform/cloudsql-proxy

CIGoリファレンス

Cloud SQL Auth proxyは、Cloud SQLインスタンスに接続するときにIAMベースの認証と暗号化

Cloud SQLインスタンスへの接続の詳細については、”接続の概要”ページ、またはCloud SQLプロキシの動作の詳細については、”プロキシについて”ページを参照してくださ

: すでに存在しない場合、プロキシはCloud SQLインスタンスへのネットワークパスを提供できません(たとえば、すでにVPCにアクセスできない場合、プロキシはVpc

インストール

64ビットLinuxの場合は、次のコマンドを実行します:

wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy

追加のOSとアーキテクチャのためのリリースとreleasespageにあります。

代替ディストリビューションについては、以下のサードパーティの下を参照してください。

コンテナ画像

次のgoogle Cloud Container Registryリポジトリから利用可能なプロキシのコンテナ化されたバージョンがあります:

  • gcr.io/cloudsql-docker/gce-proxy
  • us.gcr.io/cloudsql-docker/gce-proxy
  • eu.gcr.io/cloudsql-docker/gce-proxy
  • asia.gcr.io/cloudsql-docker/gce-proxy

各画像には、関連するプロキシバージョンがタグ付けされています。 現在サポートされているタグは次のとおりです:

  • $VERSION – デフォルトの画像(推奨)
  • $VERSION-alpine – ベースイメージとしてalpine:3を使用します(v1.17以降のみサポートされています)
  • $VERSION-buster – ベースイメージとしてdebian:busterを使用します(v1.17以降のみサポートされています)

プロキシの最新バージョンを使用し、バージョンを更新することをお勧めします定期的に。 ただし、特定のタグに固定することをお勧めし、タグを使用しないようにしてください。 注:タグ付けされたバージョンは、プロキシのバージョンのみです。 Baseimagesの変更は、メジャーバージョン以外の増分であっても、特定の設定を破る可能性があります。 そのため、展開前に変更をテストし、automatedrollbacksを使用して潜在的な障害を元に戻すことをお勧めします。

ソースからインストール

ソースからインストールするには、Goinstallの最新バージョンがインストールされていることを確認します。

次に、単純に実行します:

go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy

cloud_sql_proxygo getが完了した後に$GOPATH/binに配置されます。

使用法

次のすべての呼び出しは、有効な資格情報が環境に存在することを前提としています。 次の例はすべてINSTANCE_CONNECTION_NAMEを参照しており、myproject:myregion:myinstanceの形式をとります。 INSTANCE_CONNECTION_NAMEを検索するには、gcloud sql instances describe <INSTANCE_NAME>を実行します。INSTANCE_NAMEはデータベースインスタンスの名前です。

TCPソケットの例

# Starts the proxy listening on 127.0.0.1:5432cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432
# Starts the proxy listening on on port 5432 on *all* interfacescloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:0.0.0.0:5432

Unixソケットの例

# The proxy will mount a Unix domain socket at /cloudsql/<INSTANCE_CONNECTION_NAME># Note: The directory specified by `-dir` must exist.cloud_sql_proxy -dir=/cloudsql -instances=<INSTANCE_CONNECTION_NAME>

プライベートIP例

cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE

プライベートIPを使用して接続するには、yourprojectのVPCを介してアクセスできる必要があります。 詳細については、”プライベートIP要件”を参照してください。

認証情報

Cloud SQLプロキシは、Cloud IAMアカウントを使用してaCloud SQLインスタンスに対する接続を承認します。 プロキシは、次の順序でこれらのアカウントの資格情報をソースします:

  1. -credential_fileフラグ
  2. -tokenフラグ
  3. GOOGLE_APPLICATION_CREDENTIALS環境変数に格納されているパスにあるサービスアカウントキー。
  4. gcloudユーザーの資格情報(以下から設定)gcloud auth login)
  5. アプリケーションのデフォルト認証情報

注:Cloud SQLデータベースに接続するアカウントには、以下のいずれかのIAMロールが必要です:

  • Cloud SQLクライアント(優先)
  • Cloud SQLエディタ
  • Cloud SQL Admin

または、次のIAM権限を手動で割り当てることができます:

  • cloudsql.instances.connect
  • cloudsql.instances.get

詳細については、”Cloud SQLのロールと権限”を参照してください。

プロキシがCompute Engine VMのデフォルトserviceaccountで認証する場合、VMには少なくともsqlservice.adminAPIスコープ(つまり”https://www.googleapis.com/auth/sqlservice.admin”)が必要であり、関連するprojectmustにはSQL Admin APIが有効になっている必要が 既定のサービスアカウントには、ターゲットSQLインスタンスのすべてのプロジェクトに対するライター権限または編集者権限も最小である必要があります。

CLI Flags

Cloud SQL Auth proxyは、接続するインスタンスと接続動作を設定するためにいくつかの引数を取ります。 プロキシでサポートされているフラグの完全なリストについては、cloud_sql_proxy -helpを使用します。

認証フラグ

-credential_file

接続を承認または認証するためにプロキシが使用するJSONサービスアカウントキーへのパスを指定します。

-token

設定すると、プロキシはこのベアラートークンを承認に使用します。

-enable_iam_login

プロキシがCloud SQL IAMデータベース認証を使用できるようにします。 これにより、プロキシはデータベースユーザー認証にIAMアカウント認証情報を使用します。 詳細については、”Cloud SQL IAMデータベース認証の概要

接続フラグ”を参照してください

-instances="project1:region:instance1,project3:region:instance1"

-dir内で開くインスタンスのコンマ区切りのリスト。 また、TCPポートの拡張とデフォルトのUnixドメインソケットの名前の変更もサポートしています。 両方が提供されている場合には、INSTANCES環境変数を介して同じリストを提供することができます-proxyはコマンドラインフラグを使用します。

TCPソケットを使用した例

:

./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1

Unixソケットの使用:

./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

カスタムUnixソケット名を指定するには:

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name

Unixソケットのカスタムの場所を指定するには(オーバーライド-dir):

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:/my/custom/sql-socket &mysql -u root -S /my/custom/sql-socket

-fuse

/dev/fusefusermountバイナリへのアクセスが必要です。 オプションの-fuse_tmpフラグは、一時ファイルを配置する場所を指定できます。 -dirで指定されたディレクトリがマウントされています。

-fuseを使用すると、事前にインスタンス名を指定する必要はありません:

./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

-instances_metadata=metadata_key

GCEでのみ使用可能です。 Given gceメタデータキーは、-dirで開くインスタンスのリストに対してポーリングされます。 メタデータキーはrelativefromcomputeMetadata/v1/です。 値の形式は’instances’フラグと同じです。 つまり、プロキシの実行中であっても、themetadata値への変更は-dirに反映されます。インスタンスがリストから削除されると、対応するソケットも-dirから削除されます(-instancesでも指定されていない限り)が、このインスタンスへの既存の接続は

./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

注:-instances-instances_metadataは同時に使用できますが、-fuseフラグとは互換性がありません。

-max_connections

指定されている場合、newconnectionsを拒否する前に確立する接続の最大数。 デフォルトは0(制限なし)です。

追加フラグ

-ip_address_types=PUBLIC,PRIVATE

インスタンスに接続するための優先IPタイプのコンマ区切りのリスト。 たとえば、これをPRIVATEに設定すると、プロキシはインスタンスの関連付けられたプライベートIPを使用してinstancesに接続するように強制されます。 デフォルトは次のとおりです。PUBLIC,PRIVATE

-term_timeout=30s

プロキシをシャットダウンする前に接続が閉じるのを待つ時間。デフォルトは0です。

-skip_failed_instance_config

このフラグを設定すると、インスタンス構成中にエラーが発生した場合にプロキシが終了しなくなります。 これは、プロキシが再起動すると他のインスタンスが動作する可能性がありますが、一部のインスタンスが正しく設定される可能性があ

-log_debug_stdout=true

これは、標準エラーの代わりに標準出力に非エラー出力を記録することです。 たとえば、接続関連のメッセージをエラーとしてログに記録したくない場合は、thisフラグをtrueに設定します。 デフォルトはfalseです。

-structured_logs

すべてのログ出力を、level、ts、caller、msgのキーを使用してJSONとして書き込みます。 たとえば、起動メッセージは次のようになります:

{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}

Kubernetesサイドカーとして実行する

googlekubernetesエンジンから接続するだけでなく、ここの例を参照してください。

リファレンスドキュメント

  • Cloud SQL
  • Cloud SQL Auth proxyドキュメント
  • Cloud SQL Auth proxy Quickstarts
  • Cloud SQLコードサンプル
  • Cloud SQL Auth proxyパッケージドキュメント

貢献

詳細については、貢献文書を参照してください。

このプロジェクトはコントリビューターコードでリリースされていることに注意してくださいConduct.By このプロジェクトに参加すると、その条件を遵守することに同意します。 詳細については、行動のSeeContributorコード。

サードパーティ

警告:これらのディストリビューションはGoogleによって公式にサポートされていません。Homebrew

ここにCloud SQL Auth proxyのHomebrew式があります。

Helmを使用したKubernetesクラスターサービス

以下の手順に従ってください。

このチャートはデプロイメントとサービスを作成しますが、theproxyをサイドカーコンテナとしてポッドにデプロイすることをお勧めします。

.Netプロキシラッパー(Nugetパッケージ)

Nuget経由でインストールし、theseinstructionsに従います。

コメントを残す

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