Scheduled Scan 模板
Harness Engineering 模板:这个 showcase 展示 orchestrator 作为 agent-first 软件交付控制面的一个能力切片,把 agent、workflow、policy 和反馈闭环固化为可复用的工程资产。
模板用途:定时触发的安全审计 — 展示 Trigger 资源、cron 调度和 agent 驱动的安全分析。
适用场景
- 定期安全审计:agent 驱动的威胁建模 + 静态工具扫描
- 合规检查:定期审查架构安全性和依赖健康度
- 任何需要周期性自动执行的审计任务
前置条件
orchestratord运行中(webhook 服务默认监听127.0.0.1:19090)- 已执行
orchestrator init
使用步骤
1. 部署资源
bash
orchestrator apply -f docs/workflow/scheduled-scan.yaml --project scan2. 手动触发一次(测试)
bash
orchestrator task create \
--name "scan-1" \
--goal "Run security audit" \
--workflow scheduled_scan \
--project scan3. 查看结果
bash
orchestrator task list --project scan
orchestrator task logs <task_id>4. 验证 Trigger 已注册
bash
orchestrator get triggers --project scanCron trigger weekly-scan 会在每周一凌晨 3:00 UTC 自动创建新任务。
工作流步骤
agent_audit (scan-agent) → static_check (scan-agent)- agent_audit — Agent 驱动的安全分析:识别信任边界、审查认证授权逻辑、检查注入向量、评估密钥处理和错误暴露
- static_check — 静态工具扫描:依赖审计(cargo audit / npm audit)、秘密扫描、已知漏洞模式检查
为什么 Agent 分析优先?
传统静态扫描只能发现已知模式(CVE、正则匹配),而 AI agent 能:
- 理解业务逻辑中的安全隐患(如权限绕过、TOCTOU 竞态)
- 进行威胁建模(识别信任边界和攻击面)
- 给出上下文感知的修复建议
静态扫描作为补充,覆盖 agent 可能遗漏的机械性检查(依赖 CVE、硬编码凭证正则匹配等)。
核心特性:Trigger
yaml
kind: Trigger
metadata:
name: weekly-scan
spec:
cron:
schedule: "0 3 * * 1" # 每周一凌晨 3:00
timezone: "UTC"
action:
workflow: scheduled_scan
workspace: default
goal: "Weekly automated security audit"
start: true # 创建后自动启动
concurrency_policy: Forbid # 防止重叠执行自定义指南
调整执行频率
yaml
# 每天凌晨 2:00
schedule: "0 2 * * *"
# 每 6 小时
schedule: "0 */6 * * *"
# 每月 1 日
schedule: "0 0 1 * *"替换为真实 Agent
将 echo command 替换为真实 agent:
yaml
command: claude -p "{prompt}" --verbose --output-format stream-json替换后 agent 将实际执行威胁建模分析和静态扫描命令。
自定义 StepTemplate prompt
根据项目技术栈调整 static_check 的 prompt:
yaml
prompt: >-
Run static security checks:
- `cargo audit` for Rust dependency CVEs
- `rg -n 'password|secret|api_key' --type rust` for hardcoded secrets
- Check for `unsafe` blocks without safety comments添加 Webhook Trigger
除了 cron,还可以通过 webhook 事件触发(如 CI push 后自动扫描):
yaml
kind: Trigger
metadata:
name: on-push-scan
spec:
event:
source: webhook
filter: "payload.ref == 'refs/heads/main'"
action:
workflow: scheduled_scan
workspace: default
goal: "Post-push security scan"
start: true进阶参考
- FR Watch 模板 — Webhook Trigger 示例(文件监控驱动)
- 密钥轮替 — 生产级 cron trigger 示例
- 高级特性 — Trigger 资源详解