设置 RDS 代理的 AWS Identity and Access Management(IAM)策略
在 Secrets Manager 中创建密钥后,请创建一个可以访问这些密钥的 IAM 策略。有关使用 IAM 的一般信息,请参阅Amazon RDS 的 Identity and Access Management。
提示
如果您使用 IAM 控制台,则应用下面的过程。如果您使用 AWS Management Console for RDS,RDS 可以自动为您创建 IAM 策略。在这种情况下,您可以跳过下面的过程。
创建用于访问您的 Secrets Manager 密钥以便与代理一起使用的 IAM 策略
-
登录到 IAM 控制台。按照创建 IAM 角色中所述的创建角色过程,选择创建角色以将权限委派给 AWS 服务。
对于可信实体类型,选择 AWS 服务。在使用案例下,从其他 AWS 服务的使用案例下拉列表中选择 RDS。选择 RDS – 将角色添加到数据库。
-
对于新角色,请执行添加内联策略步骤。使用与编辑 IAM 策略中相同的一般过程。将下面的 JSON 粘贴到 JSON 文本框中。替换您自己的账户 ID。将您的 AWS 区域替换为
us-east-2
。用 Amazon 资源名称(ARN)替换您创建的密钥,请参阅在 IAM 策略语句中指定 KMS 密钥。对于kms:Decrypt
操作,请替换为默认 AWS KMS key 的 ARN 或您自己的 KMS 密钥。具体使用哪一项取决于您使用哪一项来加密 Secrets Manager 密钥。{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:
account_id
:secret:secret_name_1
", "arn:aws:secretsmanager:us-east-2:account_id
:secret:secret_name_2
" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id
:key/key_id
", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] } -
编辑此 IAM 角色的信任策略。将下面的 JSON 粘贴到 JSON 文本框中。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
以下命令通过 AWS CLI 执行相同的操作。
PREFIX=
my_identifier
USER_ARN=$(aws sts get-caller-identity --query "Arn" --output text) aws iam create-role --role-namemy_role_name
\ --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}' ROLE_ARN=arn:aws:iam::account_id
:role/my_role_name
aws iam put-role-policy --role-name my_role_name \ --policy-name $PREFIX-secret-reader-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id
:secret:secret_name_1
", "arn:aws:secretsmanager:us-east-2:account_id
:secret:secret_name_2
" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id
:key/key_id
", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }