ex-*_*erd 6 amazon-web-services amazon-rds amazon-iam
我正在编写一个脚本,每天自动获取一个RDS快照,并根据适当的模式为其命名(例如mydb-snapshot-20141031).脚本本身非常简单,但是我遇到了试图锁定问题的问题,这样如果与脚本关联的密钥对遭到破坏,攻击者只会损坏我的快照,而不会损坏数据库本身.
搜索网络并查看RDS IAM政策指南并没有太多帮助我(至少不是我能够复制)所以我希望有人在此之前解决了这个问题(或者可以理解该手册)比我更好.这就是我想要的:
这是我想要防范的:
也许这不可能完成(我找不到rds的"删除"伴随文档:CreateDBSnapshot策略).如果DeleteDBSnapshot文档实际包含使用它所需的权限列表,那将是很好的.
我最终找到了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": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
一些注意事项/警告:
Resource
策略的属性是检查DBSnapshotIdentifier
,但是CreateDBSnapshot
它似乎引用DBInstanceIdentifier
(RDS数据库名称).DescribeDBSnapshots
始终在全球范围内运营,因此必须在所有资源价值上授予它.你甚至不能按地区限制这个.ListTagsForResource
如果您尝试将其限制为完整快照资源路径,则会引发权限错误.Condition
为那些希望通过标签进一步(或交替)限制的人提供了一个示例块.至于限制由
Resource
,ListTagsForResource
并且CreateDBSnapshot
不,如果你试图把它们限制在特定标签的工作.如果附加到此策略的密钥遭到破坏,这解决了我主要关注的限制 - 攻击者只能删除我的滚动快照,而不能删除任何手动创建的快照或数据库实例本身.不幸的是,它仍然允许在特定区域中创建无限数量的快照,但似乎没有任何方式可以限制CreateDBSnapshot
.
归档时间: |
|
查看次数: |
2100 次 |
最近记录: |