

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用資料庫角色和 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 叢集。

   使用 `admin` 資料庫角色搭配 IAM 身分，且該身分已獲授權讓 IAM 動作 `dsql:DbConnectAdmin` 連線至您的叢集。

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)。