ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

OSS对象存储

OSS对象存储

目录

一、基础定义

二、四种企业常用方案对比

三、Mermaid 时序图

下载预览:预签名URL

上传:STS前端直传(互联网项目标配)

备选上传:后端接收文件再上传OSS(敏感文件)

备选读取:后端代理转发(高敏感文件)

四、核心重点 & 工程风险点

五、常见误区澄清


一、基础定义

OSS(对象存储服务):以对象(Object)为单位存储二进制文件(图片、PDF、视频、Excel、压缩包等),不存储结构化业务数据(用户信息、订单等放数据库)。

  • Object:文件本体 +objectKey(文件在OSS内唯一路径标识)
  • 配套设计:数据库只保存文件元数据(objectKey、文件名、上传人、大小等);OSS只保存实体文件。

核心安全原则:永久AccessKey(AK)只存放后端,前端永远不能持有永久AK。

二、四种企业常用方案对比

方案

读写角色

流量路径

适用场景

优缺点

预签名URL(下载预览,你们当前方案)

后端鉴权+生成签名;前端拉取文件

前端 → OSS

图片预览、附件下载

不占用后端带宽;单文件粒度授权;链接泄露后有效期内可访问

STS前端直传(上传主流)

前端拿临时凭证,前端上传文件

前端 → OSS

用户头像、普通附件上传

大文件上传不压后端;后端无法在上传前校验文件内容

后端接收文件再上传OSS

前端传文件给后端,后端上传OSS

前端→后端→OSS

敏感文档、后台批量导入、需要前置文件校验

文件可提前校验、杀毒;占用后端带宽,大文件易瓶颈

后端代理转发读取

前端请求后端,后端拉取OSS文件流返回前端

前端→后端→OSS

高度涉密文件,内部小系统

完全隐藏OSS地址;后端带宽压力大

行业最通用组合:上传使用STS前端直传;下载预览使用预签名URL

三、Mermaid 时序图

下载预览:预签名URL

上传:STS前端直传(互联网项目标配)

备选上传:后端接收文件再上传OSS(敏感文件)

备选读取:后端代理转发(高敏感文件)

四、核心重点 & 工程风险点

  1. 鉴权逻辑必须写在后端OSS本身不认识业务系统用户角色;不能只依赖OSS签名做权限控制。必须由后端校验用户和文件的权限关系,鉴权通过才生成签名。
  2. objectKey 存储规范 数据库持久化字段只存原始objectKey,不要持久化预签名URL;预签名URL是动态生成、带时效的临时地址。
  3. 密钥安全

永久AK只放在后端配置中心/环境变量,禁止硬编码、禁止给到前端;

RAM子账号最小权限原则:只授予对应Bucket的必要读写权限,不要使用root账号AK。

  1. 时效控制

预签名URL:预览下载一般设置 5~30分钟有效期;不要设置长时间有效期;

STS临时凭证:按需设置有效期,限制可上传的OSS目录前缀,缩小权限范围。

  1. 可选加固方案 OSS防盗链(Referer白名单)、CDN加速访问、上传后异步内容审核。

五、常见误区澄清

  1. objectKey = 完整访问URL objectKey只是OSS内文件路径字符串;URL(带签名)每次访问实时生成。
  2. 前端自己拼接预签名URL 签名计算依赖永久AK,只能后端SDK生成。
  3. OSS自带业务权限系统 OSS只识别RAM权限、签名;业务权限(A用户能不能看B的文件)完全由业务后端实现。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进