【问题标题】:IAM role with rds:CreateDBClusterSnapshot cannot create cluster snapshot具有 rds:CreateDBClusterSnapshot 的 IAM 角色无法创建集群快照
【发布时间】:2017-05-11 10:03:03
【问题描述】:

我想在 EC2 实例上创建一个 Web 界面来“关闭”和“启动”一个 RDS Aurora 集群,因为它每月只使用 2 天。

为此,我有:

  • 创建了一个角色

    “行动”:[ "rds:CreateDBClusterSnapshot", "rds:CreateDBCluster", “rds:删除DBCluster” ], “资源”:[ “arn:aws:rds:us-west-2:123456789:cluster:momtransgrinder-cluster” ]

  • 将角色与实例关联

当我运行以下命令时:

  aws rds create-db-cluster-snapshot --db-cluster-snapshot-identifier testsnap2 --db-cluster-identifier momtransgrinder-cluster

我收到一个错误

  An error occurred (AccessDenied) when calling the CreateDBClusterSnapshot operation: User: arn:aws:sts::123456789:assumed-role/root/i-47717451 is not authorized to perform: rds:CreateDBClusterSnapshot on resource: arn:aws:rds:us-west-2:123456789:cluster-snapshot:testsnap2

但是,当我将角色更改为拥有 rds:* 时,它可以工作。创建集群快照必须有一些隐含的其他权限吗?但是是哪一个?

【问题讨论】:

    标签: amazon-web-services command-line-interface amazon


    【解决方案1】:

    您定义的操作需要与 RDS 集群以及您创建的快照相关联。目前您的 Resource 字段缺少快照术语,这就是您看到错误的原因:

    not authorized .. on resource: arn:aws:rds:us-west-2:123456789:cluster-snapshot:testsnap
    

    所以如果你像下面这样添加集群快照作为资源目标,你应该摆脱这个特定的错误

    "Resource": [ "arn:aws:rds:us-west-2:123456789:cluster:momtransgrinder-cluster", 
                  "arn:aws:rds:us-west-2:123456789:cluster-snapshot:testsnap2" ]
    

    但是,我建议在快照上提供通配符条目,假设您将创建多个快照,其标识符可能仅在运行时才知道。此外,我还成功地在快照上添加了一些其他相关操作。我不确定rds:CreateDBClusterSnapshot 是否足够。总而言之,考虑到您的情况,我会这样做:

      {
          "Action": [
            "rds:CopyDBClusterSnapshot",
            "rds:CopyDBSnapshot",
            "rds:CreateDBClusterSnapshot",
            "rds:CreateDBSnapshot",
            "rds:DeleteDBClusterSnapshot",
            "rds:DeleteDBSnapshot",
            "rds:DescribeDBClusterSnapshotAttributes",
            "rds:DescribeDBClusterSnapshots",
            "rds:DescribeDBSnapshots",
            "rds:DescribeDBSnapshotAttributes",
            "rds:ModifyDBClusterSnapshotAttribute",
            "rds:ModifyDBSnapshot",
            "rds:ModifyDBSnapshotAttribute"
          ],
          "Resource": [
             "arn:aws:rds:us-west-2:123456789:cluster:momtransgrinder-cluster",
             "arn:aws:rds:us-west-2:123456789:cluster-snapshot:*"
          ],
          "Effect": "Allow",
          "Sid": "CreateSnapshot"
      }
    

    【讨论】:

    • 我没有可用的集群来测试这个,但我相信它会对某人有所帮助。感谢您的回答
    【解决方案2】:

    由于您尝试创建的快照是从另一个现有快照中复制的,因此您需要向您的角色添加一个允许此操作的语句,例如:

    {      
         "Action": [
             "rds:CopyDBClusterSnapshot",
             "rds:CopyDBSnapshot"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:rds:us-west-2:123456789:cluster-snapshot:testsnap2"
    }
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2022-07-28
      • 2018-09-21
      • 2018-11-05
      • 2022-01-04
      • 2019-03-17
      • 2019-09-08
      • 2022-06-10
      • 1970-01-01
      • 2010-12-13
      相关资源
      最近更新 更多