AWS用户含ReadOnlyAccess权限部分区域无法调用DescribeInstances问题排查
问题分析与解决方案
针对你遇到的部分区域无法执行EC2 DescribeInstances 但其他服务正常的问题,核心原因可以从以下几个方向排查:
可能的原因
- 显式拒绝策略优先级覆盖:AWS权限体系中,
Deny语句的优先级高于Allow。即使附加了ReadOnlyAccess(包含ec2:Describe*权限),如果用户或其所属组还附加了其他策略,在报错区域对ec2:DescribeInstances设置了Deny,就会直接触发权限错误。 - 目标区域未启用:AWS账户默认仅启用部分常用区域,新区域需要手动开启。未启用的区域中,EC2服务无法被访问,会返回
UnauthorizedOperation;而IAM属于全局服务,不受区域启用状态影响,因此可以正常操作。 - 权限边界限制:如果该用户被设置了权限边界(Permission Boundary),且边界策略未允许在报错区域执行
ec2:DescribeInstances,即使ReadOnlyAccess有相关权限,也会被权限边界拦截。权限边界定义了用户能拥有的最大权限范围,超出范围的操作会被拒绝。 - 策略资源范围限制:虽然
ReadOnlyAccess默认允许对所有资源(*)执行ec2:Describe*,但如果有其他叠加策略缩小了资源范围(比如仅允许特定区域的EC2资源),未被包含的区域就会触发权限错误。
排查步骤
- 检查用户的所有附加策略(直接附加+组继承),重点查找包含
ec2:DescribeInstances的Deny语句,确认其作用区域是否覆盖报错区域。 - 登录AWS控制台,进入「我的账户」→「账户设置」→「区域」,核实报错区域是否已启用。
- 查看用户的权限边界配置,确认边界策略中是否允许在目标区域执行
ec2:DescribeInstances。 - 使用IAM Access Analyzer模拟该用户在报错区域执行
ec2:DescribeInstances操作,通过分析结果定位具体是哪个策略导致的权限拒绝。
内容的提问来源于stack exchange,提问作者Ivan Sushkov
相关产品推荐
相关产品推荐

