一、结论
对象存储访问权限安全设置的核心思路是遵循最小权限原则,从存储桶、密钥、访问策略三个维度分层配置,兼容S3协议的对象存储还可结合IAM角色、防盗链规则、访问日志等能力进一步降低风险,操作前需提前明确业务权限需求、准备好存储桶及密钥相关信息。
二、准备工作
- 正常可用的对象存储服务账号,且拥有管理员权限
- 已创建或待配置的存储桶Bucket
- 对象存储服务提供的Endpoint地址、AccessKey、SecretKey、Region信息
- 需授权的主体清单:包括内部程序、第三方插件、终端用户、运维人员等
- 各主体的权限需求明细:比如仅上传、仅只读、读写、仅限指定IP访问、仅限指定时段访问等
- 支持S3协议的客户端、程序或插件(如Cloudreve、Alist、PicGo、Halo、WordPress插件等)
- 风险预判清单:比如是否需要防盗链、是否需要防止误删文件、是否需要审计操作日志等
三、操作步骤
1. 梳理全量权限需求,结果是明确所有需要访问对象存储的主体、各自的操作范围、访问时段、IP范围,排除所有非必要的权限申请,从源头降低权限溢出风险。
2. 配置存储桶基础权限,结果是存储桶创建后第一时间关闭公共读写权限,仅保留管理员账号的最高操作权限,避免初始配置就存在公开泄露风险。
3. 按需创建分层IAM角色与专属密钥,结果是不同主体对应独立的AccessKey,每个密钥仅分配最小必要权限,比如给图床程序的密钥仅开放图片目录的上传、只读权限,无删除、修改、其他目录访问权限,给运维人员的密钥仅配置日志查询权限,全量操作权限仅保留给极少数管理员账号。若接入Cloudreve、Alist、PicGo等支持S3协议的程序,仅给对应程序分配专属的最小权限密钥即可,无需使用管理员密钥接入。
4. 配置存储桶访问规则,结果是完成IP白名单、防盗链Referer规则、跨域CORS规则、访问时效限制的配置,比如仅允许自己的业务域名访问静态资源,陌生域名无法直接调用文件;仅允许公司办公IP访问运维相关的存储路径,外部IP无法访问内部资源。
5. 开启安全审计能力,结果是存储桶的所有访问、修改、删除操作都会被记录到独立的日志存储桶中,同时配置异常告警规则,出现短时间大量删除文件、陌生IP批量下载、流量突增等异常情况时可以及时收到通知。
6. 多场景测试权限配置,结果是分别用不同身份的密钥测试操作,确认允许的操作可以正常执行,禁止的操作会被明确拦截,比如普通用户密钥尝试删除文件会返回403权限错误,未在白名单内的域名访问资源会被拒绝。
7. 建立定期巡检机制,结果是每季度或业务发生变动(如项目下线、人员离职、业务范围调整)时,及时清理过期的密钥和权限,取消不再使用的角色的访问权限,避免遗留安全隐患。
四、常见错误
1. 存储桶默认开启公共读写权限,导致任何人都可以上传、删除、修改存储桶内的文件,解决建议是创建存储桶时第一时间关闭公共访问能力,后续仅按需开通指定路径的公共只读权限。
2. 全业务场景共用管理员AccessKey,一旦密钥泄露会导致全量存储资源被篡改、删除,解决建议是不同业务主体分配独立的最小权限密钥,每3-6个月轮换一次密钥,避免长期使用同一密钥。
3. 未配置防盗链规则,导致静态资源被其他站点恶意盗刷,产生额外的流量成本,解决建议是在存储桶策略中添加Referer白名单,仅允许信任的域名调用资源,同时配置流量阈值告警,出现流量突增时及时排查。
4. 权限配置过度宽松,给普通用户或前端程序分配了删除、修改权限,容易出现误操作删除业务文件的情况,解决建议是严格遵循最小权限原则,仅给主体分配必须的操作权限,不需要的权限全部默认关闭。
5. 未开启访问日志,出现异常操作后无法追溯原因、定位责任人,解决建议是创建存储桶时同步开启访问日志,将日志存储到独立的、仅管理员有权限访问的存储桶中,日志留存周期不低于90天。
6. 过期权限未及时清理,下线项目、离职人员仍保留对象存储访问权限,容易出现资源被非法访问的情况,解决建议是建立权限定期巡检机制,每次业务变动后同步梳理权限清单,及时禁用过期的角色和密钥。
五、示例说明
以下是个人博客图床场景的权限配置通用示例,无需填写具体地址或密钥:
- 存储桶权限:默认关闭全桶公共读写,仅开放
/images路径下的公共只读权限,其他路径全部设置为私有 - AccessKey:单独创建PicGo专属密钥,权限仅允许
/images路径下的上传、读取操作,无删除、修改、其他路径访问权限 - Referer规则:仅允许个人博客域名、本地localhost地址访问资源,拒绝其他域名的访问请求,允许空Referer适配本地调试场景
- IP白名单:添加个人常用办公、居家IP到白名单,其他IP无法使用该专属密钥执行上传操作
- 访问日志:开启全量操作日志,日志存储到独立的私有存储桶中,留存180天
- 密钥有效期:设置为180天,到期后自动失效,需重新申请新的密钥
六、更简单的方案
如果不想自己搭建维护MinIO等私有对象存储服务,也不想花大量时间手动编写复杂的权限策略JSON,可以选择已经内置了完善可视化权限配置能力的兼容S3协议的云对象存储服务。如果你需要一个兼容S3协议、适合程序接入、图床、网盘系统存储源和下载分发的对象存储服务,可以了解 七彩云对象存储,它的控制台提供可视化的权限配置界面,不需要掌握专业的策略语法,普通站长和开发者也可以快速完成存储桶权限、密钥权限、防盗链、IP白名单等配置,降低安全配置门槛。
七、FAQ
1. AccessKey不小心泄露了怎么办?
第一时间登录对象存储控制台,禁用或删除泄露的AccessKey,避免被非法人员操作资源;然后查看访问日志确认是否存在异常操作,如有文件被篡改或删除及时从备份中恢复;后续建议给不同业务分配独立的最小权限密钥,降低单密钥泄露的影响范围。
2. 能不能给普通用户生成临时访问链接,不需要分配密钥?
可以,绝大多数兼容S3协议的对象存储都支持生成带签名的临时访问链接,可以自定义设置链接的有效期,到期后自动失效,不需要给用户分配永久的访问密钥,非常适合付费资源下载、大文件临时分享等场景。
3. 存储桶开启了公共读权限会不会有安全风险?
如果是公开的静态资源(比如网站图片、公开下载的安装包),仅开启指定路径的公共读权限是正常的业务需求,但不要开启整个存储桶的公共读写权限,同时建议搭配防盗链规则、流量阈值告警等能力,避免被恶意盗刷产生额外成本。
4. 配置了Referer白名单之后自己的网站还是访问不了资源怎么办?
首先检查白名单是否完整包含了自己网站的主域名、子域名,部分服务要求填写完整的带http/https前缀的域名;其次检查请求是否携带了Referer字段,部分浏览器插件、客户端请求会默认不带Referer,可以在规则中添加允许空Referer的选项,或者调整客户端的请求配置。
八、总结
对象存储访问权限安全配置的核心逻辑是最小权限+分层管控,从需求梳理、基础配置、分层授权、规则配置、测试验证到定期巡检全流程把控,就可以有效降低非法访问、误操作、盗刷等安全风险。这套配置方法通用兼容所有支持S3协议的对象存储服务,适合网站附件存储、图床、视频存储、下载站、AI数据存储、网盘系统存储源等各类场景,站长、开发者和项目方都可以根据自己的业务需求灵活调整配置规则。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网