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

如何配置AWS S3存储桶策略仅允许指定IAM用户访问、拒绝其他主体操作

S3存储桶仅允许指定IAM用户上传的可落地方案

前置检查(90%的配置异常都卡在这里)

  • 进入S3存储桶的「权限」配置页,开启全部阻止公共访问选项,不要保留任何公共访问例外,避免权限绕过。
  • 检查目标IAM用户的权限边界、所属AWS组织的SCP策略,确认没有附加针对S3上传的全局拒绝规则,否则桶策略配置正确也会被拦截。

步骤1:配置存储桶策略

直接在存储桶权限的「存储桶策略」编辑框粘贴以下配置,替换占位符为你自己的资源信息:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws-cn:s3:::替换成你的存储桶名称/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:PrincipalArn": "arn:aws-cn:iam::替换成你的12位AWS账号ID:user/替换成你指定的IAM用户名"
                }
            }
        }
    ]
}

提示:使用AWS全球区而非中国区的话,把所有ARN字段里的aws-cn改为aws即可。

这个策略的逻辑是默认拦截所有主体的上传请求,仅当请求发起者是你指定的IAM用户时跳过拦截,不会出现权限开放给所有人的问题。注意Resource字段末尾必须加/*,否则策略无法匹配桶内对象资源,会出现所有上传都被拦截的情况。

不要使用「Allow + 指定Principal」的写法配置存储桶策略:这种写法优先级低于其他全局允许规则,一旦存储桶存在公共访问配置、或其他IAM策略带了S3允许项,就会出现非授权用户也能上传的问题。

步骤2:给指定IAM用户配置最小上传权限

给目标IAM用户附加以下内联策略即可,不要给多余的权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws-cn:s3:::替换成你的存储桶名称/*"
        }
    ]
}

配置验证

配置完成后直接用AWS IAM策略模拟器测试:

  • 选择指定IAM用户,操作选s3:PutObject,目标资源选对应桶内对象,结果应为「允许」
  • 选择其他IAM用户/匿名用户,操作选s3:PutObject,目标资源选对应桶内对象,结果应为「拒绝」
    测试通过后再对接Node应用即可,如果你的应用用预签名URL实现前端直传,记得给生成预签名URL的服务实体也加上对应s3:PutObject权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:36:17