为 RDS 代理配置 IAM 身份验证
要在 Amazon RDS 中为 RDS 代理设置 Amazon Identity and Access Management(IAM)身份验证,请创建并配置用于授予必要权限的 IAM 策略。RDS 代理使用 Amazon Secrets Manager 安全地管理数据库凭证,这使应用程序无需直接处理凭证即可通过代理进行身份验证。
本主题提供了为 RDS 代理配置 IAM 身份验证的步骤,包括创建所需的 IAM 策略并将其附加到 IAM 角色。
提示
仅当您想创建自己的 IAM 角色时,才需要执行此过程。否则,RDS 可以在您设置代理时自动创建所需的角色,因此您可以跳过这些步骤。
先决条件
在为 RDS 代理设置 IAM 身份验证之前,请确保您具有以下各项:
-
Amazon Secrets Manager:至少一个包含数据库凭证的存储密钥。有关创建密钥的说明,请参阅在 Amazon Secrets Manager 中设置 RDS 代理的数据库凭证。
-
IAM 权限:具有在 Amazon Secrets Manager 中创建和管理 IAM 策略、角色和密钥的权限的 IAM 角色或用户。
创建用于访问 Secrets Manager 的 IAM 策略
要支持 RDS 代理从 Secrets Manager 检索数据库凭证,请创建一个 IAM 角色,并使用授予必要权限的策略。
创建用于访问您的密钥以便与代理一起使用的角色
登录 Amazon Web Services Management Console,然后打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
为该角色创建权限策略。有关一般步骤,请参阅创建 IAM 策略(控制台)。
将此策略粘贴到 JSON 编辑器中,并进行以下更改:
-
替换您自己的账户 ID。
-
将
us-east-2
替换为代理所在的区域。 -
将密钥名称替换为您创建的名称。有关更多信息,请参阅 Specifying KMS keys in IAM policy statements。
-
将 KMS 密钥 ID 替换为您用于加密 Secrets Manager 密钥(默认密钥或您自己的密钥)的密钥 ID。
{ "Version": "2012-10-17", "Statement": [ { "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
" ] }, { "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" } } } ] } -
-
创建角色并向其附加权限策略。有关一般步骤,请参阅创建向 Amazon 服务委派权限的角色。
对于可信实体类型,选择 Amazon 服务。在用例下,选择 RDS,然后为用例选择 RDS - 向数据库添加角色。
-
对于权限策略,选择您创建的策略。
-
对于选择可信实体,为该角色输入以下信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
要使用 Amazon CLI 创建角色,请发送以下请求:
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"}]}'
然后,将策略附加到该角色:
aws iam put-role-policy \ --role-name
my_role_name
\ --policy-namesecret_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" } } } ] }'
配置了 IAM 角色和权限后,您现在可以创建代理并将其与该角色关联。这可让代理安全地从 Amazon Secrets Manager 中检索数据库凭证,并为您的应用程序启用 IAM 身份验证。有关说明,请参阅 为 Amazon Aurora 创建代理。