几千台终端每秒产生海量行为事件,怎么采、怎么传、怎么存、怎么查?审计系统烂尾的项目,十个里有八个死在数据链路上,而不是死在功能上。
设计之前先算账一台办公终端一天产生的可审计行为:粗算下来,单终端日均 10 万级事件很常见。一千台终端就是日均上亿条,存储一年是百亿级行。而等保和行业规范还要求日志留存不少于 6 个月。
更矛盾的是访问模式:写入是持续的洪流,读取是稀疏但要求极快的精确查询——"3 号下午,财务部的张三往外拷了什么",这种查询必须秒级返回,因为用它的人正站在领导面前。
数据链路设计的所有取舍,都从这两个事实出发。
[终端] [平台]
内核事件源 → Agent 聚合 → 传输通道 → 接入层 → 存储/索引 → 查询服务
─────── 写入侧优化 ───────┬────── 读取侧优化 ───────写入侧的目标是"扛住、不丢、省带宽";读取侧的目标是"任意维度秒级命中"。两端优化方向相反,中间的每一环都要明确自己站在哪一边。
很多项目的隐性成本来自没有统一事件模型——文件审计一套字段、外设审计一套字段、打印又一套,最后查询层被迫做多源关联,性能不可能好。
统一 Schema 的关键字段建议:
{
"event_id": "uuid",
"ts_agent": 1728600000123, // 终端本地时间,毫秒
"ts_server": 1728600000456, // 服务端接收时间(两者都要,后面解释)
"device": {"id": "hw-fp-xxx", "name": "FIN-PC-023"},
"user": {"sid": "S-1-5-21-...", "account": "zhangsan"},
"type": "usb.file.write", // 事件类型,点分层级
"subject": {"path": "D:/患者名单.xlsx", "size": 204800},
"object": {"usb_sn": "A123456", "vendor": "SanDisk"},
"result": "allow", // allow / deny / alert
"policy_id": "P-USB-007" // 命中的策略,审计与策略要闭环
}几个设计要点:
ts_agent 和 ts_server 双时间戳:终端时钟漂移在千台规模下是常态(见过慢了 40 分钟的财务电脑),只靠本地时间会拼出混乱时间线。服务端接收时间做兜底,同时 Agent 定期校时(NTP),漂移超阈值告警;采集源本身:文件事件来自 minifilter 的 PostCreate/PostWrite 回调,外设来自 USB 过滤驱动,进程来自 PsSetCreateProcessNotifyRoutine 或 ETW(用户态回退),登录事件订阅 Windows 安全日志。注意事件字段在驱动层就规范化,别指望服务端替你做清洗——每条事件在内核多待 1 微秒,乘以十万级日事件就是可感知的开销。
原始事件直接上报,链路必死。Agent 侧要做四层处理:
实际效果:原始 10 万条/天/终端,经过边缘聚合后上报量能压掉 70%~90%,且信息无损——这直接决定你的带宽和存储成本。
选型上,这个 workload 的典型特征是写多读少、查询维度固定、时间范围强相关。务实路线:
关于"为什么不用 ES 一把梭":ES 全文检索强,但纯行为审计没有全文需求,倒排索引的存储开销在小字段低基数字段上是浪费。ClickHouse 这类列库在百亿行规模下的扫描性能与成本明显更优,架构上把全文检索留给少数场景(如文件路径模糊匹配)单独做即可。
用户提的需求:"10 月 8 日下午,儿科门诊的所有电脑,谁往外拷了文件?"
SELECT ts_agent, user.account, device.name, subject.path, object.usb_sn
FROM audit_events
WHERE type = 'usb.file.write'
AND device.group = '儿科门诊'
AND ts_agent BETWEEN '2026-10-08 12:00' AND '2026-10-08 18:00'
ORDER BY ts_agent;这条查询的性能关键:类型过滤走稀疏索引,时间范围走分区裁剪,设备分组在入库时打标签冗余存储(避免查询时 join 资产表)。在合理建模下,亿级表秒级返回是正常表现。
再进一步,把"人"作为线索的跨类型查询(张三当天全部行为时间线)需要统一排序键支持——这又回到了第 3 节的双时间戳与统一 Schema,查询体验在采集设计的那一刻就已经决定了。
把视角拉回到产品形态:上面整条链路,如果资产、外设、加密、审计各做各的,就要建四套管道、四个数据模型、四种查询界面——成本翻四倍,跨域溯源仍然做不到。
以迪康端点安全一体化管理系统为参照,一体化的数据意义在于:所有模块的事件从同一 Agent、同一 Schema、同一管道进入同一存储,"设备+用户+时间+事件"四维检索是全局能力而不是某模块特权。对客户来说,这决定了"出事后十分钟内给出结论"还是"三天后还在导 Excel"。
终端审计数据链路的设计心法:
链路无小事——功能演示十分钟,数据链路跑三年。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。