Amazon web services 用于RDS快照管理的AWS/IAM策略?
我正在编写一个脚本,每天自动拍摄一个RDS快照,并根据适当的模式为其命名(例如mydb-snapshot-20141031)。脚本本身非常简单,但我在尝试锁定时遇到了问题,因此如果与脚本相关联的密钥对受到破坏,攻击者只能损坏我的快照,而不能损坏数据库本身 搜索网页和查看手册对我没有多大帮助(至少我无法复制),所以我希望这里的人以前解决过这个问题(或者比我更了解手册)。以下是我想要的:Amazon web services 用于RDS快照管理的AWS/IAM策略?,amazon-web-services,amazon-rds,amazon-iam,Amazon Web Services,Amazon Rds,Amazon Iam,我正在编写一个脚本,每天自动拍摄一个RDS快照,并根据适当的模式为其命名(例如mydb-snapshot-20141031)。脚本本身非常简单,但我在尝试锁定时遇到了问题,因此如果与脚本相关联的密钥对受到破坏,攻击者只能损坏我的快照,而不能损坏数据库本身 搜索网页和查看手册对我没有多大帮助(至少我无法复制),所以我希望这里的人以前解决过这个问题(或者比我更了解手册)。以下是我想要的: 创建名为“mydb”的数据库实例快照的权限 写入与mydb快照匹配的快照的权限-* 删除与mydb快照匹配的快
- 创建名为“mydb”的数据库实例快照的权限
- 写入与mydb快照匹配的快照的权限-*
- 删除与mydb快照匹配的快照的权限-*
- 我不希望此用户能够与RDS之外的AWS的任何部分进行交互
- 我不希望该用户能够实际更改我的任何RDS实例,包括“mydb”
- 我不希望此用户能够更改与mydb快照不匹配的快照-*
也许这无法做到(我找不到rds:CreateDBSnapshot策略的“删除”配套文档)。如果实际包含了使用它所需的权限列表,那就太好了。我最终找到了
deletebsnapshot
权限,但后来意识到我真正想做的是将操作限制到特定的DB实例标识符,我现在确信这是不可能的,因为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": "*"
}
]
}
一些注意事项/注意事项:
- 对于大多数与快照相关的命令
策略是针对
的检查,但针对DBSnapshotIdentifier
它似乎是指CreateDBSnapshot
(RDS数据库名称)DBInstanceIdentifier
始终全局运行,因此也必须授予它 关于所有资源值。你甚至不能按地区来限制DescribeDBSnapshots
如果试图限制权限,则会引发权限错误 到完整快照资源路径ListTagsForResource
- 您不需要它,但我已经为这些设置了一个示例
块 希望通过标签进一步(或交替)限制的人员。就像通过限制条件
,Resource
和listtagsforesource
如果您 尝试将它们限制为特定的标记CreateDBSnapshot
这解决了我的主要问题,即如果附加到此策略的密钥被泄露,则限制损害——攻击者只能删除我的滚动快照,而不能删除任何手动创建的快照或数据库实例本身。不幸的是,它仍然允许在特定区域中创建无限数量的快照,但似乎根本没有任何方法来限制
CreateDBSnapshot
DescribeDBSnapshots始终全局运行,因此还必须对所有资源值授予它。你甚至不能按地域限制这一点。
你是人类中的神。