在 Amazon RDS 中创建、修改和删除资源的权限策略 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon RDS 中创建、修改和删除资源的权限策略

以下各节展示了授予和限制资源访问权限的权限策略示例:

允许用户在 Amazon 账户中创建数据库实例

以下是支持 ID 为 123456789012 的账户为您的 Amazon 账户创建数据库实例的示例策略。该策略要求新数据库实例的名称以 test 开头。新数据库实例还必须使用 MySQL 数据库引擎和 db.t2.micro 数据库实例类。此外,新数据库实例必须使用以 default 开头的选项组和数据库参数组,并且它必须使用 default 子网组。

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

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

  • 该策略可让该账户使用 CreateDBInstance API 操作创建数据库实例(这还适用于 create-db-instance Amazon CLI 命令和 Amazon Web Services Management Console)。

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

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

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

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

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

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

  • Condition 元素指定数据库引擎必须是 MySQL 并且数据库实例类必须是 db.t2.microCondition 元素指定策略生效的条件。您可以通过使用 Condition 元素添加其他权限或限制。有关指定条件的更多信息,请参阅Amazon RDS 的策略条件键。此示例指定 rds:DatabaseEnginerds:DatabaseClass 条件。有关 rds:DatabaseEngine 的有效条件值的信息,请参阅 CreateDBInstance 中的 Engine 参数下的列表。有关 rds:DatabaseClass 的有效条件值的信息,请参阅 数据库实例类支持的数据库引擎

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

有关 Amazon RDS 操作的列表,请参阅服务授权参考中的 Amazon RDS 定义的操作

允许用户对任何 RDS 资源执行任何 Describe 操作

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

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

允许用户创建使用指定数据库参数组和子网组的数据库实例

以下权限策略授予权限以允许用户仅创建必须使用 mydbpg 数据库参数组和 mydbsubnetgroup 数据库子网组的数据库实例。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "rds:CreateDBInstance", "Resource": [ "arn:aws:rds:*:*:pg:mydbpg", "arn:aws:rds:*:*:subgrp:mydbsubnetgroup" ] } ] }

授予权限以允许对在特定标签中包含两个不同值的资源执行操作

您可以在基于身份的策略中使用条件,以便基于标签控制对 Amazon RDS 资源的访问。以下策略所授予的权限允许对 stage 标签设置为 developmenttest 的实例执行 CreateDBSnapshot API 操作。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAnySnapshotName", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:snapshot:*" }, { "Sid":"AllowDevTestToCreateSnapshot", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }

以下策略所授予的权限允许对 stage 标签设置为 developmenttest 的实例执行 ModifyDBInstance API 操作。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowChangingParameterOptionSecurityGroups", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource": [ "arn:aws:rds:*:123456789012:pg:*", "arn:aws:rds:*:123456789012:secgrp:*", "arn:aws:rds:*:123456789012:og:*" ] }, { "Sid":"AllowDevTestToModifyInstance", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }

防止用户删除数据库实例

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

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

拒绝对资源的所有访问

您可以明确拒绝对资源的访问。拒绝策略优先于允许策略。以下策略明确拒绝用户管理资源的能力:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "rds:*", "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb" } ] }