首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS IAM策略:只标记未标记的资源

AWS IAM策略:只标记未标记的资源
EN

Stack Overflow用户
提问于 2015-09-03 11:48:56
回答 1查看 1.4K关注 0票数 2

我们有一个AWS用户,他应该能够Create不同的资源,如InstancesVolumesSecurityGroups,但不能修改不属于其项目的资源。

为此,我们允许创建资源,并让用户CreateTags使用Project标记和<user's team name here>值的资源。他不应该能够标记已经标记的资源,因此,不能标记其他团队的资源。(每个资源在这里都有正确的标记)。

我制定了一项政策,并声明:

代码语言:javascript
复制
[...]
    {
        "Effect": "Allow",
        "Action": "ec2:CreateTags",
        "Resource": "*",
        "Condition": {
            "Null": {
                "ec2:ResourceTag/Project": "true"
            }
        }
    }
[...]

如果我使用AWS的策略模拟器,允许在没有Project标记的资源上调用CreateTags。如果我通过设置一个Project标记来模拟它,这个操作就是拒绝,就像预期的那样。

不巧的是,如果我在此策略中使用来自AWS的相同操作,那么每次CreateTags都是允许的。即使已经设置了标记,即使在外部实例上,用户也不应该能够修改:

作为具有上述策略的用户

代码语言:javascript
复制
aws ec2 create-security-group --group-name "test-sg" --description "test" # creation of a new resource

(AWS answer){
    "GroupId": "sg-4a3151aa"
}

代码语言:javascript
复制
aws ec2 create-tags --resources sg-4a31513c --tags Key=Project,Value=web-performance # this should work, ResourceTag Project is Null
(success)

aws ec2 create-tags --resources sg-4a31513c --tags Key=Project,Value=web-performance # should *not* work, ResourceTag Project is already set and not Null
(success)

正如您所看到的,它两次工作,在已经设置标记的外国项目上也有效。

我也试过了

代码语言:javascript
复制
        "Condition": {
            "StringNotLike": {
                "ec2:ResourceTag/Project": "*"
            }
        }

这与"Null“条件完全一样,即使在策略模拟器中也是如此。

你有什么想法吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-03 13:08:46

Amazon部分支持资源级权限.在编写本报告时,CreateTags操作执行而不是支持资源级别的权限。您可以看到支持资源级权限这里的操作列表。

您可以通过更改策略来验证这一点,以指定StopInstances (它支持资源级权限)来代替CreateTags。您的IAM用户只有在实例没有项目标记的情况下才能停止EC2实例。或者,如果将Null条件更改为false,则IAM用户只能在实例具有Project的情况下才能停止EC2实例。

因此,当CreateTags支持资源级权限时,您的策略可能在将来的某个时候是正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32374789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档