审计日志的粒度有两种极端。一种是把每个字段的每次改动都记下来:某份答卷的某个分数,谁在几点几分从多少改成了多少;另一种只记关键动作,比如谁导出了谁的报告、谁批量下载了哪个班级的名单。两种都叫审计,回答的却是完全不同的问题。机构在配置系统前,得先想清楚自己更怕哪一类事故。两套都想要当然更完整,但存储、性能和查询成本会一起翻上去,多数机构最终还是要排个先后。
字段级变更日志防的是数据被悄悄改
如果担心的是内部人篡改分数、修改风险等级、把某个学生的红灯手动降级,那就需要记到字段。这类日志要能回答:改的是哪条记录的哪个字段、旧值和新值分别是什么、谁改的、什么时候改的。少了旧值和新值这一对,日志只能证明有人动过,却说不清动成了什么样,事后复核基本使不上劲。在纠纷里,能不能拿出改动前后的对照,常常决定了责任落不落得到具体的人。
操作级日志防的是数据被拿走
如果更担心的是数据外流,重点就不在字段,而在导出、下载、打印、批量查询这些动作。心理报告多是整份被带走的,改不改分数并不重要,关键是谁、在什么时间、把谁的报告导到了哪里。这类日志要覆盖导出范围和数据量,一次拉走三千份和查看一份,风险完全不是一个量级。
两者的存储代价和查询代价差很远
字段级日志的写入量会随编辑行为暴涨,一次批量订正就可能生成成千上万条变更记录,时间一长,日志表比业务表还大,查询也越来越慢。操作级日志稀疏得多,却要求每条都能精确定位到人和被访问对象。橙星云的做法是把两条线分开存:高频的字段变更进独立的变更流水,低频高危的导出查看单独建表并设更长的留存期,各自按各自的节奏归档。
审计日志自己也要防篡改
不论选哪条线,日志本身都得防着被改。能改分数的人若同时能删日志,留痕就成了摆设。稳妥的做法是把审计记录写进只追加、不可回改的存储,或同步到操作人无权触碰的独立系统里;查看和导出这些日志的权限,也要和被审计的业务权限分开,避免同一个人既是操作者又是唯一能看审计的人。日志能被谁改、能被谁看,本身就是审计能不能采信的前提。
心理数据场景下导出和查看比修改更值得记
回到心理测评本身,最敏感的风险不是分数被改了几分,而是一份完整报告落到了不该看的人手里。所以在预算和存储有限时,优先保证操作级日志记全、记准,再根据合规要求补齐关键字段的变更留痕。把有限的审计能力,压在最可能出事、也最难解释清楚的那一类动作上,比平均用力更划算。
