ScottElastic/elastic-workflows

GitHub: ScottElastic/elastic-workflows

一组面向 Elastic Security 的 SOC 自动化工作流示例集合,利用 ES|QL、AI 代理和 Kibana 案例管理实现警报分诊、事件调查和威胁情报狩猎的自动化编排。

Stars: 0 | Forks: 0

# Elastic Workflows — SOC 自动化示例 一系列用于在 Elastic Security 中自动化 SOC 分诊、调查和威胁情报狩猎的 [Elastic Workflows](https://www.elastic.co/docs/explore-analyze/workflows)(技术预览版,9.x)示例集合。 每个工作流结合了 ES|QL 查询、Kibana 案例管理和 AI 代理(通过 Agent Builder 或 `COMPLETION` 推理),以丰富警报、跨数据源进行狩猎,并生成可供分析师直接使用的案例。 ## 仓库结构 ``` elastic-workflows/ ├── README.md ├── LICENSE ├── CONTRIBUTING.md ├── .gitignore ├── docs/ │ └── workflows-reference.md # YAML schema + Kibana API reference └── workflows/ ├── triage/ # Alert-driven first-response workflows │ ├── alert-fp-triage-activity-summary.yaml │ ├── mfa-bombing-triage.yaml │ └── risky-user-signin-investigation.yaml ├── investigation/ # Deeper, multi-step investigations │ ├── litellm-trojan-investigation.yaml │ └── okta-aitm-investigation.yaml └── threat-intel/ # Feed ingestion + environment hunting ├── elastic-security-labs-feed.yaml ├── threat-intel-feed-monitor.yaml └── dashboard/ # Index mapping + dashboard for findings ├── findings-index-mapping.json ├── dashboard.json ├── dashboard-export.ndjson ├── deploy-dashboard.sh └── seed-sample-data.sh ``` ## 工作流目录 | 工作流 | 触发器 | 功能说明 | |----------|---------|--------------| | [`triage/alert-fp-triage-activity-summary.yaml`](workflows/triage/alert-fp-triage-activity-summary.yaml) | alert / manual | 基于通用 ECS 的误报分诊。拉取警报 IP/用户 15 分钟内的活动记录,运行 ES\|QL `COMPLETION`,然后由安全 AI 代理做出最终的 FP/TP(误报/真正报)判定。自动关闭 FP 并将 TP 升级为案例。 | | [`triage/mfa-bombing-triage.yaml`](workflows/triage/mfa-bombing-triage.yaml) | alert / manual | 对 Okta MFA 轰炸(MFA-bombing)警报进行分诊:使用登录历史记录进行丰富、AI 评估、Slack 通知并创建案例。 | | [`triage/risky-user-signin-investigation.yaml`](workflows/triage/risky-user-signin-investigation.yaml) | alert / manual | 跨 `azure.signinlogs`、`azure.auditlogs`、`azure.graphactivitylogs`、`crowdstrike.alert`、`windows.powershell_operational` 和 `system.security` 的全栈 Entra ID 风险登录调查。生成 AI 分诊、仪表板表格、狩猎查询、六个保存的搜索以及一个案例。 | | [`investigation/litellm-trojan-investigation.yaml`](workflows/investigation/litellm-trojan-investigation.yaml) | alert / manual | LiteLLM 代理入侵调查 —— 涵盖进程树、网络、机密访问暴露以及 AI 综合分析。 | | [`investigation/okta-aitm-investigation.yaml`](workflows/investigation/okta-aitm-investigation.yaml) | alert / manual | Okta 中间人攻击会话劫持调查。搜索与被攻陷会话相关的会话重用、账户修改以及 OAuth/API 密钥创建行为。 | | [`threat-intel/elastic-security-labs-feed.yaml`](workflows/threat-intel/elastic-security-labs-feed.yaml) | scheduled (24h) / manual | 拉取 Elastic Security Labs RSS,由 AI 代理提取 IOC 并通过 `platform.core.execute_esql` 在环境中进行狩猎,将结构化发现索引到 `threat-intel-findings` 中,并创建简报案例。 | | [`threat-intel/threat-intel-feed-monitor.yaml`](workflows/threat-intel/threat-intel-feed-monitor.yaml) | scheduled / manual | 通用的情报源监控模板 —— 可适配于任何 RSS / JSON / TAXII 情报源。 | ## 前置条件 - **Elastic Stack 9.3+**,并启用 Workflows(技术预览版)。 - **Kibana Spaces** —— 工作流存在于某个空间(space)中;请选择合适的导入位置。 - **检测规则**,需通过规则的 *Actions* 设置链接到由警报触发的工作流。 - **推理端点**(用于基于 `COMPLETION` 的步骤) —— 例如 `.anthropic-claude-4.6-opus-completion`。使用 `GET _inference/_all` 进行验证。 - **Agent Builder 代理**(用于 `ai.agent` 步骤) —— 例如 `security.agent_1` 或配备了 ES|QL 执行工具的自定义代理。 - **连接器**,根据各个工作流的需要(如 Slack、OpenAI 等)。在导入时配置连接器 ID。 - **数据视图**,用于 `logs-*`(在创建保存的搜索时使用)。 ## 自定义检查清单(导入前) 每个工作流都使用 `consts:` 和 `inputs:` 来配置特定于环境的值。在每个 YAML 中搜索以下占位符并将其替换: | 占位符 | 替换为 | |-------------|--------------| | `YOUR-DEPLOYMENT.kb.REGION.PROVIDER.elastic-cloud.com` | 您的 Kibana 基础 URL(无尾部斜杠) | | `YOUR-DEPLOYMENT.es.REGION.PROVIDER.elastic-cloud.com` | 您的 Elasticsearch URL | | `CHANGEME` | Kibana 基础 URL —— 作为运行时的哨兵检查;保持原样可跳过案例链接的渲染 | | `YOUR-LOGS-DATA-VIEW-ID` | 来自 Stack Management → Data Views 的数据视图 ID | | `YOUR_BASE64_API_KEY` | Base64 编码的 Elasticsearch API 密钥(用于直接的 `_bulk` 调用) | | `YOUR_SLACK_WEBHOOK_URL` | Slack 入站 Webhook URL | | `xoxb-YOUR-SLACK-TOKEN-HERE` | Slack 机器人 token(或改用 Slack 连接器) | | `security.agent_1` | 您想要使用的 Agent Builder 代理 ID | 连接器 ID(`connector-id: "..."`)通过您空间中的 ID 来引用连接器 —— 请先通过 *Stack Management → Connectors* 创建连接器,然后将其 ID 粘贴到工作流中。 ## 导入工作流 ``` export KIBANA_URL="https://YOUR-DEPLOYMENT.kb.REGION.PROVIDER.elastic-cloud.com" export KIBANA_API_KEY="" cat workflows/triage/risky-user-signin-investigation.yaml \ | jq -Rs '{yaml: .}' \ | curl -sS -X POST "$KIBANA_URL/api/workflows" \ -H "kbn-xsrf: true" \ -H "x-elastic-internal-origin: Kibana" \ -H "Content-Type: application/json" \ -H "Authorization: ApiKey $KIBANA_API_KEY" \ -d @- ``` 批量导入: ``` for f in workflows/**/*.yaml; do echo "Importing: $f" jq -Rs '{yaml: .}' < "$f" \ | curl -sS -X POST "$KIBANA_URL/api/workflows" \ -H "kbn-xsrf: true" \ -H "x-elastic-internal-origin: Kibana" \ -H "Content-Type: application/json" \ -H "Authorization: ApiKey $KIBANA_API_KEY" \ -d @- done ``` 空间:在路径前加上 `/s/` —— 例如 `POST /s/security/api/workflows`。 完整模式和 API 参考:[`docs/workflows-reference.md`](docs/workflows-reference.md)。 ## 威胁情报仪表板 威胁情报工作流会将发现结果索引到 `threat-intel-findings` 索引中。要部署索引映射和仪表板: ``` cd workflows/threat-intel/dashboard export KIBANA_URL="https://YOUR-DEPLOYMENT.kb.REGION.PROVIDER.elastic-cloud.com" export KIBANA_API_KEY="" ./deploy-dashboard.sh # 可选:从之前的运行中提取样本发现 ./seed-sample-data.sh ``` ## 免责声明 这些是按原样共享的示例工作流。Elastic 不提供官方支持。在对生产数据运行之前,请检查每个 YAML 及其包含的查询。请根据您的环境调整严重性阈值、回溯时间窗口和 AI 提示词。 ## 许可证 [Apache 2.0](LICENSE)。
标签:AITM攻击, AI智能体, ECS, Elastic Security, Elastic Stack, Elastic Workflows, ES|QL, MFA轰炸, Okta安全, SOAR, SOC自动化, Terraform, YOSEMITE项目, 告警分诊, 威胁情报, 安全工作流, 安全调查, 安全运营, 开发者工具, 扫描框架, 流量重放, 网络安全, 误报处理, 身份威胁检测, 隐私保护