

# 使用数据库角色和 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 账户内的一个身份，该身份对单个人员或应用程序具有特定权限或与单个人员或应用程序关联。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 策略还必须授予访问集群资源的权限。使用通配符 (`*`) 或按照[将 IAM 条件键与 Amazon Aurora DSQL 结合使用](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 身份（有权执行 IAM 操作 `dsql:DbConnectAdmin`）的 `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 Privileges](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)。