IAM用户仅查看自身创建EC2实例的策略修改求助
限制IAM用户仅查看自身创建的EC2实例
可行性说明
完全可行。通过EC2实例的CreatedBy标签与IAM内置变量${aws:username}做匹配,结合IAM策略的允许/拒绝逻辑,就能实现用户仅能查看自己创建的EC2实例,无法访问其他用户创建的实例或无标签实例。
原策略问题
你提供的原策略逻辑存在冲突:
StringEqualsIfExists允许用户查看带CreatedBy标签且值为自身用户名的实例,同时也允许查看无CreatedBy标签的实例;ForAnyValue:StringNotEqualsIfExists操作符不适用于单个标签场景,导致无法正确拒绝其他用户标签的实例。
修改后的策略代码
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*", "Condition": { "StringEquals": { "ec2:ResourceTag/CreatedBy": "${aws:username}" } } }, { "Effect": "Deny", "Action": "ec2:DescribeInstances", "Resource": "*", "Condition": { "Or": [ { "StringNotEquals": { "ec2:ResourceTag/CreatedBy": "${aws:username}" } }, { "Null": { "ec2:ResourceTag/CreatedBy": "true" } } ] } } ] }
策略逻辑解释
- 允许规则:仅允许用户查看带有
CreatedBy标签且标签值等于自身IAM用户名的EC2实例; - 拒绝规则:明确拒绝用户查看两类实例:
CreatedBy标签值不等于自身用户名的实例;- 没有
CreatedBy标签的实例。
这样组合后,用户只能访问自己创建并标记了CreatedBy标签的EC2实例,完全符合需求。
内容的提问来源于stack exchange,提问作者sai
相关产品推荐
相关产品推荐

