这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
文件权限控制
权限不是 URL 复杂度
很多系统用「很长的随机 URL」来保护文件,这是靠隐蔽换安全,不可靠:URL 一旦被分享、被爬取、被泄露,文件就暴露了。
文件权限需要明确的访问模型,并且由服务端控制。
四类访问级别
访问模型
任何人可访问公开图片、下载资源
公开CDN 长缓存,公开 URL
拥有者 / 协作者 / 指定角色合同、私密附件
私有短期签名 URL,服务端鉴权
短时间内可访问验证码图片、临时分享链接
临时过期自动失效并删除
仅审计 / 管理员可处理命中风险的被拦截文件
隔离禁止普通访问,隔离处置
权限校验发生在业务服务生成下载 URL 之前。即使文件最终由 CDN / 对象存储提供,也要由业务服务控制签名生成,而不是直接暴露存储地址。
权限校验的时机
权限校验发生在业务服务生成下载 URL 之前:
- 用户请求
GET /files/{file_id}。 - 业务服务校验用户身份、文件归属、访问级别。
- 通过 → 生成短期签名 URL(私有文件)或返回公开地址(公开文件)。
- 不通过 → 拒绝,不暴露文件地址。
即使文件最终由 CDN / 对象存储提供,也要由业务服务控制签名生成——存储层永远不直接暴露给客户端。
权限与元数据的关系
访问级别存哪里?存元数据表(access_level 字段),而不是存文件名或路径里:
file_metadata.access_level = public | private | temp | isolated
这样权限变化只需要改元数据,不需要移动文件、改 URL。
动态权限
有些文件权限会变化(如「审核通过前私有,通过后公开」):
- 权限变化要立即生效:私有→公开,刷新或版本化;公开→私有,撤销已发签名。
- 权限变化要有审计(谁、何时、为什么改)。
一句话
文件权限 = 明确的访问模型 + 服务端控制 + 元数据承载。URL 复杂化只是辅助,不是安全本身。
下一节看治理链路的最后一块:审计日志与风险处置。
发现内容有问题?
告诉我们哪里需要改进。
