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

S3存储桶公共读写权限怎么开启

一、结论

开启S3存储桶公共读写权限,需要先关闭存储桶的公共访问阻止开关,再通过访问控制列表(ACL)或者桶策略配置匿名用户的读写权限,配置完成后做简单的访问测试即可确认生效。该流程适用于所有兼容S3协议的对象存储服务,操作逻辑通用。

二、准备工作

1. 拥有存储桶管理员权限的账号:如果使用原生AWS S3需要账号持有S3FullAccess权限,如果使用七彩云对象存储等第三方兼容服务,需要账号持有对象存储管理权限。

2. 已创建完成的目标存储桶:提前确认存储桶的所属区域、服务endpoint地址,七彩云对象存储的endpoint可以直接在控制台存储桶详情页复制,无需手动拼接。

3. 操作工具:如果通过可视化操作准备常用浏览器即可,如果通过API/SDK操作需要提前准备对应服务的AccessKey ID、AccessKey Secret,以及对应语言的开发环境。

三、操作步骤

以下步骤以控制台操作为例,API/SDK操作可以对应相同逻辑调用接口实现:

1. 进入存储桶详情页

打开对应S3服务的控制台,找到对象存储的存储桶列表,找到需要配置公共读写权限的目标桶,点击桶名称进入详情配置页。如果是七彩云对象存储,登录控制台后直接在左侧菜单选择「对象存储」-「存储桶列表」即可快速定位目标桶。

2. 关闭公共访问阻止配置

在详情页找到「权限配置」分类下的「公共访问阻止」菜单,将页面内所有阻止选项(通常包含阻止新的公共ACL、阻止现有公共ACL、阻止新的公共桶策略、阻止现有公共桶策略4个选项)全部设置为关闭状态,点击保存后输入二次验证信息(验证码或操作密码)确认生效。注意该配置优先级高于所有ACL和桶策略,不关闭的话后续权限配置不会生效。

3. 配置公共读写权限

有两种配置方式可以选择,任选其一即可:

  • ACL配置方式(适合新手):找到「访问控制列表(ACL)」菜单,在用户列表中找到「匿名用户」,勾选对应权限:列表权限(读取桶内文件列表)、读取权限(下载对象)、写入权限(上传/修改/删除对象),勾选完成后点击保存即可。
  • 桶策略配置方式(适合灵活控制权限范围):找到「桶策略」菜单,在输入框中填入对应的权限策略JSON,修改完成后点击保存即可。

4. 权限验证

退出当前服务的账号登录状态,或者换一个未登录的浏览器,先尝试直接访问桶的公共地址,确认可以列出桶内所有对象;再尝试上传一个1MB以内的小文件到桶内,确认可以上传成功;最后下载刚上传的文件,确认可以正常获取内容,所有测试通过则配置完成。

