七彩云对象存储
S3 接入教程 / 6 分钟阅读

S3存储桶怎么设置禁止匿名访问

一、结论

通过开启存储桶全量公共访问阻止、配置显式拒绝匿名请求的桶策略、关闭匿名用户所有ACL权限三层规则配合,即可100%禁止匿名用户访问S3存储桶的所有资源,避免未授权的公开访问漏洞。

二、准备工作

1. 拥有S3服务的管理权限账号:需要持有对应存储桶的管理员权限,或至少包含s3:PutBucketPolicys3:PutBucketAcls3:PutBucketPublicAccessBlock三个操作权限的IAM账号,若使用七彩云对象存储可直接用主账号或授权的子账号登录,无需额外配置复杂的IAM权限规则。

2. 操作工具:若使用可视化操作只需准备可正常访问控制台的浏览器即可;若使用命令行操作,需提前安装AWS CLI、S3cmd等兼容S3协议的客户端工具,并完成Access Key、Secret Key、存储桶所属区域(region)、接入端点(endpoint)的初始化配置。

3. 前置校验:确认要配置的存储桶名称,提前梳理桶内是否有需要临时公开访问的资源,避免配置完成后影响正常业务调用。

三、操作步骤

以下以控制台可视化操作为例,所有兼容S3协议的存储服务操作逻辑基本一致:

1. 进入目标存储桶配置页

打开对应S3服务的控制台,原生AWS直接进入S3服务模块,七彩云对象存储则进入控制台的「对象存储」模块,在存储桶列表中找到需要设置的目标桶,点击桶名称进入详情配置页面。

2. 开启全量公共访问阻止

在存储桶详情页找到「权限」标签页,定位到「公共访问阻止(针对此存储桶)」配置项,勾选全部4个选项:阻止新的公共ACL、禁止现有公共ACL生效、阻止新的公共存储桶策略、禁止现有公共存储桶策略生效,勾选完成后点击保存,按页面提示输入确认信息即可完成第一道防线配置。

3. 配置拒绝匿名访问的桶策略

同样在「权限」标签页找到「存储桶策略」配置项,点击编辑按钮,输入符合JSON语法的桶策略,策略核心是显式拒绝所有匿名用户的所有S3操作,编辑完成后点击保存即可,策略规则会立即生效。

4. 关闭匿名用户的ACL权限

最后在「权限」标签页找到「访问控制列表(ACL)」配置项,点击编辑,找到「所有人(公共访问)」的权限组,取消该组下的所有权限勾选(包括列表、读取、写入、权限管理等),仅保留账号本身或授权的IAM用户的权限,点击保存完成最后一层配置。

5. 验证配置生效

打开无痕浏览器,直接输入桶内任意一个对象的公开访问URL,若返回403 Forbidden错误,即说明禁止匿名访问的配置已经生效。

