Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

为 Amazon RDS 使用基于身份的策略 (IAM 策略)

本主题提供了基于身份的策略的示例,在这些策略中,账户管理员可以向 IAM 身份 (即:用户、组和角色) 附加权限策略。

重要

我们建议您首先阅读以下介绍性主题,这些主题讲解了管理 Amazon RDS 资源访问的基本概念和选项。有关更多信息,请参阅 管理您的 Amazon RDS 资源的访问权限概述

本主题的各个部分涵盖以下内容:

以下是 IAM 策略的示例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDBInstanceOnly", "Effect": "Allow", "Action": [ "rds:CreateDBInstance" ], "Resource": [ "arn:aws:rds:*:123456789012:db:test*", "arn:aws:rds:*:123456789012:og:default*", "arn:aws:rds:*:123456789012:pg:default*", "arn:aws:rds:*:123456789012:subgrp:default" ], "Condition": { "StringEquals": { "rds:DatabaseEngine": "mysql", "rds:DatabaseClass": "db.t2.micro" } } } ] }

此策略包含一个为 IAM 用户指定以下权限的语句:

  • 此策略允许 IAM 用户使用 CreateDBInstance API 操作创建数据库实例 (这还适用于 create-db-instance AWS CLI 命令和 AWS 管理控制台)。

  • Resource 元素指定用户可以执行操作的资源。使用 Amazon 资源名称 (ARN) 指定资源。此 ARN 包括资源所属的服务的名称 (rds)、AWS 区域 (在此示例中,* 指示任何区域)、用户账号 (在此示例中,123456789012 为用户 ID) 以及资源的类型。有关创建 ARN 的更多信息,请参阅在 Amazon RDS 中使用 Amazon 资源名称 (ARN)

    此示例中的 Resource 元素为用户指定有关资源的以下策略限制:

    • 新数据库实例的数据库实例标识符必须以 test 开头 (例如,testCustomerData1test-region2-data)。

    • 新数据库实例的选项组必须以 default 开头。

    • 新数据库实例的数据库参数组必须以 default 开头。

    • 新数据库实例的子网组必须是 default 子网组。

  • Condition 元素指定数据库引擎必须是 MySQL 并且数据库实例类必须是 db.t2.microCondition 元素指定策略生效的条件。您可以通过使用 Condition 元素添加其他权限或限制。有关指定条件的更多信息,请参阅使用 IAM 策略条件实现精细访问控制

该策略不指定 Principal 元素,因为在基于身份的策略中,您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色附加权限策略后,该角色的信任策略中标识的委托人将获取权限。

有关显示所有 Amazon RDS API 操作及其适用资源的表,请参阅 Amazon RDS API 权限:操作、资源和条件参考

使用 Amazon RDS 控制台所需要的权限

对于要使用 Amazon RDS 控制台的用户,用户必须拥有一组最低权限。这些权限允许用户描述其 AWS 账户的 Amazon RDS 资源并提供其他相关信息 (包括 Amazon EC2 安全和网络信息)。

如果创建比必需的最低权限更为严格的 IAM 策略,对于附加了该 IAM 策略的用户,控制台将无法按预期正常运行。为确保这些用户仍可使用 Amazon RDS 控制台,同时向用户附加 AmazonRDSReadOnlyAccess 托管策略,请参阅 适用于 Amazon RDS 的 AWS 托管 (预定义) 策略

对于只需要调用 AWS CLI 或 Amazon RDS API 的用户,您无需为其提供最低控制台权限。

适用于 Amazon RDS 的 AWS 托管 (预定义) 策略

AWS 通过提供由 AWS 创建和管理的独立 IAM 策略来解决很多常用案例。托管策略可授予常用案例的必要权限,因此,您可以免去调查都需要哪些权限的工作。有关更多信息,请参阅 IAM 用户指南 中的 AWS 托管策略

以下 AWS 托管策略 (您可以将它们附加到自己账户中的用户) 是特定于 Amazon RDS 的:

  • AmazonRDSReadOnlyAccess - 授予对 AWS 根账户的所有 Amazon RDS 资源的只读访问权。

  • AmazonRDSFullAccess - 授予对 AWS 根账户的所有 Amazon RDS 资源的完全访问权。

您还可创建自定义 IAM 策略来允许用户访问必需的 Amazon RDS API 操作和资源。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。

客户托管策略示例

本节的用户策略示例介绍如何授予各 Amazon RDS 操作的权限。当您使用 RDS API 操作、AWS 开发工具包或 AWS CLI 时,可以使用这些策略。当您使用控制台时,您需要授予特定于控制台的其他权限,使用 Amazon RDS 控制台所需要的权限中对此进行了讨论。

注意

所有示例都使用美国西部 (俄勒冈) 区域 (us-west-2) 并且包含虚构的账户 ID。

示例 1:允许用户对任何 RDS 资源执行任何 Describe 操作

以下权限策略对用户授予权限以运行以 Describe 开头的所有操作。这些操作显示有关 RDS 资源 (如数据库实例) 的信息。Resource 元素中的通配符 (*) 表示可对账户拥有的所有 Amazon RDS 资源执行操作。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowRDSDescribe", "Effect":"Allow", "Action":"rds:Describe*", "Resource":"*" } ] }

示例 2:允许用户创建使用指定数据库参数和安全组的数据库实例

以下权限策略授予权限以允许用户仅创建必须使用 mysql-production 数据库参数组和 db-production 数据库安全组的数据库实例。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowMySQLProductionCreate", "Effect":"Allow", "Action":"rds:CreateDBInstance", "Resource":[ "arn:aws-cn:rds:us-west-2:123456789012:pg:mysql-production", "arn:aws-cn:rds:us-west-2:123456789012:secgrp:db-production" ] } ] }

示例 3:防止用户删除数据库实例

以下权限策略授予权限以防止用户删除特定数据库实例。例如,您可能想禁止任何非管理员用户删除您的生产实例。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyDelete1", "Effect":"Deny", "Action":"rds:DeleteDBInstance", "Resource":"arn:aws-cn:rds:us-west-2:123456789012:db:my-mysql-instance" } ] }