触发策略
除了手动执行外,TestNet 支持 Cron 定时调度、资产事件联动触发 和 运行日志追踪。
一、 定时调度触发
针对需要定期开展安全巡检、资产发现或漏洞探测的常态化工作流,您可以配置标准 Cron 表达式实现无人工干预周期性扫描:
1. 配置定时规则
在工作流设计器的触发配置面板中将触发类型切换为 CRON 并填写表达式,或直接在 DSL 头部声明:
yaml
kind: Workflow
metadata:
id: daily-domain-enum
name: 每日域名自动巡检
version: 1.0.0
spec:
trigger:
type: CRON
enabled: true
cron: "0 0 2 * * ?" # 每天凌晨 2 点自动执行
input:
assetTypes: [DOMAIN]
nodes:
subfinder: # 完整 nodes 定义见 [DSL 语法参考](/workflow/dsl-reference)
tool: subfinder
inputs:
target:
from: [trigger.asset]- Cron 语法:采用 Spring Cron 6 字段格式——秒 分 时 日 月 周(
?可用于日/周域);不支持第 7 位年域; - 运行周期建议:定时到达即创建新的运行实例,请将调度周期设置为大于工作流典型执行时长,避免多个运行实例同时排队堆积。
二、 资产事件联动触发
TestNet 支持基于资产事件的自动触发。将工作流 trigger.type 设为 AUTO 后,当平台发现符合条件的新资产入库时,即自动联动执行该工作流:
1. 常见自动化联动场景
- 新增子域名入库:一旦被动或主动收集发现了属于某个主域名的全新子域名,立刻自动触发「Web 端口与指纹探测工作流」;
- 发现全新 Web 服务开放:自动对新暴露的管理后台发起敏感路径与弱口令探测;
- 新增漏洞入库:联动发送企业微信/钉钉紧急告警并抓取关键证据保存。
2. 联动过滤器规则
在工作流 DSL 中将 trigger.type 设为 AUTO,并通过 trigger.input 配置监听的资产类型与可选的 Aviator 过滤表达式(编译期校验表达式合法性),确保只对高优先级目标发起高耗时扫描:
yaml
spec:
trigger:
type: AUTO
enabled: true
input:
assetTypes: [SUBDOMAIN] # 仅监听新子域名入库事件
filter: "<Aviator 表达式>" # 可选:对触发资产追加条件过滤TIP
AUTO 触发的资产类型范围由 trigger.input.assetTypes 圈定;工作流的执行节点会进一步按依赖与条件表达式(when)决定是否处理新资产。
三、 运行历史记录与执行轨迹
通过 「工作流管理」->「执行运行记录」,您可以全面俯瞰系统内所有定时、手动或联动下发的工作流生命周期:
1. 运行状态分类与查询
- 运行状态指示:清晰标识
RUNNING(执行中)、COMPLETED(成功完成)、PARTIAL(部分成功)、FAILED(失败异常) 与CANCELLED(人工中止); - 触发源溯源:明确标注每次运行是来自于
MANUAL(用户触发)、CRON(定时调度触发)、ASSET(由资产变更事件联动触发) 还是AI(由 AI Agent 调用 MCP 触发)。
2. 节点任务分解追踪
点击任意一条工作流运行记录,可以展开查看其 DAG 分解下发的子任务树:
- 步骤耗时统计:精准看清每个阶段(如
subdomain-enum耗时 45 秒,vuln-scan耗时 12 分钟)的时间瓶颈; - 一键直达实时日志:对于正在执行中的任务,点击即可查看实时彩色终端日志,实时掌握节点探测输出;
- 失败重跑:对于因外部网络中断等原因失败的子任务,可在「任务列表」中对该任务执行「重跑」,重新下发执行。