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

S3跨账号上传/下载时出现访问拒绝问题求助

解决方案:S3前缀跨账号共享权限修复

问题核心

当前桶策略已允许外部账号列出指定前缀内容,但上传/下载对象时触发Access Denied,主要源于两个常见问题:外部用户自身IAM策略未授权、桶策略配置存在范围限制。

具体修复步骤

1. 给外部账号用户添加IAM授权

外部账号的管理员必须为该用户配置如下IAM策略(替换占位符):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket-name>",
                "arn:aws:s3:::<bucket-name>/<prefix>/*"
            ]
        }
    ]
}

这是关键步骤:桶策略仅开放了桶侧的访问权限,用户自身的IAM策略必须明确授予对应操作权限,否则会被默认拒绝。

2. 优化桶策略的列表权限范围(可选)

如果需要允许用户直接查看<prefix>根目录(而非仅其子对象),调整桶策略中ListBucket的条件,添加前缀本身的匹配规则:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Test List Bucket",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::外部账号ID:user/外部用户名"},
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::<bucket-name>",
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "<prefix>",
                        "<prefix>/*"
                    ]
                }
            }
        },
        {
            "Sid": "Test Upload Objects",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::外部账号ID:user/外部用户名"},
            "Action": ["s3:PutObject", "s3:GetObject"],
            "Resource": "arn:aws:s3:::<bucket-name>/<prefix>/*"
        }
    ]
}

建议将Principal指定到具体用户(而非仅账号ID),缩小权限范围,提升安全性。

3. 检查桶的Block Public Access设置

确认桶的Block Public Access未启用影响跨账号访问的选项:

  • 不要勾选"Block public access to buckets and objects granted through any access control lists (ACLs)"
  • 不要勾选"Block public access to buckets and objects granted through new access control lists (ACLs)"
    仅针对指定账号共享时,这些选项通常不会干扰,但需确认避免意外限制。

4. 验证权限有效性

让外部用户执行以下命令测试(替换占位符):

  • 列出对象:aws s3 ls s3://<bucket-name>/<prefix>/
  • 上传文件:aws s3 cp local-file.txt s3://<bucket-name>/<prefix>/
  • 下载文件:aws s3 cp s3://<bucket-name>/<prefix>/test-file.txt ./

若仍报错,可通过AWS CloudTrail查看拒绝事件的errorCode和errorMessage,定位具体缺失的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:52:21