手动设置数据库身份验证和资源访问权限
手动设置数据库身份验证和资源访问权限的流程包括以下步骤:
此步骤为可选项,执行的任务与 使用脚本设置数据库身份验证和资源访问权限 中相同。建议使用脚本。
创建客户托管的 Amazon KMS key
按照创建对称加密密钥中的过程创建客户托管的 KMS 密钥。如果满足这些要求,您也可以使用现有密钥。
创建客户托管的 KMS 密钥
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon KMS 控制台:https://console.aws.amazon.com/kms
。 -
导航到客户托管的密钥页面。
-
选择创建密钥。
-
在配置密钥页面上:
-
对于密钥类型,选择对称。
-
对于密钥用途,选择加密和解密。
-
选择下一步。
-
-
在添加标签页面上,输入别名,例如
limitless
,然后选择下一步。 -
在定义密钥管理员权限页面上,确保选中允许密钥管理员删除此密钥复选框,然后选择下一步。
-
在定义密钥使用权限页面上,选择下一步。
-
在检查页面上,选择完成。
您可以稍后更新密钥策略。
记录要在 添加 IAM 角色权限策略 中使用的 KMS 密钥的 Amazon 资源名称(ARN)。
有关使用 Amazon CLI 创建客户托管的 KMS 密钥的信息,请参阅 create-key
创建数据库密钥
要允许数据加载实用程序访问源数据库表和目标数据库表,请在 Amazon Secrets Manager 中创建两个密钥:一个用于源数据库,另一个用于目标数据库。这些密钥存储访问源数据库和目标数据库的用户名和密码。
按照创建 Amazon Secrets Manager 密钥中的过程创建键值对密钥。
创建数据库密钥
通过 https://console.aws.amazon.com/secretsmanager/
打开 Secrets Manager 控制台。 -
选择存储新密钥。
-
在选择密钥类型页面上:
-
对于密钥类型,选择其他密钥类型。
-
对于键/值对,选择纯文本标签。
-
输入以下 JSON 代码,其中
和sourcedbreader
是 创建源数据库凭证 中源数据库用户的凭证。sourcedbpassword
{ "username":"
sourcedbreader
", "password":"sourcedbpassword
" } -
对于加密密钥,选择您在 创建客户托管的 Amazon KMS key 中创建的 KMS 密钥,例如
limitless
。 -
选择下一步。
-
-
在配置密钥页面上,输入密钥名称,例如
source_DB_secret
,然后选择下一步。 -
在配置旋转 - 可选页面上,选择下一步。
-
在检查页面上,选择存储。
-
对目标数据库密钥重复此过程:
-
输入以下 JSON 代码,其中
和destinationdbwriter
是 创建目标数据库凭证 中目标数据库用户的凭证。destinationdbpassword
{ "username":"
destinationdbwriter
", "password":"destinationdbpassword
" } -
输入密钥名称,例如
destination_DB_secret
。
-
记录要在 添加 IAM 角色权限策略 中使用的密钥的 ARN。
创建 IAM 角色
数据加载需要您提供对 Amazon 资源的访问权限。要提供访问权限,您可以按照创建角色,为 IAM 用户授权中的流程创建 aurora-data-loader
IAM 角色。
创建 IAM 角色
登录 Amazon Web Services Management Console,然后打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
导航到角色页面。
-
选择创建角色。
-
在选择可信实体页面:
-
对于可信实体类型,选择自定义信任策略。
-
为自定义信任策略输入以下 JSON 代码:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
选择下一步。
-
-
在添加权限页面上,选择下一步。
-
在名称、检查和创建页面:
-
对于角色名称,输入
aurora-data-loader
或您喜欢的其他名称。 -
选择添加标签,然后输入以下标签:
-
键:
assumer
-
值:
aurora_limitless_table_data_load
重要
Aurora PostgreSQL Limitless Database 只能担任具有此标签的 IAM 角色。
-
-
选择创建角色。
-
更新客户托管的 Amazon KMS key
按照更改密钥策略中的过程将 IAM 角色 aurora-data-loader
添加到默认密钥策略。
将 IAM 角色添加到密钥策略
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon KMS 控制台:https://console.aws.amazon.com/kms
。 -
导航到客户托管的密钥页面。
-
选择您在 创建客户托管的 Amazon KMS key 中创建的 KMS 密钥,例如
limitless
。 -
在密钥策略选项卡,对于密钥用户,选择添加。
-
在添加密钥用户窗口,选择您在 创建 IAM 角色 中创建的 IAM 角色名称,例如 aurora-data-loader。
-
选择添加。
添加 IAM 角色权限策略
您必须将权限策略添加到您创建的 IAM 角色。这将允许 Aurora PostgreSQL Limitless Database 数据加载实用程序访问相关 Amazon 资源,以建立网络连接并检索源和目标数据库凭证密钥。
有关更多信息,请参阅修改角色。
添加权限策略
登录 Amazon Web Services Management Console,然后打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
导航到角色页面。
-
选择您在 创建 IAM 角色 中创建的 IAM 角色,例如 aurora-data-loader。
-
在权限选项卡,对于权限策略,选择添加权限,然后创建内联策略。
-
在指定权限页面上,选择 JSON 编辑器。
-
将以下模板复制并粘贴到 JSON 编辑器中,用数据库密钥和 KMS 密钥的 ARN 替换占位符。
{ "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": "*" } ] } -
检查是否有错并纠正错误。
-
选择下一步。
-
在检查并创建页面上,输入策略名称,例如
data_loading_policy
,然后选择创建策略。