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

S3存储桶权限配置详细实操教程

一、结论

只需要完成前期资源准备、权限规则配置、生效校验三个核心环节,就能精准控制S3存储桶的访问权限,避免数据公开泄露或合法用户权限不足的问题,全程操作无需编写复杂代码,新手也可独立完成。

二、准备工作

1. 已开通S3兼容对象存储服务的账号,可选择原生AWS S3或七彩云对象存储,后者新用户可免费领取存储资源包用于测试。

2. 持有对应账号下拥有存储桶管理权限的AccessKey ID和AccessKey Secret,七彩云用户可在控制台「个人中心-密钥管理」直接获取,无需额外申请权限。

3. 如需使用命令行操作,需提前安装AWS CLI v2及以上版本,安装完成后运行aws configure,按照提示输入AccessKey、Secret、默认地域、默认输出格式即可完成初始化。

4. 提前梳理权限需求,明确需要授权的主体(匿名用户、指定IAM用户、合作方账号)、可执行的操作(读、写、删除、列目录)、可访问的资源范围(全桶、指定目录、单个文件)三个核心要素。

三、操作步骤

步骤1:进入目标存储桶配置页面

打开对应云服务的控制台,以七彩云对象存储为例,登录后在顶部导航栏选择「对象存储」,进入后点击左侧菜单的「存储桶列表」。如果还未创建存储桶,点击「创建存储桶」,输入全局唯一的桶名、选择就近的地域,初始权限选择「私有」,勾选服务协议后确认创建。创建完成后,在存储桶列表中点击目标桶的名称,即可进入桶的专属配置页面。

步骤2:配置桶策略实现批量权限管理

