安全与隐私白皮书(总览)第 10 章
第 10 章 日志、监控与事件响应
FileBolt 的可观测性(observability)必须与零知识边界一致:系统需要能够定位故障、发现攻击、量化性能, 同时不引入新的敏感数据泄露面。本章定义记录哪些事件、明确不记录哪些信息、告警与异常检测方法, 以及安全事件响应(IR)流程与对外沟通原则。
10.0 本章摘要
- SHOULD:日志与监控覆盖运行与安全所需事件,并尽量采用聚合与采样,减少原始明细留存。
- MUST NOT:任何日志、APM、错误上报不得包含 CEK、URL fragment(
location.hash)或包含 fragment 的完整 URL。 - MUST NOT:不得记录明文内容、解密后的片段、或可推导密钥材料。
- MUST:对枚举、爆破、刷量与异常请求模式建立检测与告警,并具备遏制措施。
- MUST:建立事件响应流程(分级、遏制、取证、修复、复盘与对外沟通)。
10.1 记录哪些事件(最小化)
系统日志与监控 SHOULD 仅覆盖“运行与安全所必需”的事件集合,避免把用户内容或敏感凭证带入可观测系统。 推荐将事件分为生命周期、鉴权、存储/网络与安全防护四类,并尽可能聚合。
10.1.1 传输生命周期事件
- 创建 transfer(生成 transferId)
- 上传分片完成(以密文层面记录,不记录明文)
- manifest 写入/更新
- 到期清理、用户删除/撤销(含清理任务触发与完成)
- 下载开始/完成(以密文下载层面度量)
10.1.2 认证与授权事件
- 短期访问 token 签发、校验失败(作用域不匹配、过期、撤销后拒绝等)
- 长期登录 token 校验失败(管理操作拒绝)
- 可疑访问模式:异常高频的 401/403/404
注:记录“结果与原因码”即可,MUST NOT 记录 token 原文、Authorization header 原文或签名参数原文。
10.1.3 系统健康与性能指标
- 请求延迟(p50/p95/p99)、错误率、吞吐
- 对象存储读写失败率、回源失败率、重试次数
- 边缘节点异常、队列积压、后台清理任务成功率
- 带宽与流量趋势(按聚合维度)
10.1.4 安全防护事件
- 速率限制触发、WAF/防火墙规则命中
- 疑似枚举/爆破行为的阈值触发
- 异常并发与刷量模式(同来源大量并发、同资源异常热度)
10.1.5 聚合与采样
- SHOULD:按分钟/小时聚合计数与延迟分位数,减少明细日志。
- SHOULD:对高频成功请求进行采样,仅保留错误与异常路径的必要细节。
- SHOULD:为异常事件保留稳定的分类字段(例如 eventType、reasonCode),方便审计与机器分析。
10.2 明确不记录哪些信息(CEK、fragment、敏感凭证)
维持零知识承诺的关键之一,是在所有可观测系统中持续执行“敏感数据禁止记录”策略。 该策略必须覆盖:服务端日志、APM、错误上报、第三方监控、客户端日志与浏览器控制台输出。
10.2.1 服务端侧 MUST NOT 记录
- CEK(内容加密密钥)及任何可推导材料
- URL fragment(
#...)、location.hash,以及包含 fragment 的完整 URL - 明文内容:文件明文、预览内容、解密后的片段或任何明文摘要
- 敏感凭证原文:短期 token、长期 token、Authorization header 原文、签名 URL 的签名字段原文
若业务需要记录 URL 以排障:MUST 做清洗(移除 fragment;对敏感 query 做脱敏或完全移除),并在代码层强制执行(而非依赖人工约定)。
10.2.2 客户端侧 MUST NOT 记录
- 不得在生产环境打印
location.href(可能包含 fragment) - 不得在错误上报中包含包含 fragment 的 URL、CEK 或 noncePrefix 等敏感材料
- 调试日志与开发工具输出应默认关闭或最小化
SHOULD:在前端封装统一的日志/上报函数,内部先执行 URL 清洗与敏感字段过滤,再输出/上报。
10.3 监控指标与告警(可用性、性能、安全)
10.3.1 可用性与性能告警
- 错误率告警:5xx 激增、4xx 异常上升(需区分认证失败与滥用)
- 延迟告警:p95/p99 超阈值、地区性回源异常
- 存储告警:对象存储写入失败率上升、读取超时
- 清理任务告警:到期清理积压、删除任务失败重试过多
10.3.2 安全相关告警
- 速率限制命中率异常上升
- 同来源高频 401/403/404,疑似枚举/爆破
- 单资源下载带宽异常、并发异常,疑似刷量或盗链
- 关键策略变更(如 WAF 规则、CSP/响应头)应具备变更审计与告警(如适用)
10.3.3 告警治理
- SHOULD:告警分级(P0/P1/P2)与轮值/升级路径。
- SHOULD:对易误报指标设置消抖/窗口聚合,避免告警风暴。
- SHOULD:每个告警附带最小诊断信息(原因码、趋势图、受影响区域/路由),但不包含敏感数据。
10.4 异常检测与滥用识别(枚举、爆破、刷量)
文件传输服务天然面临枚举、爆破、刷量与资源滥用。本节给出可检测信号与应对策略原则。 具体阈值与策略需根据业务规模与误伤成本动态调整。
10.4.1 常见异常模式
- 枚举:短时间内大量探测 transferId / 资源路径,404/401/403 激增。
- 爆破:对短码/口令/令牌的高频尝试,失败率曲线异常。
- 刷量:同资源异常带宽、同来源大量并发连接、重复下载。
- 协议异常:不合理分片顺序、重复上传、频繁中断重试、异常 UA 模式。
10.4.2 处置策略(原则)
- SHOULD:速率限制、分级封禁、挑战机制(如适用)、按 ASN/地域/指纹动态策略。
- SHOULD:对误伤敏感的路径(正常用户可能高频下载)采用更温和策略(例如延迟、分段限速)。
- MUST:对处置应保留可审计的触发原因(原因码、阈值类别),并提供支持通道(如适用)。
10.5 事件响应流程(分级、遏制、取证、修复、公告)
FileBolt MUST 建立安全事件响应(Incident Response, IR)流程,以确保快速止损、可复盘、可透明沟通。 对于可能影响零知识承诺的事件(如 XSS、供应链注入、日志泄露 fragment 等),应作为最高优先级处理。
- 分级:按影响范围与严重度分级(例如 P0/P1/P2),明确升级路径与负责人。
- 遏制:快速隔离风险源(封禁攻击源、临时禁用相关功能、收紧策略、旋转令牌密钥等)。
- 取证与复盘:基于最小化日志与指标重建时间线;记录决策、影响、修复与后续改进。
- 修复与验证:补丁上线、回归测试、安全验证、必要时进行第三方扫描复测。
- 沟通与公告:在不扩大攻击面的前提下,对用户与公众透明说明;必要时发布状态页事件报告。
对外沟通中应明确:是否可能导致密钥材料泄露或明文暴露、影响范围、已采取措施、用户需要采取的行动(如有)。
10.6 数据保留与访问控制(最短可用保留期)
日志与监控数据本身也是敏感资产。应采用最短可用保留期与最小权限访问控制,减少泄露与滥用风险。
- SHOULD:为不同日志类型设置差异化保留期(错误与安全事件略长,成功请求明细更短或不保留)。
- SHOULD:日志与监控平台使用最小权限访问(RBAC),并保留访问审计。
- SHOULD:导出与共享日志时必须执行脱敏与最小化(禁止携带敏感凭证与可关联个人身份的信息)。
10.7 第三方监控与最小化集成原则
第三方 APM/错误采集工具可能在默认配置下收集 URL、请求头、表单字段与设备信息。 若使用第三方监控,必须确保其采集边界不破坏零知识承诺。
- MUST:下载/解密页不加载第三方脚本(与第 9 章一致)。
- MUST:第三方监控采集项必须显式配置:不采集 fragment、不采集敏感请求头原文、不采集明文内容。
- SHOULD:对上报的 URL 做统一清洗;对可能包含敏感字段的 payload 禁止上报或做强脱敏。
- SHOULD:优先使用服务端聚合指标替代客户端细粒度追踪,减少终端侧采集面。
10.8 相关 Claim IDs(预留)
本章涉及“敏感数据禁止记录、告警与事件响应、第三方监控约束”等声明。 对应 Claim IDs 将补充到 附录:Claim IDs 总表 中,并以总表为唯一权威入口。