You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何赋予其他账户与S3存储桶所有者等同的访问权限解决跨账户读取问题

解决方案

最优方案:启用S3桶所有者强制所有权配置

这个方案可以直接满足你提到的两个目标,全程只需要桶级配置,不需要修改任何现有对象,也不需要管控上传端行为:

  • 操作步骤:
    1. 进入目标S3桶的控制台,切换到「权限」标签,找到「对象所有权」设置项
    2. 选择*桶所有者强制(Bucket owner enforced)*模式并保存,该模式会自动将所有现有、新增对象的所有权收归桶所有者账户,同时禁用所有对象级ACL,对象级权限配置不会再产生任何限制。由于你当前所有写入操作都已配置owner-full-control权限,开启该模式不会出现现有对象的权限冲突问题
    3. 配置桶策略,给需要访问的身份(你的Lambda执行角色、各CI阶段的执行角色)授予s3:GetObject权限即可,参考配置如下:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::<Lambda所属账户ID>:role/<Lambda执行角色名称>",
                        "arn:aws:iam::<CI1账户ID>:role/<CI执行角色名称>",
                        "arn:aws:iam::<CI2账户ID>:role/<CI执行角色名称>"
                    ]
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::<你的桶名称>/*"
            }
        ]
    }
    

备选方案:使用桶所有者账户的Lambda做访问中转

如果涉及的CI账户数量多、变动频繁,不想反复修改桶策略,可以用以下方案:

  • 将读取S3的Lambda部署在桶所有者所属账户,桶策略仅给该Lambda的执行角色开放s3:GetObject全桶权限
  • 对外暴露Lambda的调用入口,所有CI阶段的读取请求统一调用该Lambda获取对象内容
  • 后续新增CI账户仅需要给对应CI角色配置Lambda的lambda:InvokeFunction权限即可,不需要修改S3桶的任何配置

方案生效说明

因为你当前所有上传操作都已经配置了owner-full-control权限,桶所有者本身已经具备所有对象的完全控制权限,上述两个方案都不需要修改任何现有对象,配置完成后立即全局生效,后续新增对象也会自动继承权限,不需要额外处理。

内容的提问来源于stack exchange,提问作者Darren Oakey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:36:08