我终于找到了DeleteDBSnapshot
权限,但后来才意识到我真正想要做的是将操作限制为特定的数据库实例标识符,由于AWS命令的实际工作原因,我现在认为这是不可行的。因此,你必须创建一个看起来像这样的策略:
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"rds:AddTagsToResource",
"rds:DeleteDBSnapshot"
],
"Condition": {
"streq": {
"rds:snapshot-tag/MY_TAG_KEY": [
"MY_TAG_VALUE"
]
}
},
"Resource": "arn:aws:rds:us-west-2::snapshot:mydb-snapshot-*"
},
{
"Effect": "Allow",
"Action": [
"rds:ListTagsForResource",
"rds:CreateDBSnapshot"
],
"Resource": "arn:aws:rds:us-west-2:*"
},
{
"Effect": "Allow",
"Action": [
"rds:DescribeDBSnapshots"
],
"Resource": "*"
}
]
}
的几个注意事项/警告:
- 对于与快照大多数命令,在 政策
Resource
属性是针对检查DBSnapshotIdentifier
,但对于CreateDBSnapshot
它似乎指的是DBInstanceIdentifier
(RDS数据库名称)。
DescribeDBSnapshots
始终在全球范围内运作,所以它也必须在所有资源值上被授予 。你甚至无法按地区限制这一点。
ListTagsForResource
如果您试图将其限制为 为完整的快照资源路径,则会引发权限错误。
- 你不需要它,但我已经包括一个
Condition
块的例子 谁希望进一步(或替代)限制标签。与 Resource
,ListTagsForResource
和CreateDBSnapshot
限制试图限制它们到特定标记不起作用。
这解决了我的主要担忧,即如果攻击者违反此策略的关键限制 - 攻击者只能删除我的滚动快照,而不是任何手动创建的快照或数据库实例本身。不幸的是,它仍然允许在特定区域创建无限数量的快照,但似乎没有任何限制CreateDBSnapshot
的方式。
'DescribeDBSnapshots总是在全局运行,所以它也必须被授予所有资源值。你甚至不能按地区限制这个。“你是男人中的上帝。 – rodnaph 2016-08-12 13:03:59