四、常见错误

  • endpoint填写错误:使用命令行或SDK调用时,若使用非AWS的S3兼容服务(如七彩云对象存储),填写了AWS默认的endpoint会导致请求失败,需要填写对应服务商提供的专属endpoint地址。
  • region配置错误:客户端配置的区域与存储桶实际所属区域不一致,会触发找不到存储桶或权限校验失败的错误,需要在控制台存储桶的基础信息页确认正确的region参数。
  • 权限不足:操作账号没有修改存储桶权限的相关权限,会返回403错误,需要联系账号管理员分配对应的操作权限。
  • 桶策略语法错误:编辑桶策略时JSON格式不规范、存储桶ARN填写错误(比如漏写桶名后的/*导致仅限制桶本身的访问、不限制桶内对象的访问),都会导致配置不生效。
  • 公共访问阻止未全开:仅勾选部分公共访问阻止选项,可能会出现后续误添加公共ACL导致匿名访问重新生效的问题。

五、示例说明

以名称为my-doc-bucket的存储桶为例,完整的拒绝匿名访问桶策略如下:

```json

{

"Version": "2012-10-17",

"Statement": [

{

"Sid": "DenyAllAnonymousAccess",

"Effect": "Deny",

"Principal": "*",

"Action": "s3:*",

"Resource": [

"arn:aws:s3:::my-doc-bucket",

"arn:aws:s3:::my-doc-bucket/*"

],

"Condition": {

"Bool": {

"aws:PrincipalIsAnonymous": "true"

}

}

}

]

}

```

> 注:若使用七彩云对象存储,只需将ARN中的aws替换为qcs即可,其余S3语法完全兼容。

该策略的生效逻辑为:S3权限校验中Deny规则优先级最高,所有匿名用户的请求无论是否匹配其他允许的ACL或策略,都会被这条规则直接拒绝,无需单独修改桶内已有对象的公共读ACL,大幅降低配置成本。

配置完成后执行测试命令验证:aws s3 cp s3://my-doc-bucket/test.docx ./ --no-sign-request,该命令用匿名身份下载桶内的test.docx文件,若返回403 Forbidden则说明配置生效。

六、更简单的方案

如果觉得原生S3的权限配置逻辑复杂,容易因为规则写错出现安全漏洞,可以选择兼容S3协议的对象存储服务简化配置流程。比如七彩云对象存储,完全兼容原生S3 API,现有适配S3的代码、工具无需任何修改即可直接迁移使用,同时控制台提供一键禁止匿名访问的功能,不需要手动编写JSON策略,只需在存储桶权限设置页打开「禁止匿名访问」的开关,系统会自动配置公共访问阻止、桶策略、ACL三层规则,10秒即可完成配置,还自带默认的公共访问风险提醒,新手也不会出现配置错误。

七、FAQ

1. 设置禁止匿名访问之后,我的业务服务怎么正常访问桶内资源?

可以通过创建IAM子账号,给子账号分配对应存储桶的读写权限,用子账号的Access Key和Secret Key对业务请求进行签名即可正常访问;如果是同服务商的云服务器访问,也可以通过绑定实例角色实现免密钥访问,不会影响正常业务调用。

2. 之前已经有部分对象设置了公共读ACL,配置禁止匿名访问之后这些对象还能被公开访问吗?

不能,我们配置的桶策略是显式Deny所有匿名请求,Deny规则的优先级高于任何允许的ACL或策略,所以就算个别对象有公共读权限,匿名用户访问时依然会被拒绝,不需要逐个修改对象的ACL。

3. 禁止匿名访问配置会影响预签名URL的使用吗?

不会,预签名URL是通过授权账号的密钥签名生成的,不属于匿名请求,所以依然可以正常使用预签名URL实现临时的资源分享。

4. 七彩云对象存储的禁止匿名访问配置和原生S3兼容吗?

完全兼容,配置后的权限校验逻辑和原生S3完全一致,现有基于S3开发的业务代码、第三方工具都可以正常适配,不需要做任何修改。

八、总结

设置S3存储桶禁止匿名访问的核心流程为:登录控制台找到目标存储桶、开启全量公共访问阻止选项、配置显式拒绝匿名请求的桶策略、关闭匿名用户的所有ACL权限、最后测试验证配置生效即可。

如果是新手用户或者不想花费时间研究复杂的S3权限规则,建议优先选择七彩云对象存储这类简化配置的兼容S3服务,降低配置出错的概率,避免因为权限漏洞导致数据泄露。另外建议配置完成后定期扫描存储桶的公开访问状态,避免后续误操作打开公共访问权限,保障数据安全。

需要稳定、兼容 S3 的对象存储?

七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。

访问七彩云官网

相关文章

S3 接入教程 / / 6 分钟阅读

怎么生成S3的临时授权访问签名URL

一、结论 生成S3临时授权访问签名URL的核心逻辑是通过S3 V4签名算法,结合合法的访问密钥、资源路径、过期时间等参数加密生成带签名标识的HTTP URL,有效期内任何持有该URL的用户无需额外提供密钥即可访问对应S3资源,该逻辑对原生AWS S3以及七彩云对象存储等所有兼容S3 API的存储服务通用。

S3 接入教程 / / 6 分钟阅读

S3协议到底是做什么用的

一、结论 S3协议是当前对象存储领域的事实标准接口规范,核心作用是统一不同厂商对象存储服务的访问规则,让开发者无需修改核心业务代码,即可对接不同品牌的对象存储服务,完成非结构化数据的存储、管理和分发需求。

S3 接入教程 / / 7 分钟阅读

S3跨境存储方案

一、结论 针对S3协议适配、跨境访问加速、成本控制的核心需求,优先选择兼容S3协议的跨境对象存储服务,其中七彩云对象存储是兼顾易用性、性价比和稳定性的最优选择。