AWS IAM组权限配置求助:组用户仅可见对应VM
解决IAM用户仅能查看对应EC2实例的问题
嘿,我懂你现在的困扰——很多AWS刚入门的朋友都会把安全组和IAM权限控制搞混,这俩完全是不同的功能模块!你之前修改安全组的操作,其实只是给EC2实例设置了网络访问规则,和IAM用户能看到哪些EC2实例根本没关系。要实现「Group1用户只能看到System1,Group2用户只能看到System2」的需求,得靠IAM的资源级权限策略来配置,具体步骤如下:
一、先理清核心概念
- 安全组:本质是EC2实例的防火墙,负责控制哪些IP地址、端口可以和实例建立网络连接,不影响用户对EC2实例的可见性或管理权限。
- IAM权限:决定了用户能调用哪些AWS API、访问哪些云资源,这才是控制用户能看到哪个EC2实例的关键。
二、创建自定义IAM权限策略
你需要给每个IAM组创建针对性的策略,限制他们只能访问对应的EC2实例:
- 先获取目标EC2实例的ARN(资源名称):
- 登录AWS控制台,进入EC2服务,找到System1实例,查看「详情」里的「ARN」,格式大概是:
arn:aws:ec2:us-east-1:123456789012:instance/i-0abc123def456ghi7
- 登录AWS控制台,进入EC2服务,找到System1实例,查看「详情」里的「ARN」,格式大概是:
- 进入IAM控制台,点击「策略」>「创建策略」,选择「JSON」模式,粘贴以下示例策略(记得替换成你的实例ARN和区域):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceStatus" ], "Resource": "*", "Condition": { "StringEquals": { "ec2:ResourceTag/Name": "System1" } } }, { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances" ], "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-0abc123def456ghi7" } ] }- 第一部分允许用户查看实例,但通过条件限制只能看到名为「System1」的实例;
- 第二部分允许用户对指定实例执行启停等操作(如果不需要可以删掉)。
- 给策略命名(比如
EC2-Access-System1),完成创建后,把这个策略附加到Group1。 - 按照同样的步骤,给Group2创建对应System2的权限策略并附加。
三、验证权限效果
用Group1里的测试用户登录AWS控制台,进入EC2服务:
- 如果配置正确,你只会看到System1实例,其他实例会被隐藏;
- 如果还是能看到所有实例,检查:
- 策略里的ARN或标签是否和实例完全匹配;
- 该用户/组是否被附加了其他允许访问所有EC2的策略(比如
AmazonEC2FullAccess),如果有需要移除。
四、额外小贴士
- 可以用IAM控制台的「策略模拟器」来测试权限是否生效,提前验证策略逻辑;
- 如果需要通过标签批量管理实例权限,可以把实例打上统一标签(比如
Group: Group1),然后在策略里用标签条件匹配,比单个实例ARN更灵活; - 确保用户没有被授予
ec2:Describe*的全资源权限,否则会看到所有实例的基础信息。
内容的提问来源于stack exchange,提问作者Yass
相关产品推荐
相关产品推荐

