如何配置IAM策略实现仅列出带指定Dept标签的EC2实例
正确配置方案
问题根因
你当前的配置报错核心原因是:ec2:Describe*包含大量和EC2实例无关的通用查询操作(比如查询可用区、VPC、路由表等),这类操作对应的资源没有Dept标签,你给所有ec2:Describe*操作统一绑定标签校验条件,会导致这类通用请求直接被IAM拒绝,控制台就返回API错误。
另外补充说明:aws:RequestTag条件仅适用于创建资源时携带标签的场景,完全不适用资源列表查询场景,不需要使用。
正确IAM策略配置
你需要拆分权限语句,先放开控制台必要的通用查询权限,再单独给实例查询操作加标签过滤条件,示例如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeRegions", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeKeyPairs", "ec2:DescribeImages", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*", "Condition": { "StringEquals": { "ec2:ResourceTag/Dept": "Sales" } } } ] }
补充说明
- 上述通用查询权限列表可根据你的实际控制台使用需求增减,只要不把不需要标签校验的操作和带标签条件的操作混在同一条语句即可。
- 如果你还需要限制EBS卷、弹性IP等其他EC2资源的查询结果,可单独新增语句,给对应资源的
Describe操作加上同样的ec2:ResourceTag/Dept条件即可。 - 该配置下IAM不会拒绝实例查询请求,只会自动过滤掉不符合标签条件的实例返回,控制台不会再报API错误。
内容的提问来源于stack exchange,提问作者Dark Night
相关产品推荐
相关产品推荐

