私有文件签名访问

私有文件不能裸奔

私有文件(合同、私密附件)如果直接暴露对象存储地址,等于「URL 猜中就能下载」。即使加长随机串,也只是「靠 URL 复杂换安全」,不可靠。

正确做法是签名 URL:

GET /files/{file_id}/download-url

业务服务校验用户权限后,生成一个短期有效的 CDN 签名地址。

签名 URL 里有什么

签名 URL 通常包含:

  • 文件路径(只允许访问这一个对象)。
  • 过期时间(如 5 分钟,到期失效)。
  • 用户范围 / 权限约束。
  • 防盗链条件(来源、Referer 白名单)。
  • HMAC 签名值。

用户拿着签名 URL 去 CDN,CDN 验签通过才放行。签名过期后,URL 作废,必须重新申请。

完整的私有访问链路

私有文件下载

用户请求下载私有文件
1 · 判断

校验用户权限

拥有者 / 协作者 / 指定角色?
2 · 动作

生成短期签名 URL

限定文件、过期时间、来源
3 · 动作

用户经 CDN 访问

CDN 验签,命中缓存直接返回
4 · 判断

签名过期后失效

需重新申请,杜绝长期有效地址
5 · 结果

记录下载审计

用户、文件、时间、来源
加速与鉴权两不误

与访问模型的配合

签名 URL 是「私有 / 临时 / 隔离」文件的分发手段,配合第 7 章的访问模型:

  • 公开文件:普通 CDN 长缓存,不需要签名。
  • 私有文件:业务鉴权 + 短期签名 URL。
  • 临时文件:签名 + 过期即删。
  • 隔离文件:拒绝普通访问,只有审计人员能处理。

安全要点

  • 签名密钥高强度、定期轮换。
  • 签名 URL 里不含敏感业务信息(它就是临时通行证)。
  • 下载日志与签名发放日志都要记录。

小结

私有文件的安全 = 「业务服务控制发放 + CDN 验签 + 短期过期 + 审计」。签名 URL 让你既能享受 CDN 加速,又能保留业务鉴权。

下一节看 CDN 回源保护——缓存失效时怎么防止回源风暴打垮源站。