3. 联动与编排的核心概念模型
在安全设备联动与策略编排的工程实践中,最容易出现的混乱不是设备不会用,而是“概念没有对齐”。同一个“告警”,在 SIEM 里是一条关联规则输出,在防火墙里可能是一次会话阻断请求,在工单系统里又变成一张待处置单据;同一个“剧本”,有人理解为一段自动化脚本,有人理解为一张处置流程图。如果这些概念在团队内部没有统一建模,联动编排就会退化成“接口对接口”的临时拼接,难以维护、难以审计、难以复用。
本节要建立的,是一套贯穿全流程的统一概念模型。它把一次安全响应从“发生了什么”到“做了什么”拆成九个相互衔接的对象:事件、告警、剧本、工作流、策略、动作、连接器、执行器、状态机。理解它们之间的层次与引用关系,是后续所有编排设计的基础。
一、从原始事实到可处置信号:事件与告警
事件(Event)是系统观察到的一次原始事实记录,强调“客观发生”。例如防火墙的一条会话日志、EDR 上报的一次进程创建、WAF 记录的一次 HTTP 请求。事件通常是高频、低语义的,字段包括时间戳、来源设备、源/目的 IP、端口、协议、用户、进程哈希等。事件本身不判断好坏,它只是数据。
告警(Alert)是对事件或事件集合经过检测逻辑后产生的“值得关注”的判断结果。告警一定带有检测依据,例如命中某条关联规则、匹配某个 IOC、超过某个阈值。告警的关键字段包括告警 ID、严重级别、置信度、关联的事件引用、检测规则 ID、受影响资产。事件与告警是“多对一”或“多对多”的关系:一条告警可能由多条事件聚合而成,一条事件也可能触发多条不同规则的告警。
二、从判断到执行:剧本、工作流与策略
剧本(Playbook)是面向一类安全场景的处置知识封装,描述“遇到这类告警应该按什么逻辑处理”。它偏策略性与可读性,通常由安全分析师编写,包含适用条件、处置目标、分支判断和人工确认点。例如“疑似钓鱼邮件处置剧本”会规定:先提取邮件头与附件哈希,再查询威胁情报,若判定恶意则隔离邮件并封禁发件域。
工作流(Workflow)是剧本的可执行展开,强调步骤、顺序、并行、条件分支与数据传递。工作流由一个个节点组成,节点之间通过输入输出参数连接。剧本是“意图”,工作流是“实现”。一个剧本可以对应多个工作流版本,以适应不同设备环境。
策略(Policy)是决定“何时触发哪个剧本/工作流”的匹配与优先级规则。策略通常由条件表达式构成,例如“当告警级别≥高 且 资产重要性=核心 且 攻击类型=勒索软件时,触发‘核心资产勒索响应’工作流,优先级 P0”。策略还负责冲突消解:当多条策略同时命中时,按优先级、互斥组或人工兜底决定执行哪一条。
三、从抽象到落地:动作、连接器与执行器
动作(Action)是工作流中最小的可执行单元,描述“对某个目标做一件具体的事”,例如“封禁 IP”“隔离主机”“禁用用户账号”“创建工单”“发送通知”。动作是设备无关的语义描述,不绑定具体厂商命令。
连接器(Connector)是动作与具体设备之间的适配层,负责协议转换、认证、参数映射与错误处理。例如同样是“封禁 IP”动作,防火墙连接器会把它翻译成厂商 CLI 或 REST API 调用,EDR 连接器则翻译成隔离策略接口。连接器使工作流具备跨厂商可移植性。
执行器(Executor)是实际调用连接器、运行动作的运行时组件,负责并发调度、超时控制、重试、幂等与结果回传。执行器可以部署为本地代理或远程服务,是编排引擎的“手脚”。
四、贯穿全程的状态机
状态机(State Machine)为上述对象提供统一的生命周期管理。无论是告警、工作流实例还是单个动作,都可以用状态机描述其状态迁移。以工作流实例为例,典型状态包括:待触发 → 运行中 → 等待人工确认 → 成功 / 失败 / 超时 / 已取消。状态迁移必须由明确的事件驱动,例如“动作执行成功”触发进入下一节点,“动作重试耗尽”触发进入失败态并触发补偿动作。
状态机的价值在于:它让编排过程可观测、可恢复、可审计。当一次联动执行到一半中断时,系统能根据持久化的状态判断从哪个节点继续,而不是从头重跑造成重复封禁。
五、统一建模的引用关系与工程意义
把九个对象放在一起看,它们构成一条清晰的引用链:事件 → 告警 → 策略 → 剧本 → 工作流 → 动作 → 连接器 → 执行器,而状态机横向贯穿所有对象。这条链的每一环都通过稳定标识符引用下一环,而不是硬编码。例如工作流节点只声明“调用动作 ID = block_ip,参数 ip = ${alert.src_ip}”,具体由哪个连接器、哪台设备执行,由运行时根据环境绑定。
这种分层带来三个直接收益。第一,可替换:更换防火墙厂商时只需替换连接器,剧本和工作流不变。第二,可复用:同一动作可被多个工作流引用,同一工作流可被多条策略触发。第三,可观测:每个对象都有独立状态,排障时可以精确定位是策略没命中、工作流分支走错,还是连接器认证失败。
下面给出一个统一建模的字段对照示例,用于团队内部对齐概念。表中参数为教学示例,实际字段应结合所选编排平台调整。
| 对象 | 核心标识 | 关键字段示例 | 被谁引用 |
|---|---|---|---|
| 事件 | event_id | 时间戳、源IP、目的IP、进程哈希 | 告警 |
| 告警 | alert_id | 级别、置信度、规则ID、资产ID | 策略 |
| 策略 | policy_id | 条件表达式、优先级、互斥组 | 编排引擎 |
| 剧本 | playbook_id | 适用场景、处置目标、人工确认点 | 策略 |
| 工作流 | workflow_id | 节点列表、分支条件、超时 | 剧本 |
| 动作 | action_id | 动作类型、输入参数、幂等键 | 工作流节点 |
| 连接器 | connector_id | 目标设备、协议、认证方式 | 执行器 |
| 执行器 | executor_id | 并发度、重试策略、回传地址 | 编排引擎 |
| 状态机 | state_machine_id | 状态集合、迁移事件、持久化存储 | 所有对象 |
最后需要强调,统一建模不是一次性设计文档,而是运行时约束。编排引擎在加载配置时应校验引用完整性:策略引用的剧本是否存在、工作流引用的动作是否已注册、动作绑定的连接器是否可达。只有把概念模型落到校验规则和状态持久化上,联动编排才真正具备工程可靠性。