示例策略:使用条件键
以下示例说明了如何在 Amazon RDS IAM 权限策略中使用条件键。
示例 1:授予权限以创建使用特定数据库引擎的非多可用区数据库实例
以下策略使用 RDS 条件键,并仅允许用户创建采用 MySQL 数据库引擎且不使用多可用区的数据库实例。Condition
元素指示数据库引擎须为 MySQL 的要求。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowMySQLCreate",
"Effect": "Allow",
"Action": "rds:CreateDBInstance",
"Resource": "*",
"Condition": {
"StringEquals": {
"rds:DatabaseEngine": "mysql"
},
"Bool": {
"rds:MultiAz": false
}
}
}
]
}
示例 2:明确拒绝权限,以禁止创建特定数据库实例类的数据库实例和使用预置 IOPS 的数据库实例
以下策略显式拒绝创建使用数据库实例类 r3.8xlarge
和 m4.10xlarge
(最大、最贵的数据库实例类)的数据库实例的权限。此策略还禁止用户创建使用预置的 IOPS (这会带来额外成本) 的数据库实例。
显式拒绝权限会取代授予的任何其他权限。这可确保用户身份不会无意中获得您绝不希望授予的权限。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyLargeCreate",
"Effect": "Deny",
"Action": "rds:CreateDBInstance",
"Resource": "*",
"Condition": {
"StringEquals": {
"rds:DatabaseClass": [
"db.r3.8xlarge",
"db.m4.10xlarge"
]
}
}
},
{
"Sid": "DenyPIOPSCreate",
"Effect": "Deny",
"Action": "rds:CreateDBInstance",
"Resource": "*",
"Condition": {
"NumericNotEquals": {
"rds:Piops": "0"
}
}
}
]
}
示例 3:限制可用于对资源进行标记的一组标签键和值的值
下面的策略使用 RDS 条件键,并允许将键为 stage
的标签添加到值为 test
、qa
和 production
的资源。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"rds:AddTagsToResource",
"rds:RemoveTagsFromResource"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:req-tag/stage": [
"test",
"qa",
"production"
]
}
}
}
]
}