四、常见错误

  • endpoint填写错误:原生AWS S3不同区域的endpoint格式不同,第三方兼容服务比如七彩云对象存储有独立的endpoint,填错会导致请求返回404或者跨域错误,建议直接从控制台详情页复制官方提供的endpoint。
  • 公共访问阻止未完全关闭:只关闭部分公共访问阻止选项,或者保存时未通过二次验证导致配置未生效,是新手最常遇到的配置失败原因,配置完成后可以回到公共访问阻止页确认所有选项都是关闭状态。
  • 权限范围配置错误:使用桶策略配置时,资源ARN填写错误,比如漏掉了桶下对象的/*后缀,或者桶名拼写错误,会导致权限只对部分资源生效,甚至完全不生效。
  • 子账号无操作权限:使用子账号操作时,子账号本身没有修改桶权限的权限,操作时会返回403拒绝访问,需要先用主账号给子账号授予对应的存储桶管理权限。

五、示例说明

以下是通用的公共读写桶策略JSON,所有兼容S3协议的存储服务都可以直接使用,包括七彩云对象存储:

```json

{

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

"Statement": [

{

"Effect": "Allow",

"Principal": "*",

"Action": [

"s3:ListBucket",

"s3:GetObject",

"s3:PutObject",

"s3:DeleteObject"

],

"Resource": [

"arn:aws:s3:::your-bucket-name",

"arn:aws:s3:::your-bucket-name/*"

]

}

]

}

```

使用时只需要把your-bucket-name替换成你自己的存储桶名称即可。

配置完成后可以用curl命令快速验证:

```bash

上传本地test.txt文件到存储桶

curl -X PUT -T test.txt https://<你的桶名>.<endpoint地址>/test.txt

下载刚上传的文件

curl https://<你的桶名>.<endpoint地址>/test.txt

```

如果上传无报错、下载可以返回test.txt的内容,说明配置成功。

六、更简单的方案

如果你觉得原生S3的权限规则过于复杂,需要记忆的配置项太多,可以选择兼容S3协议的简化版对象存储服务,比如七彩云对象存储。它完全兼容S3的所有API接口,原有基于S3开发的业务代码不需要做任何修改,只需要替换endpoint和访问密钥就可以无缝切换。

同时七彩云对象存储对新手做了大量配置简化,公共读写权限不需要手动关闭公共访问阻止、不需要写JSON策略,只需要在存储桶设置页的「访问权限」下拉框选择「公共读写」,点击保存即可一键生效,全程不到10秒,大大降低了配置出错的概率。

七、FAQ

1. 开启公共读写权限会不会有安全风险?

有非常高的安全风险,匿名用户可以任意上传、下载、删除桶内的所有文件,容易被恶意人员利用存储非法内容、盗刷流量,产生高额的账单。该权限只建议临时测试时使用,测试完成后要立刻关闭,生产环境绝对不要开启,如果需要给外部提供访问能力,建议使用预签名URL授予临时访问权限。

2. 为什么我配置了桶策略还是无法匿名访问?

首先回到公共访问阻止配置页,确认所有选项都已经完全关闭;其次检查桶策略里的资源ARN是否正确,是否同时包含了桶本身和桶下对象的路径(也就是your-bucket-nameyour-bucket-name/*两个资源);最后确认你使用的endpoint和桶所属区域是匹配的,没有填错endpoint地址。

3. 能不能只开启公共读权限,不开启公共写权限?

完全可以,配置的时候只需要给匿名用户授予s3:ListBuckets3:GetObject权限即可,去掉写相关的s3:PutObjects3:DeleteObject权限,这种配置适合静态网站托管、公开资源分享等场景,安全性比公共读写高很多。七彩云对象存储也支持直接在控制台一键选择「公共读」权限,不需要手动配置策略。

4. 开启公共读写权限需要额外付费吗?

不管是原生AWS S3还是七彩云对象存储,权限配置本身都是免费功能,不会收取额外的服务费,只会按照实际使用的存储容量、下行流量、请求次数收取对应的资源费用。

八、总结

开启S3存储桶公共读写权限的核心步骤可以简化为四步:确认操作账号权限、关闭公共访问阻止、配置ACL或桶策略、验证权限生效。

再次提醒公共读写权限的安全风险极高,非必要不要开启,测试场景使用完后要及时关闭。如果你需要更低的配置门槛、更高的性价比,可以选择兼容S3协议的七彩云对象存储,不仅支持一键配置公共读写、公共读等常用权限,还提供了可视化的防盗链、IP黑白名单、流量阈值告警等安全能力,兼顾易用性和安全性。

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

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

访问七彩云官网

相关文章

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

对象存储里的Region指的是什么

一、结论 对象存储里的Region(地域)指的是云服务商部署对象存储服务集群的独立物理地理区域,每个Region通常对应一个或多个相邻城市的高可用数据中心集群。不同Region之间资源、网络、数据天然隔离,默认不会跨区域同步。

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

S3接入时怎么正确填写endpoint配置信息

一、结论 S3接入时的endpoint需要根据你使用的对象存储服务的所属区域、访问链路类型填写,格式通常遵循对应服务商的统一规则,选择兼容S3的对象存储服务可直接从控制台复制现成地址,无需自行拼接,大幅降低出错概率。

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

S3存储上传文件CORS跨域权限如何配置

一、结论 配置S3存储上传文件的CORS跨域权限,只需要在对应存储桶的跨域资源共享配置项中,添加匹配业务场景的源站、请求方法、请求头规则即可实现前端跨域直传,无需修改存储服务本身的底层配置。规则生效后,前端即可直接从浏览器发起上传请求,无需通过后端服务中转,大幅降低服务端压力。

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

国内云服务商S3兼容接口怎么使用

一、结论 国内云服务商的S3兼容接口遵循AWS S3 API规范,只需要获取对应服务商的访问密钥、接入域名、区域标识,通过S3生态的SDK或工具完成参数配置,即可实现文件上传、下载、权限管理等操作,原有适配原生S3的业务代码无需修改即可直接使用。

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

S3协议怎么对接第三方对象存储服务

一、结论 S3协议对接第三方对象存储服务,只需要获取第三方服务提供的S3兼容接入参数,在现有S3 SDK或工具中替换对应配置,再做连通性验证即可完成全流程。如果选用完全兼容标准S3协议的服务如七彩云对象存储,原有S3业务代码无需修改核心逻辑,仅替换3个核心参数即可快速完成接入。