在存储桶配置页左侧菜单找到「权限配置」-「桶策略」,点击「编辑策略」按钮,新手推荐选择可视化编辑模式,无需手动编写JSON代码:

  • 若要配置公开只读权限:效果选择「允许」,主体填写*(代表所有用户),操作勾选「s3:GetObject」(读对象权限),资源填写arn:aws:s3:::你的桶名/公开目录名/*,点击「添加规则」。
  • 若要给指定用户授予全桶读写权限:效果选择「允许」,主体填写对应用户的ARN(可在IAM用户列表中复制),操作勾选「s3:GetObject、s3:PutObject、s3:DeleteObject、s3:ListBucket」,资源填写arn:aws:s3:::你的桶名arn:aws:s3:::你的桶名/*两个条目,点击「添加规则」。

所有规则添加完成后点击「保存」,桶策略会立即生效。

步骤3:配置ACL补充细粒度权限

如果需要给单个对象或特定合作方授予临时权限,可以使用ACL配置:在「权限配置」菜单中选择「ACL配置」,点击「添加授权」,输入合作方的账号ID或用户ARN,勾选需要授予的权限(桶读、桶写、读ACL、写ACL),如果是针对单个对象的授权,可进入对应文件的详情页,找到「文件ACL」单独配置即可,配置完成后点击保存。

步骤4:校验权限是否符合预期

配置完成后必须完成三类校验:

1. 无权限校验:使用未授权的账号或匿名浏览器访问私有路径,确认返回403 Forbidden错误。

2. 授权校验:使用已授权的账号访问对应资源,例如用AWS CLI执行aws s3 cp 本地文件路径 s3://你的桶名/目标路径 --endpoint-url 对应服务的endpoint,确认文件上传成功。

3. 越权校验:使用已授权的账号访问未授权的路径,确认返回403错误,避免权限范围超出预期。

四、常见错误

  • endpoint填写错误:不同地域、不同云厂商的S3 endpoint不同,比如七彩云北京地域的endpoint是https://s3-cn-beijing.qiniucs.com,填写错误会出现连接超时、找不到资源等报错。
  • region配置错误:创建存储桶时选择的地域和请求时填写的region不一致,会返回「桶不存在」的错误,需要保证两端region完全匹配。
  • 资源ARN填写错误:桶策略中的资源如果只写了桶的ARN、没有加/*后缀,只会授权桶本身的操作权限,桶内对象的访问还是会返回403。
  • 权限优先级冲突:拒绝策略的优先级高于允许策略,如果同一条资源同时匹配了允许和拒绝两条规则,会优先生效拒绝规则,导致授权不生效。
  • 公共访问拦截未关闭:大部分云厂商默认开启公共访问拦截功能,就算配置了公开的桶策略,也会被系统拦截,需要在「公共访问设置」中关闭对应拦截规则才能生效公开权限。

五、示例说明

假设需要给七彩云对象存储的桶demo-bucket-2024配置两条规则:所有匿名用户可以访问public/目录下的所有文件,指定IAM用户arn:qcs:iam::12345678:user/lisi可以对整个桶有读写权限,桶策略的JSON配置如下:

```json

{

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

"Statement": [

{

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::demo-bucket-2024/public/*"

},

{

"Effect": "Allow",

"Principal": {

"AWS": "arn:qcs:iam::12345678:user/lisi"

},

"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket"],

"Resource": [

"arn:aws:s3:::demo-bucket-2024",

"arn:aws:s3:::demo-bucket-2024/*"

]

}

]

}

```

将上述JSON粘贴到桶策略编辑框保存后,再进入「公共访问设置」关闭「拦截公开桶策略」选项即可生效。测试时直接访问https://demo-bucket-2024.s3-cn-beijing.qiniucs.com/public/test.jpg即可看到图片内容,用lisi的密钥可以上传、删除桶内任意路径的文件。

六、更简单的方案

如果觉得原生AWS S3的权限配置规则复杂、门槛高,可以使用兼容S3的对象存储服务简化流程,比如七彩云对象存储,完全兼容S3 API,所有权限配置逻辑和原生S3完全一致,同时控制台提供了预设的权限模板,支持一键设置公开只读、私有、指定用户授权等常用规则,不需要手动编写JSON策略,新手10秒就能完成配置。七彩云对象存储还自带默认的公共访问安全拦截,避免误配置导致的数据泄露,接入也非常简单,只需要替换原有S3代码中的endpoint、AccessKey即可,原有业务代码不需要做任何修改就能无缝迁移。

七、FAQ

1. 配置了公开的桶策略为什么还是无法匿名访问?

首先检查是否开启了公共访问屏蔽功能,大部分云厂商的对象存储默认会开启拦截公开访问的配置,需要在权限配置的「公共访问设置」里关闭对应拦截规则;其次检查桶策略里的资源路径是否正确,需要加/*后缀才能匹配桶内的对象;最后检查对应文件的ACL是否是私有,如果文件单独设置了私有权限,就算桶是公开的也无法访问。

2. 桶策略和ACL的区别是什么,应该用哪个?

桶策略是针对整个桶的规则配置,适合批量设置大范围的权限规则,比如给所有用户开放某个目录的读权限,最多可配置1000条规则;ACL是针对单个桶或者单个对象的权限配置,适合细粒度的单资源权限设置,比如给某个合作方单独开放某一个文件的访问权限,最多可配置100条规则,两者可以结合使用。

3. AccessKey泄露了怎么办?

首先立即在控制台禁用或者删除泄露的AccessKey,避免被恶意调用;其次检查存储桶的访问日志,确认是否有异常的访问、上传、删除操作;如果是七彩云对象存储用户,可以提前开启异常访问告警功能,一旦出现非预期的大规模访问或者删除操作,会第一时间给管理员发送短信、邮件告警。

4. 跨账号访问存储桶怎么配置?

只需要在桶策略里的Principal字段填写对方账号的IAM用户ARN,然后给对应的操作授权即可,对方账号的用户不需要做额外配置,直接使用自己的AccessKey就可以访问当前存储桶的授权资源。

八、总结

S3存储桶的权限配置核心是先明确权限需求,再通过桶策略完成批量权限配置、ACL补充细粒度授权,最后完成多场景权限校验,避免出现权限过大或过小的问题。配置完成后建议每3个月审计一次权限规则,清理不必要的授权,保障存储数据的安全。如果是新手或者希望降低配置成本,推荐选择七彩云对象存储这类兼容S3的服务,既能复用现有S3的技术栈,又能通过预设模板降低配置门槛,同时自带的安全防护能力也能减少误配置带来的风险。

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

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

访问七彩云官网

相关文章

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

S3签名URL有效期怎么设置更加安全

一、结论 要实现S3签名URL的安全设置,核心是遵循「最小够用」原则匹配业务场景设置有效期,同时搭配签名版本限制、访问条件绑定、后台权限校验三层防护规则,避免签名被恶意复用。无需复杂改造即可通过兼容S3的对象存储服务实现自动安全配置,进一步降低操作成本。

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

网站接入S3对象存储的具体步骤是什么

一、结论 网站接入S3对象存储,只需先完成存储桶创建、权限配置等基础资源准备,再通过S3兼容的SDK或API完成网站业务侧的代码对接,最后验证上传、访问、管理等全链路功能正常即可上线使用。整个流程不需要对现有网站架构做大幅调整,新手也可以在12小时内完成全流程操作。

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

S3协议是什么主要的应用场景有哪些

一、结论 S3协议是亚马逊2006年推出的对象存储访问标准接口,目前已经成为全球云存储领域的事实通用标准,主要应用于静态资源托管、大文件分发、AI数据存储、企业数据备份归档等全场景非结构化数据存储需求。

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

S3对象存储接入时怎么配置CORS跨域规则

一、结论 配置S3对象存储的CORS跨域规则,只需登录对应服务的管理控制台,找到目标存储桶的跨域配置入口,按业务需求填写允许的源站、请求方法、请求头等参数后保存即可生效,全程无需修改前后端核心业务代码,普通用户5分钟内即可完成操作。