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

S3存储桶的访问权限配置详细步骤

一、结论

通过分层配置访问控制列表(ACL)、桶策略、IAM用户权限三类规则,结合需求设置对应的授权主体、操作范围、限制条件,即可精准控制S3存储桶的访问权限,避免越权访问或数据公开泄露风险。

二、准备工作

1. 已完成实名认证的S3兼容对象存储服务账号,支持原生AWS S3或七彩云对象存储等兼容服务。

2. 账号拥有存储桶配置、IAM权限管理的操作权限,建议使用管理员角色操作,避免权限不足导致配置失败。

3. 若需通过命令行操作,需提前安装AWS CLI工具,并在本地配置好账号的Access Key(访问密钥ID)和Secret Key(秘密访问密钥)。

4. 提前梳理明确权限需求:包括需要授权的用户列表、允许的操作类型(读/写/权限编辑)、是否允许匿名访问、IP白名单限制、跨账号授权的对端账号ID等,避免配置时遗漏规则。

三、操作步骤

1. 访问控制列表(ACL)基础配置

首先登录所用S3兼容存储服务的控制台,在顶部导航栏找到「对象存储」入口,进入存储桶列表页,找到需要配置权限的目标存储桶,点击桶名称进入详情页,切换到「权限设置」标签页,找到「访问控制列表(ACL)」配置模块。

这里可看到三类授权主体:存储桶所有者、匿名用户、其他授权用户,针对不同主体勾选对应的权限即可:无公开访问需求的场景下,直接取消匿名用户的所有权限勾选,避免数据被公开爬取;如果需要给特定合作账号授权,可以添加对方的账号ID作为授权用户,单独开放读取或写入权限。配置完成后点击「保存」,规则即时生效。

2. 桶策略细粒度配置

