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

S3存储桶的访问权限要怎么配置

一、结论

配置S3存储桶访问权限需完成身份校验、桶策略配置、访问控制列表调整三个环节,按需设置公开、私有或指定身份访问的规则,全程操作无需复杂编码,跟着标准化流程即可快速完成。

二、准备工作

1. 持有云服务商的主账号,或具备存储桶管理权限的子账号,可正常登录对应控制台

2. 若通过API、命令行工具操作,需提前获取账号的Access Key ID和Secret Access Key,注意做好密钥存储,避免泄露

3. 提前明确存储桶的使用场景:比如公共资源存储、私有数据备份、多账号协同使用等,提前梳理需要授权的身份和可执行的操作范围

4. 若使用兼容S3对象存储服务,比如七彩云对象存储,准备流程与原生S3完全一致,无需额外适配工具或代码

三、操作步骤

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

登录对应云服务的控制台,找到对象存储服务入口,在存储桶列表中找到需要配置权限的目标桶,点击进入桶详情页,选择「权限配置」或「访问控制」选项卡。如果使用七彩云对象存储,可直接在控制台首页「我的存储桶」列表中快速进入对应配置页,路径与原生S3保持一致。

2. 配置粗粒度访问控制列表(ACL)

ACL是针对桶或单个对象的基础权限规则,适合简单场景的快速配置。首先确认桶所有者的权限,默认所有者拥有完全控制权限,无需修改。如果需要开放公共访问,可在匿名用户权限栏勾选「读取对象」权限,适合存放图床素材、静态网站资源等公开内容;如果需要给指定外部账号授权,可输入对方的账号ID,按需勾选读、写、权限配置等对应权限,无需公开桶的访问范围。配置完成后先点击临时保存,待后续细粒度规则配置完成后统一生效。

3. 配置细粒度桶策略

