データベースロールと IAM 認証の使用
Aurora DSQL は、IAM ロールと IAM ユーザーの両方を使用した認証をサポートしています。どちらの方法でも、Aurora DSQL データベースを認証してアクセスできます。
IAM ロール
IAM ロールは、特定のアクセス許可を持つ AWS アカウント内のアイデンティティですが、特定のユーザーには関連付けられていません。IAM ロールを使用して一時的なセキュリティ認証情報を提供します。IAM ロールは、いくつかの方法で一時的に引き受けることができます。
AWS Management Consoleでロールを切り替える
AWS CLI または AWS API オペレーションを呼び出す
カスタム URL を使用する
ロールを引き受けると、ロールの一時的な認証情報を使用して Aurora DSQL にアクセスできます。ロールを使用する方法の詳細については、「IAM ユーザーガイド」の「IAM アイデンティティ」を参照してください。
IAM ユーザー
IAM ユーザーは、特定の許可を持つ AWS アカウント内のアイデンティティで、1 人のユーザーまたは 1 つのアプリケーションに関連付けられています。IAM ユーザーには、Aurora DSQL へのアクセスに使用できるパスワードやアクセスキーなどの長期的な認証情報があります。
注記
IAM 認証で SQL コマンドを実行するには、以下の例の IAM ロール ARN または IAM ユーザー ARN のいずれかを使用できます。
クラスターへの接続をデータベースロールに許可する
IAM ロールを作成し、IAM ポリシーアクション dsql:DbConnect
を使用して接続認可を付与します。
IAM ポリシーは、クラスターリソースにアクセスするためのアクセス許可も付与する必要があります。ワイルドカード (*
) を使用するか、「Amazon Aurora DSQL での IAM 条件キーの使用」の手順に従います。
データベースで SQL を使用するためのデータベースロールの許可
クラスターに接続するには、認可付きの IAM ロールを使用する必要があります。
-
SQL ユーティリティを使用して Aurora DSQL クラスターに接続します。
IAM アクション
dsql:DbConnectAdmin
がクラスターに接続することを許可されている IAM ID でadmin
データベースロールを使用します。 -
新しいデータベースロールを作成し、必ず
WITH LOGIN
オプションを指定します。CREATE ROLE example WITH LOGIN;
-
データベースロールを IAM ロール ARN に関連付けます。
AWS IAM GRANT example TO 'arn:aws:iam::
012345678912
:role/example
'; -
データベースレベルのアクセス許可をデータベースロールに付与する
次の例では、
GRANT
コマンドを使用してデータベース内で認可を提供します。GRANT USAGE ON SCHEMA myschema TO example; GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA myschema TO example;
詳細については、「PostgreSQL ドキュメント」の「PostgreSQL GRANT
IAM からデータベースへのロールマッピングの表示
IAM ロールとデータベースロール間のマッピングを表示するには、sys.iam_pg_role_mappings
システムテーブルをクエリします。
SELECT * FROM sys.iam_pg_role_mappings;
出力例:
iam_oid | arn | pg_role_oid | pg_role_name | grantor_pg_role_oid | grantor_pg_role_name ---------+----------------------------------------+-------------+--------------+---------------------+----------------------26398
| arn:aws:iam::012345678912
:role/example
|26396
|example
|15579
| admin (1 row)
この表は、IAM ロール (ARN で識別) と PostgreSQL データベースロール間のすべてのマッピングを示しています。
IAM ロールからのデータベース認可の取り消し
データベース認可を取り消すには、AWS IAM REVOKE
オペレーションを使用します。
AWS IAM REVOKE example FROM 'arn:aws:iam::
012345678912
:role/example
';
認可の取り消しの詳細については、「IAM と PostgreSQL を使用した認可の取り消し」を参照してください。