このページでは、AlloyDB データベースへの承認済みの暗号化された接続を可能にするコネクタである AlloyDB Auth Proxy の概要について説明します。
Auth Proxy の使用方法については、AlloyDB Auth Proxy を使用して接続するをご覧ください。
AlloyDB Auth Proxy を使用するメリット
Auth Proxy には、クライアントを AlloyDB データベースに直接接続する場合にはない次のような利点があります。
IAM ベースの接続認可(AuthZ): Auth Proxy は、Identity and Access Management(IAM)プリンシパルの認証情報と権限を使用して、AlloyDB インスタンスへの接続を認可します。
安全な暗号化された通信: Auth Proxy は、クライアントと AlloyDB インスタンスの間で 256 ビット AES 暗号を使用して TLS 1.3 接続を自動的に作成、使用、維持し、クライアントとサーバーの ID を検証してデータ トラフィックを暗号化します。
AlloyDB インスタンスへの接続の詳細については、接続の概要をご覧ください。
AlloyDB Auth Proxy の仕組み
AlloyDB Auth Proxy は、ローカル環境でローカル クライアントを実行することによって機能します。アプリケーションは、データベースで使用されている標準のデータベース プロトコルを介して AlloyDB Auth Proxy と通信します。
AlloyDB Auth Proxy は、安全なトンネル(TLS 1.3、256 ビット AES 暗号)を使用して、サーバー上で実行されているコンパニオン プロセスと通信します。AlloyDB Auth Proxy を介して確立された接続は、AlloyDB インスタンスへの接続を 1 つ作成します。
アプリケーションが AlloyDB Auth Proxy に接続すると、ターゲット AlloyDB インスタンスとの既存の接続が使用可能かどうかを確認します。接続が存在しない場合、AlloyDB Admin API を呼び出してエフェメラル SSL 証明書を取得し、それを使用して AlloyDB に接続します。エフェメラル SSL 証明書は 24 時間で期限切れになります。AlloyDB Auth Proxy は、これらの証明書が期限切れになる前に更新されます。
AlloyDB Auth Proxy は、HTTPS を使用してドメイン名 alloydb.googleapis.com
経由で API を呼び出します。そのため、クライアント マシンからポート 443(HTTPS)でのすべての下り(外向き)TCP 接続が、ファイアウォールで許可されている必要があります。
AlloyDB Auth Proxy はどのポートでもリッスンできますが、ポート 5433 にのみ AlloyDB インスタンスへの送信接続または下り(外向き)接続が作成されます。クライアント マシンにアウトバウンド ファイアウォール ポリシーがある場合は、AlloyDB インスタンスの IP でポート 5433 への送信接続が許可されていることを確認してください。
AlloyDB Auth Proxy が IAM プリンシパルを認可する方法
AlloyDB インスタンスへのクライアントの接続を承認するため、Auth Proxy クライアントはクライアントの IAM プリンシパル認証情報を使用して Google Cloud に対して認証を行い、IAM プリンシパルに Cloud AlloyDB クライアント(roles/alloydb.client
)と Service Usage ユーザー(roles/serviceusage.serviceUsageConsumer
)の IAM ロールがあることを確認します。
クライアントで IAM 認証情報を探すために、Auth Proxy クライアントは次の各項目をチェックし、最初に見つかったものを使用して Google Cloudに対する認証を試みます。
- credential_file フラグによって指定された認証情報
サービス アカウントを使用して、関連付けられた JSON キーファイルを作成してダウンロードし、Auth Proxy クライアントを起動するとき、そのファイルのパスに
--credentials-file
フラグを設定します。サービス アカウントには、AlloyDB インスタンスに対する Cloud AlloyDB クライアント(roles/alloydb.client
)と Service Usage ユーザー(roles/serviceusage.serviceUsageConsumer
)の IAM ロールが必要です。コマンドラインでこのオプションを使用するには、
--credentials-file
フラグを JSON 認証情報ファイルのパスとファイル名に設定して、alloydb-auth-proxy
コマンドを呼び出します。パスは現在の作業ディレクトリへの絶対パス、または相対パスとして設定できます。 - --token フラグによって指定された認証情報
アクセス トークンを作成し、OAuth 2.0 アクセス トークンに
--token
フラグを設定してalloydb-auth-proxy
コマンドを呼び出します。 - 環境変数によって指定された認証情報
このオプションは、
--credentials-file
フラグを使用する代わりに、GOOGLE_APPLICATION_CREDENTIALS
環境変数で設定する JSON 認証情報ファイルを指定する点を除けば、--credentials-file
フラグを使用する場合と類似しています。 - 認証済みの Google Cloud CLI クライアントからの認証情報
gcloud CLI をインストールし、個人アカウントで認証した場合は、
--gcloud-auth
フラグを有効にすると、Auth Proxy クライアントで同じアカウント認証情報を使用できます。この方法は、開発環境の運用を開始する際に特に便利です。gcloud auth login
用のアカウントが選択されていない場合は、Auth Proxy クライアントによってgcloud auth application-default login
用に選択されているアカウントがチェックされます。これは、--gcloud-auth
フラグを有効にしていない場合のデフォルトの動作です。 - Compute Engine インスタンスに関連付けられている認証情報
Compute Engine インスタンスから AlloyDB に接続している場合、Auth Proxy クライアントは Compute Engine インスタンスに関連付けられているサービス アカウントを使用できます。サービス アカウントに AlloyDB インスタンスの Cloud AlloyDB クライアント(
roles/alloydb.client
)と Service Usage ユーザー(roles/serviceusage.serviceUsageConsumer
)の Identity and Access Management(IAM)ロールが付与されている場合、Auth Proxy クライアントは正常に認証を行います。Compute Engine インスタンスが AlloyDB インスタンスと同じプロジェクトに属している場合、Compute Engine インスタンスのデフォルトのサービス アカウントには、AlloyDB の認証に必要な権限が付与されています。この 2 つのインスタンスが別々のプロジェクトに属している場合は、AlloyDB インスタンスが属するプロジェクトに Compute Engine インスタンスのサービス アカウントを追加する必要があります。
- 環境のデフォルトのサービス アカウント
Auth Proxy クライアントが前述のいずれの場所でも認証情報を見つけることができない場合、サービス アカウントとして認証するに記載されているロジックに従います。一部の環境(Compute Engine、App Engine など)では、アプリケーションがデフォルトで認証に使用できるデフォルトのサービス アカウントが用意されています。デフォルトのサービス アカウントを使用する場合は、Cloud AlloyDB クライアント(
roles/alloydb.client
)IAM ロールと Service Usage ユーザー(roles/serviceusage.serviceUsageConsumer
)IAM ロールが必要です。Google Cloud の認証方法の詳細については、認証の概要をご覧ください。