设置 RDS 代理的 AWS Identity and Access Management(IAM)策略 - Amazon Relational Database Service

设置 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 策略
  1. 登录到 IAM 控制台。按照创建 IAM 角色中所述的创建角色过程,选择创建角色以将权限委派给 AWS 服务

    对于可信实体类型,选择 AWS 服务。在使用案例下,从其他 AWS 服务的使用案例下拉列表中选择 RDS。选择 RDS – 将角色添加到数据库

  2. 对于新角色,请执行添加内联策略步骤。使用与编辑 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" } } } ] }
  3. 编辑此 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-name my_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" } } } ] }