AWS用户与组策略:评估时是合并还是取交集?
AWS IAM 用户策略与组策略的评估逻辑
核心结论
既不是简单的策略合并,也不是取交集,AWS IAM遵循优先级明确的权限评估流程:
- 先收集所有关联策略:用户直接附加的策略、所属组的所有策略、资源策略(若存在)。
- 评估顺序:
- 首先检查是否有显式Deny策略匹配当前请求:只要有一条匹配,直接拒绝请求(Deny优先级最高)。
- 若无显式Deny,再检查是否有显式Allow策略匹配:只要有一条匹配,允许请求。
- 既无Deny也无Allow,默认拒绝。
你的场景验证
你的配置完全符合需求,具体逻辑如下:
- 用户策略:显式Allow对应用户访问自己的专属S3桶(如
myBucketA/*和myBucketA)的读写、列表操作。 - 组策略:显式Deny所有操作,但仅当请求来源IP不在
1.2.3.1/32、1.2.3.2/32范围内时触发。
正常允许的情况
当用户从指定IP发起访问自己桶的请求时:
- 组策略的Deny条件不满足(
NotIpAddress不匹配),因此Deny语句不生效。 - 用户策略的Allow语句完全匹配请求的Action和Resource,最终请求被允许。
拒绝的情况
- 用户从非指定IP发起任何请求:组策略的Deny条件触发,直接拒绝,不受用户策略的Allow影响。
- 用户从指定IP访问非自己的桶:用户策略无对应的Allow,默认拒绝。
补充说明
IAM的评估逻辑是基于所有策略的逻辑叠加,而非合并或交集:Deny语句具有最高优先级,只要存在匹配的Deny就会拒绝;只有当没有Deny时,才会看是否有Allow来决定是否允许。
内容的提问来源于stack exchange,提问作者rfg
相关产品推荐
相关产品推荐

