AWS RDS CLI:CreateDBSnapshot 上的访问被拒绝

Bas*_*ers 2 snapshot amazon-web-services amazon-rds amazon-iam aws-cli

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

我在IAM中创建了一个特殊的备份角色,其策略允许我描述、复制和创建快照。它看起来像这样(我用 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"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

配置 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"
Run Code Online (Sandbox Code Playgroud)

这会导致一条错误消息:

调用 CreateDBSnapshot 操作时发生客户端错误 (AccessDenied):用户:arn:aws:iam::xxxxxxxxxxxxxx:user/automated-tasks 无权对资源执行:rds:CreateDBSnapshot:arn:aws:rds:eu-west -1:xxxxxxxxxxxxxx:快照:我的数据库备份-24-11-2014-11h07m

我认为这很奇怪,因为它表示拒绝访问具有我为参数指定的名称的资源(--db-snapshot-identifier与参数相反)--db-instance-identifier

如果我有足够的权限来创建应用于实例的快照,那么我本身不应该具有该快照的创建权限吗?

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

"Resource": [
    "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]
Run Code Online (Sandbox Code Playgroud)

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

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

Joh*_*ein 5

这确实很奇怪,但似乎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:*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)