データベースロールと IAM 認証の使用 - Amazon Aurora DSQL

データベースロールと 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 ロールを使用する必要があります。

  1. SQL ユーティリティを使用して Aurora DSQL クラスターに接続します。

    IAM アクション dsql:DbConnectAdmin がクラスターに接続することを許可されている IAM ID で admin データベースロールを使用します。

  2. 新しいデータベースロールを作成し、必ず WITH LOGIN オプションを指定します。

    CREATE ROLE example WITH LOGIN;
  3. データベースロールを IAM ロール ARN に関連付けます。

    AWS IAM GRANT example TO 'arn:aws:iam::012345678912:role/example';
  4. データベースレベルのアクセス許可をデータベースロールに付与する

    次の例では、GRANT コマンドを使用してデータベース内で認可を提供します。

    GRANT USAGE ON SCHEMA myschema TO example; GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA myschema TO example;

詳細については、「PostgreSQL ドキュメント」の「PostgreSQL GRANT」および「PostgreSQL の権限」を参照してください。

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 を使用した認可の取り消し」を参照してください。