已配置IAM策略仍无效:如何在AWS控制台为IAM用户隐藏特定EC2实例
解决IAM用户仅查看特定EC2实例的问题
你当前的IAM策略存在逻辑问题:单独允许了ec2:Describe*所有资源,这直接绕过了第一个语句里的标签匹配条件,导致用户能看到所有EC2实例。要实现仅展示特定实例,需要调整策略,给Describe类操作也加上标签限制,同时保留控制台正常运行所需的基础操作权限。
修正后的IAM策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeRegions", "ec2:DescribeAvailabilityZones", "ec2:DescribeAccountAttributes" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:*", "Resource": "*", "Condition": { "StringEquals": { "ec2:ResourceTag/UserName": "${aws:username}" } } }, { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*", "Condition": { "StringEquals": { "ec2:ResourceTag/UserName": "${aws:username}" } } }, { "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": "*" } ] }
关键调整说明
- 保留控制台基础操作权限:
DescribeRegions、DescribeAvailabilityZones等操作没有资源标签可以匹配,必须无条件允许,否则EC2控制台会加载失败。 - 给Describe操作加标签条件:确保用户只能查询到带有
UserName标签且标签值等于自身IAM用户名的实例。 - 实例操作权限保留标签限制:确保用户仅能对匹配标签的实例执行各类操作。
额外注意事项
要确保目标实例(比如Instance1)已添加UserName标签,标签值设置为对应的IAM用户名;而需要隐藏的Instance2不要添加该标签,或标签值与用户名不匹配。
内容的提问来源于stack exchange,提问作者Fazil Shaik
相关产品推荐
相关产品推荐

