Amazon Aurora
Aurora 用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

创建和使用适用于 IAM 数据库访问的 IAM 策略

要允许 IAM 用户或角色连接到数据库集群,您必须创建 IAM 策略。之后,将该策略附加到 IAM 用户或角色。

注意

要了解有关 IAM 策略的更多信息,请参阅 Amazon Aurora 中的 Identity and Access Management

以下示例策略允许 IAM 用户使用 IAM 数据库身份验证连接到数据库集群

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:cluster-ABCDEFGHIJKL01234/db_user" ] } ] }

重要

IAM 管理员用户即使在 IAM 策略中没有明确权限,也可以访问数据库集群创建 IAM 用户中的示例创建 IAM 管理员用户。如果您希望限制管理员访问数据库集群,您可以创建具有合适的较低权限的 IAM 角色,并将其分配给管理员。

注意

请不要将 rds-db: 前缀与以 rds: 开头的其他 RDS API 操作前缀混淆。仅在 IAM 数据库身份验证使用 rds-db: 前缀和 rds-db:connect 操作。它们在任何其他上下文中无效。

当前,IAM 控制台会对使用 rds-db:connect 操作的策略显示错误。您可以忽略该错误。

示例策略包含带以下元素的单个语句:

  • Effect – 指定 Allow 以授予数据库集群的访问权限。如果您没有显式允许访问,则默认情况下将拒绝访问。

  • Action – 指定 rds-db:connect 以允许连接到数据库集群

  • Resource – 指定 Amazon 资源名称 (ARN) 以描述一个数据库集群中的一个数据库账户。ARN 格式如下所示。

    arn:aws:rds-db:region:account-id:dbuser:DbClusterResourceId/db-user-name

    在此格式中,替换以下内容:

    • region 是数据库集群所在的 AWS 区域。在示例策略中,AWS 区域为 us-east-2

    • account-id 是数据库集群的 AWS 账号。在示例策略中,账号为 1234567890

    • DbClusterResourceId 是数据库集群的标识符。此标识符对 AWS 区域是唯一的,并且绝不会更改。在示例策略中,标识符为 cluster-ABCDEFGHIJKL01234

      要在适用于 Amazon Aurora 的 AWS 管理控制台中查找数据库集群资源 ID,请选择数据库集群以查看其详细信息。然后,选择配置选项卡。Resource ID (资源 ID) 将显示在 Configuration (配置) 部分中。

      或者,您可以使用 AWS CLI 命令列出当前 AWS 区域中所有数据库集群的标识符和资源 ID,如下所示。

      aws rds describe-db-clusters --query "DBClusters[*].[DBClusterIdentifier,DbClusterResourceId]"
    • db-user-name 是与 IAM 身份验证关联的数据库账户的名称。在示例策略中,数据库账户为 db_user

您可以构造其他 ARN 以支持多种访问模式。以下策略允许访问一个数据库集群中的两个不同的数据库账户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/jane_doe", "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/mary_roe" ] } ] }

以下策略使用“*”字符匹配特定 AWS 账户和 AWS 区域的所有数据库集群和数据库账户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:*/*" ] } ] }

以下策略匹配特定 AWS 账户和 AWS 区域的所有数据库集群。不过,该策略仅允许访问具有 jane_doe 数据库账户的数据库集群

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:*/jane_doe" ] } ] }

IAM 用户或角色只能访问数据库用户有权访问的那些数据库。例如,假设数据库集群具有一个名为 dev 的数据库,以及另一个名为 test 的数据库。如果数据库用户 jane_doe 只能访问 dev,则与 jane_doe 用户一起访问数据库集群的任何 IAM 用户或角色只能访问 dev。此访问限制还适用于其他数据库对象 (如表、视图等)。

将 IAM 策略附加到 IAM 用户或角色

在创建允许数据库身份验证的 IAM 策略之后,您需要将该策略附加到 IAM 用户或角色。有关此主题的教程,请参阅《IAM 用户指南》 中的创建和附加您的第一个客户托管策略

在演练此教程时,您可以使用此部分中显示的策略示例之一作为起点并根据您的需求进行定制。在教程结束时,您将有一个 IAM 用户,该用户具有可利用 rds-db:connect 操作的附加策略。

注意

您可以映射多个 IAM 用户或角色到同一数据库用户账户。例如,假设您的 IAM 策略指定了以下资源 ARN。

arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe

如果将该策略附加到 IAM 用户 JaneBobDiego,则其中的每个用户可以使用 jane_doe 数据库账户连接到指定的数据库集群