AWS只读账号查询网络资源提示无操作权限是什么原因?
AWS只读账号查询网络资源报无权限的配置遗漏排查
这类授予了只读权限的账号,在执行DescribeRouteTables/DescribeSubnets等网络资源查询操作时统一返回You are not authorized to perform this operation报错的问题,按排查优先级从高到低,常见配置遗漏如下:
- IAM策略资源字段配置错误(最高发):VPC、EC2、ELB相关的所有Describe类查询API,本身不支持资源级权限控制。如果配置只读策略时,没有把策略的
Resource字段设置为*,而是错误填写了特定资源ARN、或者留空,哪怕账号被授予了对应只读动作的权限,请求也会直接被拦截。 - 存在显式Deny策略生效:检查账号关联的所有身份(用户本身、所属用户组、绑定的角色)挂载的所有策略,是否存在
Effect: Deny的规则拦截了请求:- 比如配置了强制MFA访问规则,但登录/调用接口时没有通过MFA验证
- 比如配置了区域访问限制,发起请求的区域不在策略允许范围内
- 比如配置了源IP限制,当前访问的出口IP不在策略允许的白名单内
IAM策略中Deny的优先级最高,只要匹配到Deny规则,不管账号绑定了多少允许权限都会被拒绝。
- 权限边界配置遗漏:如果创建访问账号时设置了IAM权限边界(Permissions Boundary),哪怕挂载的只读策略包含了所有网络资源查询权限,只要权限边界的规则里没有包含对应的Describe类动作,请求一样会被拒绝。
- 组织SCP策略拦截:如果客户的AWS账号属于AWS Organization组织下的成员账号,组织管理员配置的服务控制策略(SCP)如果限制了对应操作,哪怕账号内部给账号开了足够的只读权限,SCP的拦截优先级高于账号内的IAM策略,同样会返回无权限报错。
快速排查方法:直接使用AWS控制台自带的IAM策略模拟器,选择当前使用的用户/角色,勾选需要测试的DescribeRouteTables、DescribeSubnets等操作,选择对应资源所在区域执行模拟,工具会直接定位到是哪一层的哪条策略拦截了请求,不需要逐行翻策略排查。
内容的提问来源于stack exchange,提问作者Papi Antoniadis
相关产品推荐
相关产品推荐

