AWS RDS CLI:CreateDBSnapshot 上拒绝访问

AWS RDS CLI:CreateDBSnapshot 上拒绝访问

我想使用AWS RDS 命令行工具my-database使用创建我的数据库的快照create-db-snapshot

我已经创建了特殊的备份角色我是具有允许我描述、复制和创建快照的策略。它看起来像这样(我用 x 替换了敏感 ID):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmtxxxxxxxxxxxxxx",
      "Effect": "Allow",
      "Action": [
        "rds:CopyDBSnapshot",
        "rds:CreateDBSnapshot",
        "rds:DescribeDBSnapshots",
        "rds:DescribeEventCategories",
        "rds:DescribeEvents"
      ],
      "Resource": [
        "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database"
      ]
    }
  ]
}

使用以下配置 CLI 工具后aws configure并输入该用户的密钥我尝试通过执行以下命令来创建快照:

aws rds create-db-snapshot \
    --db-snapshot-identifier "my-database-backup-$(date +%d-%m-%Y-%Hh%Mm)" \
    --db-instance-identifier "my-database"

这会导致出现一条错误消息:

调用 CreateDBSnapshot 操作时发生客户端错误 (AccessDenied):用户:arn:aws:iam::xxxxxxxxxxxxxxx:user/automated-tasks 无权执行:rds:CreateDBSnapshot 资源:arn:aws:rds:eu-west-1:xxxxxxxxxxxxxxx:snapshot:my-database-backup-24-11-2014-11h07m

我认为这很奇怪,因为它说拒绝访问我为参数指定的名称的资源--db-snapshot-identifier,而不是参数--db-instance-identifier

如果我首先拥有足够的权限来创建应用于实例的快照,那么我是否应该固有地拥有该快照的创建权限?

无论如何,我尝试将策略中的资源更改为 RDS 中的所有内容:

"Resource": [
    "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]

我希望这会起作用,因为现在我的角色对我的帐户的 RDS ARN 中的所有内容具有创建快照的权限,但事实并非如此。

有人知道为什么我的命令返回错误吗?

答案1

这确实很奇怪,但看起来CreateDBSnapshot权限也必须分配给目标快照。

此政策有效:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmtxxxxxxxxxxxxxx",
            "Effect": "Allow",
            "Action": [
                "rds:CreateDBSnapshot"
            ],
            "Resource": [
                "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database",
                "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:snapshot:*"
            ]
        }
    ]
}

相关内容