このページでは、Identity and Access Management(IAM)を使用して AlloyDB データベースへのアクセスを管理する方法について説明します。
IAM 認証のコンセプト
IAM 認証を使用する場合、AlloyDB インスタンスへのアクセス権はエンドユーザーに直接付与されません。代わりに、複数の権限をロールにまとめて、プリンシパルに付与します。詳細については、IAM の概要をご覧ください。
IAM データベース認証を使用してログインする管理者は、IAM ポリシーを使用してインスタンスへのアクセス制御を一元管理できます。
IAM ポリシーには、次のエンティティが含まれます。
プリンシパル。AlloyDB では、ユーザー アカウントまたはサービス アカウント(アプリケーション用)を使用できます。詳細については、プリンシパルをご覧ください。
ロール。IAM データベース認証では、プリンシパルに alloydb.instances.login 権限が必要です。この権限は、AlloyDB クライアント ロール(
roles/alloydb.client)に含まれています。この権限を取得するには、ユーザー、サービス アカウント、またはグループを事前定義ロールか、この権限を含むカスタムロールにバインドします。詳細については、権限とロールをご覧ください。リソース。プリンシパルがアクセスするリソースは AlloyDB インスタンスです。デフォルトでは、IAM ポリシー バインディングはプロジェクト レベルで適用されるため、プリンシパルはプロジェクト内のすべての AlloyDB インスタンスのロール権限を受け取ります。詳細については、リソースをご覧ください。
データベース認証オプションを比較する
次の表を使用して、ユースケースに最適な認証方法を判断してください。
| 機能 | 組み込みデータベース認証 | IAM データベース認証(個別) |
|---|---|---|
| 認証方法 | パスワード | 一時的な認証トークン |
| ネットワーク トラフィックの暗号化 | SSL 不要 | SSL 必要 |
| ユーザー管理 | 手動 | IAM で一元化 |
IAM データベースの自動認証と手動認証
AlloyDB には、IAM データベース認証に 2 つの方法(自動と手動)があります。
IAM データベースの自動認証
IAM データベースの自動認証を使用すると、Auth Proxy や言語コネクタなどの中間の AlloyDB コネクタにアクセス トークンのリクエストと管理を任せることができます。
IAM データベースの自動認証では、アプリケーションは、クライアントからの接続リクエストで IAM データベースのユーザー名のみを渡す必要があります。コネクタは、クライアントに代わってパスワード属性のアクセス トークン情報を送信します。
IAM データベースの手動認証
IAM データベースの手動認証では、IAM プリンシパルは、クライアント接続リクエストでパスワード属性のアクセス トークンを明示的に渡す必要があります。プリンシパルはまず Google Cloud にログインし、IAM からのアクセス トークンを明示的にリクエストする必要があります。
IAM の条件と監査ログ
IAM Conditions を使用すると、さまざまな属性に基づいてロールを付与できます。たとえば、特定の日時にのみアクセスを許可することや、特定の名前の AlloyDB リソースにのみアクセス権を付与できます。
Cloud Audit Logs を使用すると、ログインなどのデータアクセスの記録を保持できます。デフォルトでは、Cloud Audit Logs は無効になっています。ログインをトラッキングするには、データアクセス監査ログを有効にする必要があります。
制限事項とベスト プラクティス
セキュリティ上、IAM データベース認証を使用したログインは SSL 接続でのみ使用できます。暗号化されていない接続は拒否されます。
各インスタンスには分単位のログイン割り当てがあります。これには、成功したログインと失敗したログインの両方が含まれます。割り当てを超過すると、一時的にログインできなくなります。頻繁なログインを避け、承認済みネットワークを使用してログインを制限することをおすすめします。