【发布时间】:2015-11-29 05:43:52
【问题描述】:
我们有一个 AWS 用户,他应该能够CreateInstances、Volumes 和 SecurityGroups 等不同资源,但不能修改不属于其项目的资源。
为此,我们允许创建资源并让用户CreateTags 使用Project 标记和<user's team name here> 值的资源。他不应该能够标记已经标记的资源,因此不能标记其他团队的资源。 (每个资源都在此处正确标记)。
我创建了一个带有声明的策略:
[...]
{
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": "*",
"Condition": {
"Null": {
"ec2:ResourceTag/Project": "true"
}
}
}
[...]
如果我使用 AWS 的策略模拟器,我允许在没有 Project 标签的资源上调用 CreateTags。
如果我通过设置Project 标记来模拟它,那么操作会像预期的那样被denied。
不幸的是,如果我通过此策略使用 AWS CLI 中的相同操作,CreateTags 每次都允许。即使标签已经设置,甚至在外部实例上,用户也不应该能够修改:
作为具有上述政策的用户
aws ec2 create-security-group --group-name "test-sg" --description "test" # creation of a new resource
(AWS answer){
"GroupId": "sg-4a3151aa"
}
.
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)
如您所见,它两次都有效,并且也适用于已设置标签的外国项目。
我也试过了
"Condition": {
"StringNotLike": {
"ec2:ResourceTag/Project": "*"
}
}
即使在策略模拟器中,它的行为也与“空”条件完全相同。
你有什么想法吗?提前致谢。
【问题讨论】:
-
您是否针对 EC2 实例而不是安全组尝试过此操作?看看该政策是否适用于这种情况会很有趣。
-
@jarmod 是的,行为完全相同。
标签: amazon-web-services amazon-iam