配置AmazonS3FullAccess后aws s3 cp仍访问被拒绝如何排查
AWS S3 cp命令返回访问被拒绝排查方案
排查显式Deny规则覆盖问题
IAM权限判定逻辑中显式Deny优先级高于所有Allow规则,请按如下顺序检查是否存在拦截规则:- 检查当前身份附加的所有策略,是否存在针对
s3:GetObject、s3:GetObjectAcl操作的Deny语句 - 检查目标S3桶的桶策略,是否存在限制源IP、VPC端点、要求MFA、拒绝当前身份ARN访问的规则
- 若当前账号属于AWS组织,检查组织的SCP(服务控制策略)是否限制了对应S3操作权限
- 若你使用的是角色临时凭证,检查角色的会话策略是否包含权限限制
- 检查当前身份附加的所有策略,是否存在针对
排查跨账号对象所有权问题
如果目标对象是其他AWS账号跨账号上传到当前桶的,默认桶拥有者也没有对象的访问权限:
执行命令aws s3api list-objects-v2 --bucket bucket-name --prefix someprefix --fetch-owner,查看返回的对象Owner ID是否为你当前账号的ID,若为外部账号ID,需要让上传对象的账号给你的身份授予对象访问权限,或者提前在桶配置中开启「桶拥有者强制所有权」功能。排查对象特殊配置限制
- 检查对象加密方式:如果对象使用SSE-KMS加密,你还需要拥有对应KMS密钥的
kms:Decrypt权限才能访问对象内容,仅有S3权限不足以访问 - 检查对象存储类:如果对象属于冰川归档、深度归档存储类,需要先发起恢复任务,等待恢复完成后才能正常访问
- 检查是否存在对象级限制:确认对象是否配置了对象锁、保留策略、对象级ACL拒绝了你的访问权限
- 检查对象加密方式:如果对象使用SSE-KMS加密,你还需要拥有对应KMS密钥的
排查请求隐性问题
- 确认对象真实存在:S3为防止对象枚举攻击,对象不存在时也会返回403访问被拒绝错误,请确认你访问的key大小写、特殊字符与list返回的结果完全一致,S3的key是大小写敏感的
- 加debug参数查看详细错误:执行命令时添加
--debug参数,查看返回的AccessDenied错误的详细提示,通常会明确标注是策略拒绝、KMS权限不足还是资源不存在 - 检查cp命令参数:如果执行cp时添加了
--acl等修改对象属性的参数,你需要额外拥有s3:PutObjectAcl等对应权限才能执行成功;同时确认本地写入路径有可写权限 - 检查IAM权限边界:如果当前IAM用户/角色配置了权限边界,权限边界中必须明确允许对应S3操作,否则附加的Allow策略不会生效
内容的提问来源于stack exchange,提问作者chx
相关产品推荐
相关产品推荐

