已配置AmazonS3FullAccess的IAM用户调用S3操作出现AccessDenied错误
S3 ListBuckets AccessDenied 报错原因及排查方案
你贴的IAM用户策略本身已经覆盖了s3:ListAllMyBuckets动作的权限要求,出现该报错的核心原因是存在更高优先级的权限规则禁止了该操作,常见原因及排查步骤如下:
常见原因
1. 显式拒绝策略覆盖
IAM权限评估逻辑中显式拒绝优先级最高,就算当前用户绑定了S3全权限允许策略,只要存在其他关联策略(用户组策略、权限边界、组织SCP策略、会话策略)中包含s3:ListAllMyBuckets或s3:*的显式拒绝规则,就会触发访问拒绝。
2. 权限边界限制
如果该IAM用户配置了权限边界,即便身份策略给了S3全权限,只要权限边界未放开s3:ListAllMyBuckets动作、或限制了资源范围不为*,权限也会被拦截。
3. AWS组织SCP限制
如果当前账号加入了AWS Organizations,组织层面的服务控制策略(SCP)会限制账号下所有身份的最大权限,若SCP未放开S3相关操作,本地IAM配置的全权限不会生效。
4. 自定义端点策略限制
如果CLI配置了自定义S3端点(VPC端点、私有服务端点),端点的访问策略如果禁止了s3:ListAllMyBuckets动作,也会触发该报错。
排查步骤
- 检查当前IAM用户的所有关联策略:包括直接绑定的身份策略、所属用户组的策略,搜索是否存在
Effect: Deny且动作覆盖s3:ListAllMyBuckets的规则 - 检查IAM用户权限边界:进入AWS控制台→IAM→用户→对应用户→权限→权限边界栏,确认权限边界允许
s3:ListAllMyBuckets动作且资源配置为* - 核实组织SCP配置:如果账号归属AWS组织,联系组织管理员检查对应账号的SCP策略,确认未限制S3访问权限
- 检查CLI配置项:执行
aws configure get s3.endpoint_url确认是否配置了自定义S3端点,若有配置需核对端点策略放开了ListBuckets权限;执行aws configure get region确认区域配置符合要求 - 使用IAM策略模拟器验证:在IAM控制台的策略模拟器中输入当前IAM用户ARN,选择服务为S3、操作选择
ListAllMyBuckets、资源输入*,运行模拟即可直接得到权限被拒绝的具体原因
内容的提问来源于stack exchange,提问作者rp346
相关产品推荐
相关产品推荐