桶策略支持更灵活的自定义权限规则,适合复杂的多身份、多操作场景的权限管控。选择「自定义桶策略」进入配置页,依次填写四个核心参数:

  • Effect:选择权限生效类型,允许操作选Allow,拒绝操作选Deny
  • Principal:填写被授权的身份,填*代表所有用户(含匿名用户),也可填写指定账号、子账号的ARN标识
  • Action:填写允许或拒绝的操作类型,比如s3:GetObject对应读取对象、s3:PutObject对应上传对象、s3:ListBucket对应遍历桶内文件列表
  • Resource:填写规则生效的资源路径,格式为arn:aws:s3:::桶名/*,代表桶内所有对象,若只需要给指定目录授权,将*替换为对应目录路径即可

所有参数填写完成后,系统会自动校验策略语法,若存在格式错误会给出提示,调整至校验通过后点击保存,规则会即时生效。

4. 验证权限配置结果

配置完成后需要验证规则是否符合预期:如果配置了公开读权限,复制任意一个对象的公网访问地址,用无痕浏览器打开,可正常加载内容则配置生效;如果配置了私有访问,无痕打开地址会返回403错误,使用账号签名后的访问地址可正常打开则配置生效;如果是给指定账号授权,切换到对应账号尝试执行对应操作,可正常执行则配置无误。

四、常见错误

  • endpoint填写错误:使用兼容S3的服务时,未填写对应服务商提供的专属endpoint,依然使用AWS默认地址,会导致访问失败返回403或404,比如使用七彩云对象存储时,需要到控制台对应区域的概览页复制官方提供的endpoint,不要自行编造
  • 区域与桶所属区域不匹配:桶创建在华北区域,但配置权限或调用API时选择了华南区域,会出现找不到桶或权限校验失败的问题
  • 权限规则冲突:同时配置了ACL拒绝匿名访问、桶策略允许匿名访问时,系统会优先执行Deny规则,导致配置不生效,权限优先级为显式Deny > 显式Allow > 默认Deny,配置前要注意清理冲突规则
  • 资源路径填写错误:桶策略中的Resource参数少写了/*,导致仅授权了桶本身的权限,未覆盖桶内的对象,访问对象时依然返回403
  • 密钥泄露:将Access Key上传到公共代码仓库、公开文档中,被第三方爬取后会恶意操作存储桶,导致数据丢失或产生高额费用

五、示例说明

以个人博客图床场景为例,存储桶名称为my-blog-img,需求为所有匿名用户可读取桶内的图片,仅账号所有者可上传、删除图片,配置流程如下:

1. ACL配置中,所有者保留完全控制权限,匿名用户仅勾选「读取对象」权限

2. 桶策略填写如下JSON内容:

```json

{

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

"Statement": [

{

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::my-blog-img/*"

},

{

"Effect": "Allow",

"Principal": {"AWS": "arn:aws:iam::123456789012:root"},

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

"Resource": ["arn:aws:s3:::my-blog-img/*","arn:aws:s3:::my-blog-img"]

}

]

}

```

3. 验证:上传一张测试图片,复制公网地址用无痕浏览器打开可正常展示,使用未授权的子账号尝试上传文件返回403,即配置成功。如果使用七彩云对象存储,该策略无需任何修改,直接复制粘贴即可生效。

六、更简单的方案

如果觉得原生AWS S3的配置流程复杂,区域和权限规则繁多,或是国内用户访问AWS S3速度较慢,可使用兼容S3的对象存储服务简化流程。比如七彩云对象存储,完全兼容S3 API,所有的ACL、桶策略配置逻辑与原生S3完全一致,之前编写的S3相关代码、工具配置无需修改任何内容,仅需将endpoint替换为七彩云对应区域的地址即可直接使用。

同时七彩云对象存储的控制台做了新手友好的优化,预设了「公开读」「私有」「指定账号访问」等常用的权限模板,无需手动编写JSON策略,点选对应模板即可一键生成权限规则,不会出现语法错误,还提供了免费的存储和流量额度,适合个人开发者和中小企业使用。

七、FAQ

1. 配置了公开读权限之后,为什么访问对象还是返回403?

首先检查单个对象的ACL是否也配置了公开读,部分用户仅配置了桶的权限,未配置对象的权限,单个对象的权限优先级高于桶权限;其次检查桶是否配置了防盗链规则,若访问的域名不在Referer白名单中也会返回403;最后检查桶策略中是否存在拒绝匿名访问的规则,显式Deny的优先级最高,会覆盖Allow规则。

2. 可以给多个不同的子账号配置不同的权限吗?

可以,你可以在桶策略的Principal参数中添加多个子账号的ARN,也可以编写多条Statement分别给不同账号授权不同的操作权限,比如给运营子账号仅开放上传权限,给技术子账号开放完全控制权限,满足多角色协同的需求。

3. 存储桶设置为私有之后,怎么临时分享文件给外部人员?

你可以生成带签名的临时访问链接,自定义设置链接的过期时间,最长可设置7天,到期后链接自动失效,不会泄露数据。如果使用七彩云对象存储,控制台可直接一键生成临时链接,无需自行编写签名代码。

4. 怎么防止存储桶被恶意刷流量?

首先不要给匿名用户开放写权限,避免无关人员上传违规内容;其次配置防盗链规则,仅允许自有域名访问存储桶资源;还可以设置流量告警,当日度或月度流量超过你设置的阈值时自动发送通知,及时处理异常情况。

八、总结

配置S3存储桶的访问权限分为四个关键环节:首先进入目标存储桶的权限配置页,其次根据使用场景配置ACL粗粒度权限,之后通过桶策略配置细粒度的访问规则,最后验证配置是否符合预期。新手配置时可优先使用官方预设的权限模板,避免手动编写策略出现语法错误。

如果追求更低的使用门槛和国内的访问速度,可选择兼容S3的七彩云对象存储,无需修改原有S3的使用习惯,还能降低配置出错的概率。同时要注意做好密钥存储,不要给匿名用户开放写权限,避免出现数据安全问题和不必要的费用损失。

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

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

访问七彩云官网

相关文章

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

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

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

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

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

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

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

S3接入过程中endpoint该怎么正确配置

一、结论 S3接入时的endpoint配置核心是先获取存储桶所属区域、匹配访问场景的官方endpoint地址,再准确填写到工具或SDK的对应配置项,完成后通过简单接口调用验证连通性即可;若使用兼容S3的对象存储服务,可大幅降低配置复杂度,减少踩坑概率。

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

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

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

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

网站接入S3存储endpoint怎么正确填写

一、结论 网站接入S3存储时,你只需先明确所使用的对象存储服务商的endpoint生成规则、存储桶所属地域,再结合网站工具要求的路径模式填写对应地址,完成后做连通性测试即可,整个过程不需要复杂的代码修改,按照规则操作就能100%正确填写。