如何排查AWS S3对象xyz.txt的可读访问权限主体?
排查S3对象xyz.txt读取权限的方法
1. 检查IAM用户/角色的直接关联策略
- 挨个检查所有IAM用户、角色,看看有没有允许
s3:GetObject(或者s3:*Object这类包含读取动作的权限),且资源范围包含arn:aws:s3:::testabpvc/xyz.txt(比如直接指定该对象,或者整个testabpvc桶下的所有对象)的允许策略。 - 别忘了同时查看用户直接绑定的策略和用户所属IAM组的策略,就像你给test-user附加的策略里就包含了
s3:*Object权限。
2. 分析S3桶的Bucket Policy
- 打开
testabpvc桶的Bucket Policy配置,查找是否有Effect: Allow的语句,其中Action包含s3:GetObject、Resource匹配xyz.txt,同时关注Principal字段指定的主体——可能是其他AWS账号的用户、匿名用户("*"),或者AWS服务角色之类的。
3. 查看S3对象的ACL配置
- 直接查看
xyz.txt这个对象的ACL,确认有没有给这些主体开放READ权限:- 其他AWS账号的用户或根账号
- 匿名用户(Everyone)
- 预定义的用户组(比如Authenticated Users)
- 这里的READ权限就对应读取对象内容的权限。
4. 检查IAM权限边界和组织SCP(服务控制策略)
- 如果你的账号在AWS Organizations环境下,要查看当前账号的SCP规则,确认有没有限制相关主体访问这个S3对象(SCP默认是全允许,要是有自定义限制就得仔细核对)。
- 另外,检查相关IAM用户/角色的权限边界,确保这个边界没有阻挡主体获取
s3:GetObject的权限。
5. 用IAM Access Analyzer做自动分析
- 运行IAM Access Analyzer的权限分析功能,指定资源为
arn:aws:s3:::testabpvc/xyz.txt,动作选s3:GetObject,工具会自动整合IAM策略、Bucket Policy、对象ACL所有权限来源,直接输出能访问的主体列表,省得自己挨个排查。
6. 排查临时凭证相关的权限
- 如果有使用STS生成的临时凭证(比如角色临时会话、联合身份登录的凭证),得检查这些凭证对应的角色有没有允许访问该对象的策略,同时确认角色的信任策略是不是允许相关主体承担这个角色。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

