为 RDS 代理配置 IAM 身份验证 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 RDS 代理配置 IAM 身份验证

要在 Amazon RDS 中为 RDS 代理设置 Amazon Identity and Access Management(IAM)身份验证,请创建并配置用于授予必要权限的 IAM 策略。RDS 代理使用 Amazon Secrets Manager 安全地管理数据库凭证,这使应用程序无需直接处理凭证即可通过代理进行身份验证。

本主题提供了为 RDS 代理配置 IAM 身份验证的步骤,包括创建所需的 IAM 策略并将其附加到 IAM 角色。

提示

仅当您想创建自己的 IAM 角色时,才需要执行此过程。否则,RDS 可以在您设置代理时自动创建所需的角色,因此您可以跳过这些步骤。

先决条件

在为 RDS 代理设置 IAM 身份验证之前,请确保您具有以下各项:

创建用于访问 Secrets Manager 的 IAM 策略

要支持 RDS 代理从 Secrets Manager 检索数据库凭证,请创建一个 IAM 角色,并使用授予必要权限的策略。

创建用于访问您的密钥以便与代理一起使用的角色
  1. 登录 Amazon Web Services Management Console,然后打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 为该角色创建权限策略。有关一般步骤,请参阅创建 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" } } } ] }
  3. 创建角色并向其附加权限策略。有关一般步骤,请参阅创建向 Amazon 服务委派权限的角色

    对于可信实体类型,选择 Amazon 服务。在用例下,选择 RDS,然后为用例选择 RDS - 向数据库添加角色

  4. 对于权限策略,选择您创建的策略。

  5. 对于选择可信实体,为该角色输入以下信任策略:

    { "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-name 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" } } } ] }'

配置了 IAM 角色和权限后,您现在可以创建代理并将其与该角色关联。这可让代理安全地从 Amazon Secrets Manager 中检索数据库凭证,并为您的应用程序启用 IAM 身份验证。有关说明,请参阅 为 Amazon RDS 创建代理