

# 手动设置数据库身份验证和资源访问权限
<a name="limitless-load.manual"></a>

手动设置数据库身份验证和资源访问权限的流程包括以下步骤：

1. [创建客户托管的 AWS KMS key](#limitless-load.auth.create-kms)

1. [添加 IAM 角色权限策略](#limitless-load.auth.iam-policy)

1. [创建数据库密钥](#limitless-load.auth.secrets)

1. [创建 IAM 角色](#limitless-load.auth.iam-role)

1. [更新客户托管的 AWS KMS key](#limitless-load.auth.update-kms)

此步骤为可选项，执行的任务与 [使用脚本设置数据库身份验证和资源访问权限](limitless-load.script.md) 中相同。建议使用脚本。

## 创建客户托管的 AWS KMS key
<a name="limitless-load.auth.create-kms"></a>

按照[创建对称加密密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)中的过程创建客户托管的 KMS 密钥。如果满足这些要求，您也可以使用现有密钥。

**创建客户托管的 KMS 密钥**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 AWS KMS 控制台：[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms)。

1. 导航到**客户托管的密钥**页面。

1. 选择**创建密钥**。

1. 在**配置密钥**页面上：

   1. 对于**密钥类型**，选择**对称**。

   1. 对于**密钥用途**，选择**加密和解密**。

   1. 选择**下一步**。

1. 在**添加标签**页面上，输入**别名**，例如 **limitless**，然后选择**下一步**。

1. 在**定义密钥管理员权限**页面上，确保选中**允许密钥管理员删除此密钥**复选框，然后选择**下一步**。

1. 在**定义密钥使用权限**页面上，选择**下一步**。

1. 在**检查**页面上，选择**完成**。

   您可以稍后更新密钥策略。

记录要在 [添加 IAM 角色权限策略](#limitless-load.auth.iam-policy) 中使用的 KMS 密钥的 Amazon 资源名称（ARN）。

有关使用 AWS CLI 创建客户托管的 KMS 密钥的信息，请参阅 [create-key](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-key.html) 和 [create-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-alias.html)。

## 创建数据库密钥
<a name="limitless-load.auth.secrets"></a>

要允许数据加载实用程序访问源数据库表和目标数据库表，请在 AWS Secrets Manager 中创建两个密钥：一个用于源数据库，另一个用于目标数据库。这些密钥存储访问源数据库和目标数据库的用户名和密码。

按照[创建 AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中的过程创建键值对密钥。

**创建数据库密钥**

1. 通过 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 打开 Secrets Manager 控制台。

1. 选择**存储新密钥**。

1. 在**选择密钥类型**页面上：

   1. 对于**密钥类型**，选择**其他密钥类型**。

   1. 对于**键/值对**，选择**纯文本**标签。

   1. 输入以下 JSON 代码，其中 `sourcedbreader` 和 `sourcedbpassword` 是 [创建源数据库凭证](limitless-load.utility.md#limitless-load.users.source) 中源数据库用户的凭证。

      ```
      {
          "username":"sourcedbreader",
          "password":"sourcedbpassword"
      }
      ```

   1. 对于**加密密钥**，选择您在 [创建客户托管的 AWS KMS key](#limitless-load.auth.create-kms) 中创建的 KMS 密钥，例如 `limitless`。

   1. 选择**下一步**。

1. 在**配置密钥**页面上，输入**密钥名称**，例如 **source\$1DB\$1secret**，然后选择**下一步**。

1. 在**配置旋转 - *可选***页面上，选择**下一步**。

1. 在**检查**页面上，选择**存储**。

1. 对目标数据库密钥重复此过程：

   1. 输入以下 JSON 代码，其中 `destinationdbwriter` 和 `destinationdbpassword` 是 [创建目标数据库凭证](limitless-load.utility.md#limitless-load.users.destination) 中目标数据库用户的凭证。

      ```
      {
          "username":"destinationdbwriter",
          "password":"destinationdbpassword"
      }
      ```

   1. 输入**密钥名称**，例如 **destination\$1DB\$1secret**。

记录要在 [添加 IAM 角色权限策略](#limitless-load.auth.iam-policy) 中使用的密钥的 ARN。

## 创建 IAM 角色
<a name="limitless-load.auth.iam-role"></a>

数据加载需要您提供对 AWS 资源的访问权限。要提供访问权限，您可以按照[创建角色，为 IAM 用户授权](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)中的流程创建 `aurora-data-loader` IAM 角色。

**创建 IAM 角色**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 导航到**角色**页面。

1. 选择**创建角色**。

1. 在**选择可信实体**页面：

   1. 对于**可信实体类型**，选择**自定义信任策略**。

   1. 为自定义信任策略输入以下 JSON 代码：

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "rds.amazonaws.com"
                      ]
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 选择**下一步**。

1. 在**添加权限**页面上，选择**下一步**。

1. 在**名称、检查和创建**页面：

   1. 对于**角色名称**，输入 **aurora-data-loader** 或您喜欢的其他名称。

   1. 选择**添加标签**，然后输入以下标签：
      + **键**：**assumer**
      + **值**：**aurora\$1limitless\$1table\$1data\$1load**
**重要**  
Aurora PostgreSQL Limitless Database 只能担任具有此标签的 IAM 角色。

   1. 选择**创建角色**。

## 更新客户托管的 AWS KMS key
<a name="limitless-load.auth.update-kms"></a>

按照[更改密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)中的过程将 IAM 角色 `aurora-data-loader` 添加到默认密钥策略。

**将 IAM 角色添加到密钥策略**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 AWS KMS 控制台：[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms)。

1. 导航到**客户托管的密钥**页面。

1. 选择您在 [创建客户托管的 AWS KMS key](#limitless-load.auth.create-kms) 中创建的 KMS 密钥，例如 `limitless`。

1. 在**密钥策略**选项卡，对于**密钥用户**，选择**添加**。

1. 在**添加密钥用户**窗口，选择您在 [创建 IAM 角色](#limitless-load.auth.iam-role) 中创建的 IAM 角色名称，例如 **aurora-data-loader**。

1. 选择**添加**。

## 添加 IAM 角色权限策略
<a name="limitless-load.auth.iam-policy"></a>

您必须将权限策略添加到您创建的 IAM 角色。这将允许 Aurora PostgreSQL Limitless Database 数据加载实用程序访问相关 AWS 资源，以建立网络连接并检索源和目标数据库凭证密钥。

有关更多信息，请参阅[修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html#roles-modify_gen-policy)。

**添加权限策略**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 导航到**角色**页面。

1. 选择您在 [创建 IAM 角色](#limitless-load.auth.iam-role) 中创建的 IAM 角色，例如 **aurora-data-loader**。

1. 在**权限**选项卡，对于**权限策略**，选择**添加权限**，然后**创建内联策略**。

1. 在**指定权限**页面上，选择 **JSON** 编辑器。

1. 将以下模板复制并粘贴到 JSON 编辑器中，用数据库密钥和 KMS 密钥的 ARN 替换占位符。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Ec2Permission",
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeNetworkInterfaces",
                   "ec2:CreateNetworkInterface",
                   "ec2:DeleteNetworkInterface",
                   "ec2:CreateNetworkInterfacePermission",
                   "ec2:DeleteNetworkInterfacePermission",
                   "ec2:DescribeNetworkInterfacePermissions",
                   "ec2:ModifyNetworkInterfaceAttribute",
                   "ec2:DescribeNetworkInterfaceAttribute",
                   "ec2:DescribeAvailabilityZones",
                   "ec2:DescribeRegions",
                   "ec2:DescribeVpcs",
                   "ec2:DescribeSubnets",
                   "ec2:DescribeSecurityGroups",
                   "ec2:DescribeNetworkAcls"
               ],
               "Resource": "*"
           },
           {
               "Sid": "SecretsManagerPermissions",
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue",
                   "secretsmanager:DescribeSecret"
               ],
               "Resource": [
                   "arn:aws:secretsmanager:us-east-1:123456789012:secret:source_DB_secret-ABC123",
                   "arn:aws:secretsmanager:us-east-1:123456789012:secret:destination_DB_secret-456DEF"
               ]
           },        {
               "Sid": "KmsPermissions",
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:DescribeKey",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/aa11bb22-####-####-####-fedcba123456"
           },
           {
               "Sid": "RdsPermissions",
               "Effect": "Allow",
               "Action": [
                   "rds:DescribeDBClusters",
                   "rds:DescribeDBInstances"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 检查是否有错并纠正错误。

1. 选择**下一步**。

1. 在**检查并创建**页面上，输入**策略名称**，例如 **data\$1loading\$1policy**，然后选择**创建策略**。