在AWS中创建IAM策略以限制用户仅可查看和操作指定EC2实例
AWS IAM 单EC2实例权限配置问题解答
你的需求完全可以实现,之前配置失败是因为对AWS IAM的EC2权限规则和策略语法理解有误
问题原因
- EC2所有
Describe*系列的API操作不支持资源级权限,必须指定Resource为*,这是你第一次配置时报错的直接原因。 - 后续添加的Condition存在两处错误:
- 语法错误:资源标签匹配的正确语法是
ec2:ResourceTag/<标签键>,不是用逗号分隔,你写的ec2:ResourceTag,UserName属于语法错误 - 标签键不匹配:你的目标实例打的标签键是
name,而条件中写的是UserName,两者无法匹配,所以过滤规则不生效
- 语法错误:资源标签匹配的正确语法是
正确策略示例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowInstanceOperate", "Effect": "Allow", "Action": [ "ec2:RebootInstances", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:us-east-1:33333333333:instance/i-444444444444444" }, { "Sid": "AllowViewSpecifiedInstanceOnly", "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*", "Condition": { "StringEquals": { "ec2:ResourceTag/name": "abc" } } } ] }
配置效果
上述策略部署后,userA执行DescribeInstances查询时,AWS会自动过滤返回结果,仅返回标签为name=abc的那台EC2实例,账号下其他所有EC2实例对该用户完全不可见;同时userA仅能对指定ARN的那台EC2实例执行重启、启动、停止操作,无法操作其他实例。如果需要给用户开放该实例的其他管理权限,只要将对应支持资源级权限的EC2操作添加到第一个Statement的Action列表中即可。
内容的提问来源于stack exchange,提问作者Caesar
相关产品推荐
相关产品推荐

