このページでは、AlloyDB データベースへの承認済みの暗号化された接続を可能にするコネクタである AlloyDB Auth Proxy の概要について説明します。
Auth Proxy の使用方法については、AlloyDB Auth Proxy を使用して接続するをご覧ください。
概要
Auth Proxy には、クライアントを AlloyDB データベースに直接接続する場合にはない次のような利点があります。
IAM ベースの接続認可(AuthZ): Auth Proxy は、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 はどのポートでもリッスンできますが、ポート 5433 にのみ AlloyDB インスタンスへの送信接続または下り(外向き)接続が作成されます。AlloyDB Auth Proxy は、固定 IP アドレスを持たないドメイン名 alloydb.googleapis.com
を使用して API を呼び出すため、ポート 443 ですべての下り(外向き)TCP 接続を許可する必要があります。クライアント マシンに送信ファイアウォール ポリシーがある場合は、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への認証を試みます。
--credentials-file フラグによって指定された認証情報
サービス アカウントを使用して、関連付けられた JSON キーファイルを作成してダウンロードし、Auth Proxy クライアントを起動するときに、そのファイルのパスに--credentials-file
フラグを設定します。サービス アカウントには、AlloyDB インスタンスの Cloud AlloyDB クライアント(roles/alloydb.client
)IAM ロールと 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 をインストールし、個人アカウントで認証した場合は、Auth Proxy クライアントで同じアカウント認証情報を使用できます。この方法は、開発環境の運用を開始する際に特に便利です。
gcloud auth login
用のアカウントが選択されていない場合、Auth Proxy クライアントはgcloud auth application-default login
用に選択されたアカウントをチェックします。Compute Engine インスタンスに関連付けられている認証情報
Compute Engine インスタンスから AlloyDB に接続している場合、Auth Proxy クライアントは Compute Engine インスタンスに関連付けられているサービス アカウントを使用できます。サービス アカウントに AlloyDB インスタンスの Cloud AlloyDB クライアント(
roles/alloydb.client
)IAM ロールと Service Usage ユーザー(roles/serviceusage.serviceUsageConsumer
)IAM ロールが付与されている場合、Auth Proxy クライアントは正常に認証されます。Compute Engine インスタンスが AlloyDB インスタンスと同じプロジェクトに属している場合、Compute Engine インスタンスのデフォルトのサービス アカウントには、AlloyDB の認証に必要な権限が付与されています。この 2 つのインスタンスが別々のプロジェクトに属している場合は、AlloyDB インスタンスが属するプロジェクトに Compute Engine インスタンスのサービス アカウントを追加する必要があります。
環境のデフォルトのサービス アカウント
Auth Proxy クライアントが前述のいずれの場所でも認証情報を見つけられない場合、サービス アカウントとして認証するに記載されているロジックに従います。一部の環境(Compute Engine、App Engine など)では、アプリケーションがデフォルトで認証に使用できるデフォルトのサービス アカウントが用意されています。デフォルトのサービス アカウントを使用する場合は、Cloud AlloyDB クライアント(roles/alloydb.client
)と Service Usage コンシューマ(roles/serviceusage.serviceUsageConsumer
)の IAM ロールが必要です。Google Cloud の認証方法の詳細については、認証の概要をご覧ください。