【问题标题】:admin should delete any stack and user should delete only his own stacks管理员应该删除任何堆栈,用户应该只删除他自己的堆栈
【发布时间】:2020-01-04 06:13:11
【问题描述】:

UserA 是管理员。 UserB 和 UserC 是用户。

UserA 创建 StackA,UserB 创建 StackB,UserC 创建 StackC。

UserA 可以删除任何堆栈。

UserB 可以删除 StackB 但无法删除 StackA 和 StackC。

UserC 可以删除 StackC,但无法删除 StackA 和 StackB。

如何在拥有 500 个用户的 AWS 账户中实现这些权限?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-iam


    【解决方案1】:

    主要问题是识别允许用户删除哪些堆栈。

    没有“用户自己的堆栈”的概念。 AWS 中的所有资源都由 AWS 账户“拥有”,而不是特定用户。只要用户有权在 AWS 中创建资源,他们就可以创建资源,但该资源属于 AWS 账户

    实现您的目标的一种潜在方法可能是修改 IAM 权限,以便指定用户只能创建或删除堆栈名称以其用户名开头的堆栈。这可以使用IAM Policy Elements: Variables and Tags 将用户名插入到策略中。

    更新:这是一个允许用户创建/删除堆栈的政策,但仅限于堆栈名称以其用户名开头的位置。这意味着他们可以在不影响其他用户的情况下使用 CloudFormation。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "cloudformation:*",
                "Resource": "arn:aws:cloudformation:*:*:stack/${aws:username}-*/*"
            }
        ]
    }
    

    例如,如果您的用户名是 foo,那么它将允许名称为 foo-bar 的堆栈。

    【讨论】:

    • IAM 策略无权访问 CloudFormation StackName。然后,我认为最好的选择是添加一个堆栈级标签,它会带来另一个问题。无法强制创建标签,也无法将其值设置为 {aws:username}。
    • 我已使用示例策略更新了我的答案。我测试了它,它可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多