

# データベースロールと IAM 認証の使用
<a name="using-database-and-iam-roles"></a>

Aurora DSQL は、IAM ロールと IAM ユーザーの両方を使用した認証をサポートしています。どちらの方法でも、Aurora DSQL データベースを認証してアクセスできます。

## IAM ロール
<a name="dsql-iam-roles"></a>

IAM ロールは、特定のアクセス許可を持つ AWS アカウント内のアイデンティティですが、特定のユーザーには関連付けられていません。IAM ロールを使用して一時的なセキュリティ認証情報を提供します。IAM ロールは、いくつかの方法で一時的に引き受けることができます。
+ AWS マネジメントコンソールでロールを切り替える
+ AWS CLI または AWS API オペレーションを呼び出す
+ カスタム URL を使用する

ロールを引き受けると、ロールの一時的な認証情報を使用して Aurora DSQL にアクセスできます。ロールを使用する方法の詳細については、「*IAM ユーザーガイド*」の「[IAM アイデンティティ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)」を参照してください。

## IAM ユーザー
<a name="dsql-iam-users"></a>

IAM ユーザーは、特定の許可を持つ AWS アカウント内のアイデンティティで、1 人のユーザーまたは 1 つのアプリケーションに関連付けられています。IAM ユーザーには、Aurora DSQL へのアクセスに使用できるパスワードやアクセスキーなどの長期的な認証情報があります。

**注記**  
IAM 認証で SQL コマンドを実行するには、以下の例の IAM ロール ARN または IAM ユーザー ARN のいずれかを使用できます。

## クラスターへの接続をデータベースロールに許可する
<a name="using-database-and-iam-roles-custom-database-roles"></a>

IAM ロールを作成し、IAM ポリシーアクション `dsql:DbConnect` を使用して接続認可を付与します。

IAM ポリシーは、クラスターリソースにアクセスするためのアクセス許可も付与する必要があります。ワイルドカード (`*`) を使用するか、「[Amazon Aurora DSQL での IAM 条件キーの使用](using-iam-condition-keys.md#using-iam-condition-keys-create-cluster)」の手順に従います。

## データベースで SQL を使用するためのデータベースロールの許可
<a name="using-database-and-iam-roles-custom-database-roles-sql"></a>

クラスターに接続するには、認可付きの IAM ロールを使用する必要があります。

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

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

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

   ```
   CREATE ROLE example WITH LOGIN;
   ```

1. データベースロールを IAM ロール ARN に関連付けます。

   ```
   AWS IAM GRANT example TO 'arn:aws:iam::{{012345678912}}:role/{{example}}'; 
   ```

1. データベースレベルのアクセス許可をデータベースロールに付与する

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

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

詳細については、「PostgreSQL ドキュメント」の「[PostgreSQL `GRANT`](https://www.postgresql.org/docs/current/sql-grant.html)」および「[PostgreSQL の権限](https://www.postgresql.org/docs/current/ddl-priv.html)」を参照してください。

## IAM からデータベースへのロールマッピングの表示
<a name="using-database-and-iam-roles-view-mappings"></a>

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 ロールからのデータベース認可の取り消し
<a name="using-database-and-iam-roles-revoke"></a>

データベース認可を取り消すには、`AWS IAM REVOKE` オペレーションを使用します。

```
AWS IAM REVOKE example FROM 'arn:aws:iam::{{012345678912}}:role/{{example}}';
```

認可の取り消しの詳細については、「[IAM と PostgreSQL を使用した認可の取り消し](authentication-authorization.md#authentication-authorization-revoke)」を参照してください。