

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

# Aurora DSQL 的身分驗證和授權
<a name="authentication-authorization"></a>

Aurora DSQL 使用 IAM 角色和政策進行叢集授權。您可將 IAM 角色與 [PostgreSQL 資料庫角色](https://www.postgresql.org/docs/current/user-manag.html)建立關聯以進行資料庫授權。這種方法結合了 [IAM 的優點](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-iam-features.html)與 [PostgreSQL 權限](https://www.postgresql.org/docs/current/user-manag.html)。Aurora DSQL 使用這些功能為您的叢集、資料庫和資料提供完整的授權和存取政策。

## 使用 IAM 管理叢集
<a name="authentication-authorization-iam-role-manage"></a>

管理叢集時請使用 IAM 進行身分驗證和授權：

**IAM 身分驗證**  
若要在管理 Aurora DSQL 叢集時驗證 IAM 身分，就一定要使用 IAM。您可以使用 [AWS 管理主控台](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)、[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 或 [AWS SDK](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) 提供身分驗證。

**IAM 授權**  
若要管理 Aurora DSQL 叢集，請使用 Aurora DSQL 的 IAM 動作授予授權。例如若要描述叢集，請確保您的 IAM 身分具有許可權限可以採取 IAM 動作 `dsql:GetCluster`，如下列政策動作範例所示。  

```
{
  "Effect": "Allow",
  "Action": "dsql:GetCluster",
  "Resource": "arn:aws:dsql:us-east-1:{{123456789012}}:cluster/{{my-cluster}}"
}
```
如需詳細資訊，請參閱[使用 IAM 政策動作管理叢集](#authentication-authorization-iam-policy-manage)。

## 使用 IAM 連線至叢集
<a name="authentication-authorization-iam-role-connect"></a>

若要連線至叢集，請使用 IAM 進行身分驗證和授權：

**IAM 身分驗證**  
使用具有授權的 IAM 身分產生臨時身分驗證記號以連線至叢集。如需詳細資訊，請參閱 [在 Amazon Aurora DSQL 產生身分驗證記號](SECTION_authentication-token.md)。

**IAM 授權**  
將下列 IAM 政策動作授予至您用來建立連線至叢集端點的 IAM 身分：  
+ 如果您使用的是 `admin` 角色，請使用 `dsql:DbConnectAdmin`。Aurora DSQL 會為您建立和管理此角色。下列 IAM 政策動作範例允許 `admin` 連線至 {{my-cluster}}。

  ```
  {
    "Effect": "Allow",
    "Action": "dsql:DbConnectAdmin",
    "Resource": "arn:aws:dsql:us-east-1:{{123456789012}}:cluster/{{my-cluster}}"
  }
  ```
+ 如果您使用的是自訂資料庫角色，請使用 `dsql:DbConnect`。您可在資料庫使用 SQL 命令建立和管理此角色。下列 IAM 政策動作範例允許自訂資料庫角色連線至 {{my-cluster}} 長達一小時。

  ```
  {
    "Effect": "Allow",
    "Action": "dsql:DbConnect",
    "Resource": "arn:aws:dsql:us-east-1:{{123456789012}}:cluster/{{my-cluster}}"
  }
  ```
您建立連線後，角色就獲得授權可連線最長一小時。

## 使用 PostgreSQL 資料庫角色和 IAM 角色與資料庫互動
<a name="authentication-authorization-database-roles-manage"></a>

PostgreSQL 使用角色概念管理資料庫存取許可權限。視角色的設定方式而定，可將角色視為資料庫使用者或資料庫使用者群組。您可使用 SQL 命令建立 PostgreSQL 角色。若要管理資料庫層級授權，請將 PostgreSQL 許可權限授予 PostgreSQL 資料庫角色。

Aurora DSQL 支援兩種類型的資料庫角色：`admin` 角色和自訂角色。Aurora DSQL 會自動在 Aurora DSQL 叢集中為您建立預先定義的 `admin` 角色。您無法修改 `admin` 角色。您以 `admin` 身分連線至資料庫時，可以發出 SQL 建立新的資料庫層級角色，以與您的 IAM 角色建立關聯。若要讓 IAM 角色連線至您的資料庫，請將您的自訂資料庫角色與 IAM 角色建立關聯。

**身分驗證**  
使用 `admin` 角色連線至您的叢集。連線資料庫後，請使用 `AWS IAM GRANT` 命令將自訂資料庫角色與有權連線叢集的 IAM 身分建立關聯，如下列範例所示。  

```
AWS IAM GRANT {{custom-db-role}} TO 'arn:aws:iam::{{account-id}}:role/{{iam-role-name}}';
```
如需詳細資訊，請參閱 [授權資料庫角色連線至您的叢集](using-database-and-iam-roles.md#using-database-and-iam-roles-custom-database-roles)。

**授權**  
使用 `admin` 角色連線至您的叢集。執行 SQL 命令以設定自訂資料庫角色並授予許可權限。如需詳細資訊，請參閱 PostgreSQL 文件中的 [PostgreSQL 資料庫角色](https://www.postgresql.org/docs/current/user-manag.html)和 [PostgreSQL 權限](https://www.postgresql.org/docs/current/ddl-priv.html)。

## 以 Aurora DSQL 使用 IAM 政策動作
<a name="authentication-authorization-iam-policy"></a>

您所能使用的 IAM 政策動作，取決於您用來連線至叢集的角色：可能是 `admin` 或自訂資料庫角色。政策也取決於此角色所需的 IAM 動作。

### 使用 IAM 政策動作連線至叢集
<a name="authentication-authorization-iam-policy-connect"></a>

您使用 `admin` 預設資料庫角色連線至叢集時，請使用有權執行下列 IAM 政策動作的 IAM 身分。

```
"dsql:DbConnectAdmin"
```

您使用自訂資料庫角色連線至叢集時，請先將 IAM 角色與資料庫角色建立關聯。您用來連線至叢集的 IAM 身分，必須有權執行下列 IAM 政策動作。

```
"dsql:DbConnect"
```

若要進一步瞭解自訂資料庫角色，請參閱 [使用資料庫角色和 IAM 身分驗證](using-database-and-iam-roles.md)。

### 使用 IAM 政策動作管理叢集
<a name="authentication-authorization-iam-policy-manage"></a>

管理 Aurora DSQL 叢集時，請僅為角色需要執行的動作指定政策動作。例如若您的角色只需取得叢集資訊，您可以限制角色許可權限為僅限 `GetCluster` 和 `ListClusters` 許可權限，如下列範例政策所示

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "dsql:GetCluster",
        "dsql:ListClusters"
      ],
      "Resource": "arn:aws:dsql:us-east-1:{{123456789012}}:cluster/{{my-cluster}}"
    }
  ]
}
```

------

下列範例政策顯示所有可用於管理叢集的 IAM 政策動作。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "dsql:CreateCluster",
        "dsql:GetCluster",
        "dsql:UpdateCluster",
        "dsql:DeleteCluster",
        "dsql:ListClusters",
        "dsql:TagResource",
        "dsql:ListTagsForResource",
        "dsql:UntagResource"
      ],
      "Resource" : "*"
    }
  ]
}
```

------

## 使用 IAM 和 PostgreSQL 撤銷授權
<a name="authentication-authorization-revoke"></a>

您可以撤銷 IAM 角色存取資料庫層級角色的許可權限：

**撤銷連線至叢集的管理員授權**  
若要撤銷以 `admin` 角色連線至叢集的授權，請撤銷 IAM 身分對 `dsql:DbConnectAdmin` 的存取權限。您可編輯 IAM 政策，或是讓身分與政策分離。  
從 IAM 身分撤銷連線授權後，Aurora DSQL 會拒絕該 IAM 身分嘗試的所有新連線。任何使用該 IAM 身分的作用中連線，在連線期間可能會保持授權狀態。如需有關連線期間的詳細資訊，請參閱[配額與限制](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/CHAP_quotas.html)。

**撤銷自訂角色連線叢集的授權**  
若要撤銷 `admin` 以外存取資料庫角色的權限，請撤銷 IAM 身分對 `dsql:DbConnect` 的存取權限。您可編輯 IAM 政策，或是讓身分與政策分離。  
您也可以使用資料庫的命令 `AWS IAM REVOKE`，以移除資料庫角色與 IAM 之間的關聯。若要進一步瞭解如何從資料庫角色撤銷存取權限，請參閱 [從 IAM 角色撤銷資料庫授權](using-database-and-iam-roles.md#using-database-and-iam-roles-revoke)。

您無法管理預先定義 `admin` 資料庫角色的許可權限。若要瞭解如何管理自訂資料庫角色的許可權限，請參閱 [PostgreSQL 權限](https://www.postgresql.org/docs/current/ddl-priv.html)。Aurora DSQL 成功認可修改交易後，權限修改會在下一個交易生效。