数据边界

数据边界规定:什么数据允许出现在哪一层。它是这套系统里最硬的一条规则——产品能做到什么,上限由它决定,而不是由技术可行性决定。这一页给出分层的允许清单、受控过境的登记制度,以及判断一个新功能是否越界的方法。

// 一句话理解

平台只持久化「关于数据的数据」。能够还原客户业务内容的字节,只允许走已登记的受控过境流,不得落入平台的任何存放层。

分层允许清单

允许禁止
客户运行时
客户自己的服务器
客户的全部原始数据:文件、对话、业务系统记录 把原始数据外送到平台的任何一层
平台数据库
任何环境
平台元数据、运行状态、计数与聚合值、脱敏摘要、审计元数据 客户原始文件内容、业务系统原始记录、对话原文、任何凭证与连接串
代码仓库 代码、文档、演示用的基线数据 密钥、环境变量文件、任何数据库文件、客户原始数据、云凭据、私钥
日志 路由、状态码、耗时、请求标识;服务端的错误名与堆栈 凭证值、文件内容、对话原文;错误消息里拼接凭证或带凭据的地址
缓存与临时流 元数据缓存、上传会话簿记、活动流的实时中继(不写持久键) 密钥、文件内容;把实时中继当作缓存、队列或补发的真源

受控过境:例外必须登记

有些内容确实必须经过平台才能被看到——例如工作台里的对话消息、排障时查看的运行时日志、预览一个被分享的文件。这些属于过境:内容在响应里出现、在浏览器里可见,但不写入任何存放层。

过境不是默认允许的行为,而是一份显式清单。每一条过境流在登记时必须写清楚四件事:

  1. 过境什么内容。具体到数据类型,不能写「相关数据」。
  2. 为什么必须过境。如果这件事可以在客户侧完成,它就不该过境。
  3. 谁能看见。身份档位与权限裁剪规则。
  4. 留什么痕。每次查看写入台账,evidence 只记录元数据——文件名、行数、时间窗、长度——不记录内容本身。
// 判断方法

要判断一个新功能是否越界,问一个问题:如果平台的数据库被完整导出,能从中还原出客户的什么业务内容?答案必须是「什么都还原不出来」。任何让答案变成别的内容的设计,都需要重新设计,而不是加一层加密了事。

窄通道与直连地址

「不落库」在工程上会遇到一个现实问题:大文件怎么办?答案是不让字节穿过平台。需要下载或预览时,平台签发一个限时的直连地址,浏览器直接从存储取数据,平台只经手这个地址本身。这条设计同时解决了两件事——边界不被穿透,以及平台不成为大文件传输的瓶颈。

投影:可重建的元数据

客户运行时可以主动把一部分状态投影到平台,让控制台不必每次都实时连线才能显示概况。投影的准入条件很严:

为什么这条边界值得这么麻烦

把边界画在这里,代价是很多功能要绕路实现——不能简单地把数据同步到平台再做处理。换来的是三件事,而这三件事恰好是企业客户真正在意的:

相关阅读