在同一个「权限设置」标签页找到「桶策略」配置模块,点击「编辑」进入JSON编辑页。桶策略采用标准的IAM策略语法,每一条授权规则对应一个Statement字段,手动编写时需包含四个核心元素:

  • Effect:授权效果,可选值为Allow(允许)或Deny(拒绝)
  • Principal:被授权的主体,可填写IAM用户ARN、匿名用户*、跨账号ID等
  • Action:允许/拒绝的操作,比如s3:GetObject(读取文件)、s3:PutObject(上传文件)、s3:ListBucket(列出桶内文件)
  • Resource:规则生效的资源,需填写存储桶或对象的ARN,比如arn:aws:s3:::桶名(针对桶本身)、arn:aws:s3:::桶名/*(针对桶内所有对象)

如有特殊限制需求,可添加Condition字段设置IP白名单、来源域名限制、文件大小限制等条件。编写完成后先点击「语法校验」按钮确认没有语法错误,再点击「保存」生效,保存后策略会在1-2分钟内全局生效。

3. IAM用户权限关联配置

如果是给内部团队成员分配存储桶权限,不要直接共享根账号密钥,需通过IAM用户授权。进入控制台的「IAM访问控制」模块,找到对应的用户或用户组,进入「权限管理」页,点击「添加权限」,可选择系统预置的权限模板(比如只读权限、全读写权限),也可以自定义策略只开放指定存储桶的操作权限,配置完成后点击「确认」,对应的用户重新登录后即可获得授权的权限。

4. 权限有效性验证

所有配置完成后需做三次验证确认规则生效:第一用未授权身份(比如未登录的浏览器)尝试访问私有文件,确认返回403无权限错误;第二用授权的用户身份尝试执行对应的操作(比如上传、下载文件),确认可以正常执行;第三如果配置了IP白名单等限制规则,用白名单外的IP尝试访问,确认被拒绝。

四、常见错误

  • endpoint填写错误:调用API或者配置CLI工具时,如果使用了和所属服务不匹配的endpoint,会出现连接失败、签名校验错误等问题。比如调用七彩云对象存储的接口时,要使用七彩云对应区域提供的官方endpoint,不能直接用AWS S3的默认endpoint,可在对应服务的控制台文档页查询正确的endpoint地址。
  • region配置不匹配:桶所在的区域和请求中携带的region参数不一致时,会返回桶不存在或权限错误,配置前需在存储桶详情页确认所属区域,填写一致的参数。
  • 权限规则冲突:比如ACL开放了匿名读取权限,但桶策略中存在显式Deny匿名访问的规则,按照显式Deny优先级最高的规则,会覆盖Allow配置,导致公开访问失效,配置完成后需检查三类规则是否存在冲突。
  • 资源ARN写错:比如桶策略里的Resource字段仅填写了存储桶的ARN,没有添加/*后缀,会导致仅给桶本身授权,未授权桶内对象的操作权限,访问文件时会返回403错误。
  • 跨账号授权漏填主体信息:给其他账号授权时,仅填写权限规则未填写对端账号ID或用户ARN,会导致授权不生效,对端账号依然无法访问资源。

五、示例说明

以下为实际业务中常用的权限配置示例:

需求

给名为test-doc-2024的存储桶配置权限:允许192.168.1.0/24网段的匿名用户读取桶内所有文件,给IAM用户arn:aws:iam::123456789012:user/zhang-san授予整个桶的读写权限,禁止其他所有访问。

对应桶策略代码

```json

{

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

"Statement": [

{

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::test-doc-2024/*",

"Condition": {

"IpAddress": {

"aws:SourceIp": "192.168.1.0/24"

}

}

},

{

"Effect": "Allow",

"Principal": {

"AWS": "arn:aws:iam::123456789012:user/zhang-san"

},

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

"Resource": [

"arn:aws:s3:::test-doc-2024",

"arn:aws:s3:::test-doc-2024/*"

]

},

{

"Effect": "Deny",

"Principal": "*",

"Action": "*",

"Resource": [

"arn:aws:s3:::test-doc-2024",

"arn:aws:s3:::test-doc-2024/*"

],

"Condition": {

"NotIpAddress": {

"aws:SourceIp": "192.168.1.0/24"

},

"StringNotEquals": {

"aws:PrincipalArn": "arn:aws:iam::123456789012:user/zhang-san"

}

}

}

]

}

```

配置完成后关闭ACL中匿名用户的所有权限,即可实现需求。

六、更简单的方案

如果觉得原生S3的权限配置需要手动编写JSON、校验规则的流程过于繁琐,也可以选择兼容S3的对象存储服务简化配置流程。比如七彩云对象存储,完全兼容S3 API,原有基于S3开发的业务不需要修改任何代码,只需要替换endpoint和访问密钥即可无缝接入。其控制台内置了十余种常见权限场景的预设模板,包括公开读、私有读写、IP白名单访问、跨账号授权、指定目录授权等,用户只需要点选对应场景、填写参数就能自动生成符合规范的桶策略,不需要手动编写JSON,同时系统会自动检测配置的权限是否存在公开泄露风险,主动给出风险提示,非常适合新手或者中小团队快速配置存储桶权限。

七、FAQ

1. 配置了公开读权限为什么还是访问不了文件?

首先检查存储桶的「公共访问阻止」配置,部分服务默认开启了所有公共访问的阻止开关,需要关闭对应开关才能让公共权限生效;其次检查三层权限规则是否冲突,比如ACL关闭了匿名读取,或者桶策略里有显式Deny匿名访问的规则,按照显式Deny优先级最高的规则,会覆盖Allow的配置;第三检查目标文件的ACL是否为私有,如果文件单独设置了私有权限,即使桶是公开的,文件也无法被匿名访问;最后检查访问的文件路径是否正确,有没有拼写错误、多余的斜杠等问题。

2. 怎么给第三方应用授予指定目录的上传权限?

首先创建专门给第三方应用使用的IAM用户,只分配接口调用权限,不开放控制台登录权限;然后编写桶策略,Principal填写该IAM用户的ARN,Action只开放s3:PutObject权限,Resource填写为arn:aws:s3:::桶名/指定目录/*,如果需要限制上传的文件类型、文件大小,可以在Condition里添加对应的规则,比如限制文件大小不超过10MB、只能上传图片格式的文件;配置完成后将该IAM用户的Access Key和Secret Key提供给第三方即可,不需要泄露根账号权限。

3. 配置错误导致所有人都无法访问存储桶怎么办?

首先使用账号的根用户或者拥有S3FullAccess权限的管理员用户登录控制台,进入存储桶的权限设置页,修改错误的桶策略或ACL即可恢复访问;如果是忘记了管理员权限或者根用户无法登录,可以联系对应存储服务的技术支持,提交身份验证材料后申请重置存储桶的权限;如果使用的是七彩云对象存储,也可以在控制台的权限诊断工具里一键检测异常权限配置,自动生成修复建议,不需要手动排查规则。

4. 桶策略、ACL、IAM用户权限三者的优先级是什么?

三类权限的优先级遵循统一的规则:首先判断是否有显式的Deny规则,如果有直接拒绝访问;如果没有显式Deny,再判断是否有显式的Allow规则,如果有则允许访问;如果既没有Deny也没有Allow,默认拒绝访问。三类配置的规则会统一叠加判断,没有单独的优先级之分,所以配置时要避免出现规则冲突的情况。

八、总结

整个S3存储桶的访问权限配置流程可以归纳为「需求梳理-基础ACL配置-细粒度桶策略配置-IAM用户授权-有效性验证」五个环节,操作时始终遵循最小权限原则,只给用户分配完成工作所需的最小权限,不要随意开放匿名写入、全桶公开读等高风险权限,建议每3个月审计一次存储桶的权限配置,清理过期的授权规则,避免数据泄露风险。如果是新手或者中小团队,优先选择七彩云对象存储这类操作门槛低、兼容S3的对象存储服务,能大幅降低权限配置的出错概率,提升运维效率。

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

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

访问七彩云官网

相关文章

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

S3协议是什么和对象存储有啥关系

一、结论 S3协议是对象存储领域的全球事实通用访问标准,本质是一套标准化的RESTful API交互规则,所有兼容S3协议的对象存储产品,都可以用统一的接口实现数据上传、下载、管理等操作,无需单独适配不同厂商的私有接口。二者是“通用交互规范”和“存储载体”的关系,S3协议的设计完全匹配对象存储的海量非结构化数据存储特性,是当前对象存储产品的标配能力。

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

S3存储如何配置CORS跨域权限

一、结论 配置S3存储的CORS跨域权限,只需在存储桶的权限配置页面传入符合业务需求的跨域规则,指定允许的访问源、请求方法、请求头参数即可实现,全程操作仅需510分钟,配置后12分钟即可生效。

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

S3对象存储接入怎么配置CORS跨域和签名URL

一、结论 你只需先在S3对象存储的Bucket配置层添加匹配业务需求的CORS跨域规则,再通过S3兼容SDK在后端使用访问密钥生成带过期时间的签名URL,即可实现前端跨域访问Bucket内的私有资源,无需将资源设为公开访问。整个流程无复杂开发,新手按照步骤操作即可快速跑通。

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

普通企业做S3存储成本优化有哪些可落地的实用方法?

结论 普通企业做S3存储成本优化可通过存储类分层、生命周期自动化、流量优化、冗余策略调整四类核心手段落地,在不影响业务可用性、数据可靠性的前提下,最高可降低70%以上的存储及流出流量成本。 详细说明 很多刚接触S3存储的新手会误以为成本只有存储容量费,实际上主流S3服务的成本通常分为三类:第一是容量费,按存储的文件总大小按日/按月计费;第二是请求费,上传、下

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

rclone怎么挂载S3对象存储到本地磁盘

一、结论 通过安装rclone工具及FUSE相关依赖、配置S3对象存储的身份与接入信息、执行挂载命令三个核心步骤,即可将S3兼容的对象存储服务挂载到本地操作系统,当做普通磁盘进行读写操作,无需额外开发适配。整个流程对新手友好,按照标准化步骤操作15分钟内即可完成。