如何让IAM用户可见AWS根账户下创建的EC2实例?
解决IAM用户无法查看根账户创建的EC2实例的方案
没问题,我来帮你搞定这个问题——本质上这就是个权限配置的事儿,EC2实例是属于整个AWS账户的,不是绑定某一个用户,只要给IAM用户配对了权限,就能看到所有实例。具体步骤如下:
1. 先给IAM用户加上基础的EC2只读权限
这是最直接的第一步,操作起来也简单:
- 用根账户登录AWS控制台,进入IAM服务
- 找到需要授权的IAM用户(或者用户组,批量授权更方便)
- 点击「添加权限」→ 选择「附加现有策略直接」
- 搜索并勾选
AmazonEC2ReadOnlyAccess这个托管策略,它包含了查看EC2实例、快照、卷等所有只读操作的权限 - 保存更改
完成这一步后,绝大多数情况下IAM用户刷新EC2控制台就能看到所有实例了。如果还是看不到,接着往下排查。
2. 检查是否有资源级权限限制
如果你的团队用了标签权限控制或者给实例加了自定义资源策略,可能会导致权限被限制:
- 先登录根账户进入EC2控制台,找到目标实例,查看它的「标签」——如果你的IAM策略是基于特定标签授权的(比如只允许访问带
Team: Dev标签的实例),那根账户创建的实例可能没加这个标签,直接给实例补上对应标签就行。 - 要是实例附加了IAM角色,检查角色的信任策略,确认是否允许你的IAM用户访问该角色关联的资源。
- 如果你用了自定义IAM策略,确保策略里包含允许
ec2:Describe*操作的语句,比如:
{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeVolumes", "ec2:DescribeSnapshots" ], "Resource": "*" }
3. 排查是否有显式拒绝的权限
有时候自定义IAM策略里不小心加了Deny语句,会直接覆盖所有允许的权限。一定要检查用户的所有附加策略,确保没有类似这样的内容:
{ "Effect": "Deny", "Action": "ec2:DescribeInstances", "Resource": "*" }
如果有,要么删掉这条拒绝规则,要么调整条件让它不影响目标实例的访问。
4. 测试权限有效性
配置完后切换到IAM用户的控制台,刷新EC2页面试试。如果还是不行,用IAM控制台的「模拟策略」功能,模拟该用户执行ec2:DescribeInstances操作,看具体报错是什么,再针对性调整权限。
内容的提问来源于stack exchange,提问作者MyDumbQuestions




