Amazon web services 用于RDS快照管理的AWS/IAM策略?

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快照匹配的快

我正在编写一个脚本,每天自动拍摄一个RDS快照,并根据适当的模式为其命名(例如mydb-snapshot-20141031)。脚本本身非常简单,但我在尝试锁定时遇到了问题,因此如果与脚本相关联的密钥对受到破坏,攻击者只能损坏我的快照,而不能损坏数据库本身

搜索网页和查看手册对我没有多大帮助(至少我无法复制),所以我希望这里的人以前解决过这个问题(或者比我更了解手册)。以下是我想要的:

  • 创建名为“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
    它似乎是指
    DBInstanceIdentifier
    (RDS数据库名称)
  • DescribeDBSnapshots
    始终全局运行,因此也必须授予它 关于所有资源值。你甚至不能按地区来限制
  • ListTagsForResource
    如果试图限制权限,则会引发权限错误 到完整快照资源路径
  • 您不需要它,但我已经为这些设置了一个示例
    条件
    块 希望通过标签进一步(或交替)限制的人员。就像通过限制
    Resource
    listtagsforesource
    CreateDBSnapshot
    如果您 尝试将它们限制为特定的标记

这解决了我的主要问题,即如果附加到此策略的密钥被泄露,则限制损害——攻击者只能删除我的滚动快照,而不能删除任何手动创建的快照或数据库实例本身。不幸的是,它仍然允许在特定区域中创建无限数量的快照,但似乎根本没有任何方法来限制
CreateDBSnapshot

DescribeDBSnapshots始终全局运行,因此还必须对所有资源值授予它。你甚至不能按地域限制这一点。
你是人类中的神。