未登记服务账户没有一直叫同一个名字。
当前日志里,它显示service_cache_17。
两年前服务器镜像中,它叫maintenance_ext。
更早一份冷备份里,技术员找到第三个名字:DF_Test_User。
三个账户标识符不同,底层唯一编号相同。
审计员把三张截图投到墙上,左边的字体已经旧到发虚,右边却是浮光当前系统的标准界面。夏弥隔着桌子看:“这不就是给同一把钥匙贴了三次标签?”
“标签会影响谁来查它。”审计员说,“临时测试账户会到期,维护账户会被信任,缓存任务通常没人会去问它有没有人用。”
顾云岚在后排没有说话。她认出了第二张界面,那是两年前她接手项目时经常查看的报表。自己看过报表,却没点开那一行最不起眼的名字。
像一个人换了三张工牌,却始终使用同一枚指纹。
年轻技术员将三张截图连成一条线,准备在报告里写“同一人持续操作”。审计员没有让他提交,先把“人”字圈出来。
同一个账户,不等于每一次都由同一个人使用。谁掌握过凭据,谁批准过接入,谁实际发出了指令,需要分别寻找记录;今天如果为了让故事好懂就把它们捏成一个人,明天任何一处对不上,都可能被用来否定整条调查。
技术员将结论退回“同一服务账户”。他有些不好意思,说自己最近也跟着看了不少舆论分析,脑子里已经替反派安排好了每一步。
江叙听见“安排”两个字,想起剪片时最危险的那种顺手。开头一个眼神,后面一段结果,中间缺少的动机仿佛会自己长出来。证据不是剧本,不能因为观众看懂了,就省掉实际发生的过程。
审计员让技术组另建一列,专门写目前不能得出的结论。顾云岚看着那一栏逐渐填满,知道公开时一定会被人嫌不够痛快,却仍然认为它比一份毫无空隙的漂亮故事可靠。
外部审计调取账户生命周期记录,发现平台正式目录只保留最近一次改名。早期两次变化没有进入常规审计,因为操作者使用了“迁移兼容”权限,这类权限在旧系统升级时允许批量重命名服务账户,不逐项触发告警。
DF可以解释成Data Flow,数据流。
唯实的会议附件里,却出现过另一个名称:“叠沸测试组”。昼沸早期内部项目名曾短暂使用“叠沸”,缩写也是DF。
账户创建时间在六年前。
那时顾云岚还没负责江叙项目,唯实是内容中心副主管,邵临的昼沸刚成为浮光外部舆情供应商。平台正在做第一次大规模直播系统升级,外部厂商能通过工单申请临时测试账户。
正常账户应在项目验收后注销。
它没有。
第一次改名发生在五年前,测试项目结束后三个月。DF_Test_User变成maintenance_ext,从临时账户伪装成外部维护服务。
第二次改名发生在两年前偷拍视频事件后,变成service_cache_17,看起来像一组无害缓存任务。
公馆首夜的八十七秒脚本,就是用第三个名字调用。
账户创建工单的正文已被删除,数据库只保留工单号。附件存储指向一个下线文档系统,平台认为原文件早已随系统退役清理。
审计员没有接受“已清理”。
他们找到当年迁移供应商。供应商合同要求保留验收快照七年,存储在离线磁带。磁带读取需要旧式设备,供应商只剩一台,还坏了磁头。
修复报价十九万元,预计两周。
报价单送到财务会议时,有人说:“十九万就为读一张旧磁带?现在一台新服务器才多少钱?”
外部审计员没有反问他一段隐私值多少钱,只把合同翻到保留期限那一页:“供应商承诺七年可读。设备修复若因对方未维护而产生,费用还要谈归属。现在不读,这项承诺就只剩纸。”
财务经理重新核算。十九万不是自动通过,费用归属也不能凭口头承诺决定。顾云岚坚持把申请列在信息安全整改项下,不能让片子里任何一个人为了查清被偷拍的事,牺牲自己的创作预算。
平台财务认为,为一个可能不存在的工单附件花十九万不合理。
五条项目的共同风险池刚好有顾云岚线退回的一百二十万。有人提议用它。
顾云岚反对:“这是平台系统调查,不该让五个项目的收官预算承担。”
她已经回避调查结论,却仍能作为合同责任人指出费用归属。
江叙也说:“风险池保护收官项目,不替平台补历史审计债。”
平台最终从信息安全整改预算支付。
磁头修复用了五天。
等待的五天里,调查没有停在那盘磁带前。
审计组先核对供应商保存的目录清单,查哪些系统在什么时间做过迁移,避免设备修好后才发现找错了备份。几位早已调岗的工作人员分别提供当年的工作习惯,其中一人记得验收邮件常被归进“补充材料”,并不跟正式工单放在同一个目录。
这个线索看起来琐碎,却让技术员少走了不少弯路。接受问询的老员工在电话里不好意思,说自己当年归档并不规范,没想到现在还派上用场。
审计员回答,记得什么就说什么,不必把不规范重新解释成提前保护证据。对方停了一会儿,终于补充还有一类文件自己曾经删过,删除原因和范围都可以说明。
江叙没有参加那场问询,只收到获准通报的检索进度。他读到这里,第一次觉得“说不记得”也可能比一整段流畅的回忆有价值。每个人都急着站到正确的一边,证据反而容易被急切拖歪。
读带那天,机房空调冷得像在保鲜人。技术员把最旧的一盘放进驱动器,机器发出轻微的刮擦声,所有人都看着一条缓慢前进的蓝色进度条。唐西洲在远程会议里问能不能快进,审计员说快进只会让它更慢,她便把手机靠在水杯旁,继续做肩部拉伸。
第一盘磁带读不出来。
第二盘只有验收报告。
第三盘出现文档系统完整快照,容量四百七十GB。技术员花十六小时重建索引,找到工单号对应目录。
最初的检索结果有七百多条同号文件:模板、草稿、转发、复印件。真正的附件夹在一封没有标题的验收邮件后面。凌晨两点,技术员在会议群里只发了六个字:“附件校验通过。”
群里没人回表情。江叙看到消息时站在厨房,手里的水壶还没烧开。他看了一眼窗外,知道这一次不是有人偷开镜头,而是有人终于找到了那把钥匙最早的登记记录。
附件有四份。
一份测试需求。
一份权限表。
一份外部人员名单。
一份验收邮件。
权限表显示,账户最初只应访问仿真环境,不允许生产直播、不允许导出真实素材。可验收邮件里有一句:“为应对真实突发事件,保留生产环境快速切换能力,后续由内容安全中心按需启用。”
这句话给了它一把理论上锁在柜子里的生产钥匙。
邮件发送人是平台工程师韩策。
抄送唯实。
外部人员名单中,昼沸联系人是魏茂。
审批意见只有两个字:“同意。”
审批账号属于唯实。
她来到问询室时带了一只旧笔记本,没有试图靠它证明自己记得一切。调查员请她先独立叙述,不将找出的全部附件一口气推到她面前,以免后来的材料倒过来替她制造记忆。
唯实先说起那年几次直播事故:断流、备用画面错切、内部响应找不到值班人。她讲得很具体,讲到审批环节却慢下来,说自己记得催过外包缩短响应时间,不记得当时有没有看完权限表。
“你愿意把不记得保留在记录里?”调查员问。
“愿意。”
她握笔的手紧了一下,又松开。以前她总觉得一个做执行的人不能回答不知道,知道才能显得自己控制住了现场。现在最容易让她重新犯错的,恰恰是立刻给每一个空白补上一个听起来合理的原因。
她看到材料后,没有否认。
“我同意的是突发事件切换。”
调查员问:“有没有确认验收后如何保管?”
“没有。”
“是否知道测试账户未注销?”
“知道保留应急能力,不知道账户具体名称。”
“为什么同意?”
“当时连续发生三场直播事故,内部团队响应太慢。我希望外部公司能在十分钟内接管。”
一个真实需求,开出一扇过大的门。
未登记账户的三个名字终于排到同一张时间线上。
接下来要找的是韩策。
他在两年前事件发生后离开浮光,履历显示去了海外科技公司。
社保停止,公开账号停更,旧手机号注销。
像真的从这个行业消失了。
外部人员名单末尾却有一个私人邮箱。
邮箱域名与开播第一周发现的两年前匿名邮箱,只差一个字母。