AWS跨账户S3存储桶跨身份上传对象访问403错误原因咨询
跨账户S3桶403访问错误的核心原因
1. 底层规则:S3对象所有权的默认逻辑
S3的对象所有权和桶所有权是相互独立的权限维度:默认配置下,跨账户上传的对象,所有权归属于上传者所属的AWS账户,而非桶所在的AWS账户。
你的场景中,用户B属于账户B,他向账户A的桶上传对象时没有附加特殊ACL,因此所有上传对象的所有者为账户B,不属于桶所属的账户A。
2. 403错误的触发逻辑
你遇到的访问被拒完全符合AWS IAM和S3的权限校验规则,核心原因如下:
- 账户A配置的S3桶策略属于桶所属账户(账户A)的资源策略,仅能对账户A拥有所有权的对象生效,无权授予任何主体访问账户B所有的对象的权限。
- 你已经禁用了公共ACL,因此对象层面也无法通过公共配置开放访问权限,全球用户自然无法访问账户B所有的对象。
- 用户A属于账户A,没有得到对象所有者(账户B)的访问授权,因此访问账户B所有的对象时也会触发403错误。
3. 为什么用户A上传的对象可以正常访问
用户A属于桶所属的账户A,他上传的对象默认所有权归账户A所有,完全受账户A配置的桶策略管控,因此桶策略中配置的公共GetObject、账户A身份的访问权限都会正常生效。
可选修复方案
如果要避免该问题,可选择两种配置:
- 跨账户上传对象时,指定
bucket-owner-full-control的预置ACL,上传后对象所有权会自动转移给桶所属账户 - 在桶配置中开启对象所有权强制归属桶所有者的设置,开启后该桶内所有对象不管上传者身份,所有权统一归属桶所属账户,完全适配现有桶策略规则。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

