Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

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

重要

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

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

下面介绍权限策略示例。此策略允许用户为您的 AWS 账户创建数据库实例。此策略要求新数据库实例的名称以 test 开头。新数据库实例还必须使用 MySQL 数据库引擎和 db.t2.micro 数据库实例类。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowMySQLTestCreate", "Effect":"Allow", "Action":"rds:CreateDBInstance", "Resource":"arn:aws-cn:rds:us-west-2:123456789012:db:test*", "Condition":{ "StringEquals":{ "rds:DatabaseEngine":"mysql", "rds:DatabaseClass":"db.t2.micro" } } } ] }

此策略包含一个指定下列权限的语句:

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

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

    要指定用户可对哪些资源执行操作或使用哪些资源,请使用 Resource 元素。您应使用 Amazon 资源名称 (ARN) 指定资源,该名称包括资源所属的服务的名称 (rds)、区域 (本例中的 us-west-2) 、账户编号和资源类型 (数据库实例)。有关创建 ARN 的更多信息,请参阅在 Amazon RDS 中使用 Amazon 资源名称 (ARN)

  • 数据库引擎必须是 MySQL,数据库实例类必须是 db.t2.micro

  • 您可以使用 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 SDK 或 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" } ] }