mcpField
S
security-case-management

security-case-management

github.com/elastic安全6024.2k 次安装今天更新
代码仓库

关于 security-case-management

security-case-management 是供安全运营中心团队管理 Elastic Security 案例的技能,覆盖案例检索、创建、更新及调查记录。案例限定在 securitySolution,可关联告警并使用连接器推送到外部事件管理系统。

主要功能

  1. 01创建、查找和列出案例
  2. 02更新状态、严重性与标签
  3. 03添加调查评论
  4. 04将告警关联到案例
  5. 05支持批量关联告警

适用场景

  1. 01告警分诊后创建安全案例
  2. 02查找与主机或攻击相关的案例
  3. 03向案例添加调查发现
  4. 04将一个或多个告警附加到案例

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/elastic/agent-skills --skill security-case-management

安装后在 Claude Code 中输入/security-case-management确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
kibana-cases-api.md
scripts/
case-manager.js
kibana-client.js

详细介绍

案例管理

通过 Kibana Cases API 管理 SOC 案例。所有案例的范围均为 securitySolution——此技能仅在 Elastic Security 中运行。案例会显示在 Kibana Security 中,可分配给分析师、关联到告警,并通过连接器推送到外部事件管理系统。

前提条件

首次使用前,请从 skills/security 目录安装依赖项:

cd skills/security && npm install

设置所需的环境变量(或将其添加到工作区根目录下的 .env 文件中):

export KIBANA_URL="https://your-cluster.kb.cloud.example.com:443"
export KIBANA_API_KEY="your-kibana-api-key"

适用场景

  • 告警分类研判后创建案例(分类、IOC、发现结果)
  • 搜索现有案例,以关联相关告警
  • 添加调查评论,或将告警附加到现有案例
  • 更新案例状态或严重性
  • 列出近期案例以供审查

不适用场景

  • 不要将此技能用于 Observability 或 Elasticsearch 案例——它会将 owner: securitySolution 写死
  • 不要用于 Security 解决方案空间以外的案例

执行规则

  • 立即开始执行工具——不要先阅读 SKILL.md、浏览工作区或列出文件。
  • 忠实报告工具输出。完全按照 API 返回的内容复制案例 ID、标题、标签、严重性和计数。不要缩写案例 ID、截断标题、编造详情或四舍五入数字。
  • API 返回零条结果时,请明确说明——不要猜测可能存在的结果。
  • 列出或查找案例时,请报告 API 响应中的确切总数,并逐一列出每个案例的原文标题、严重性和状态。

快速开始

所有命令都从工作区根目录运行。所有输出均为 JSON。直接调用工具——不要先阅读技能文件或探索工作区。对于 attach-alert/attach-alerts,Kibana API 要求提供 --rule-id 和 --rule-name(未知时使用 --rule-id unknown --rule-name unknown)。批量操作请使用 attach-alerts,它会自动重试速率限制,并在 API 调用之间间隔 2 秒。

常见的多步骤工作流

任务要依次调用的工具
创建案例case_manager create(title、description、tags、severity)
查找主机相关案例case_manager find --tags "agent_id:<id>" 或 find --search "<hostname>"
将告警附加到案例case_manager attach-alert(case-id、alert-id、alert-index、rule-id/name)
添加调查备注case_manager add-comment(case-id、comment text)
列出近期未结案例case_manager list --status open --per-page <n>
更新案例case_manager update(case-id、status/severity/tags changes)

查找主机相关案例: 使用 find --search "<hostname>",在标题、描述和评论中按主机名搜索。也可以在已知 Agent ID 时使用 find --tags "agent_id:<agent_id>"。始终添加 --status open,仅筛选未结案例。报告准确的 total 数量,并逐字列出 API 响应中的每个案例标题。

# Create (syncAlerts enabled by default; disable with --sync-alerts false)
node skills/security/case-management/scripts/case-manager.js create --title "Malicious DLL sideloading on host1" --description "Crypto clipper malware detected via DLL sideloading..." --tags "classification:malicious" "confidence:88" "mitre:T1574.002" --severity critical --yes

# Find, list, get
node skills/security/case-management/scripts/case-manager.js find --tags "agent_id:550888e5-357d-4bc1-a154-486eb7b4e076"
node skills/security/case-management/scripts/case-manager.js find --search "DLL sideloading" --status open
node skills/security/case-management/scripts/case-manager.js list --status open --per-page 10
node skills/security/case-management/scripts/case-manager.js get --case-id <case_id>

# Attach single alert
node skills/security/case-management/scripts/case-manager.js attach-alert --case-id <case_id> --alert-id <alert_doc_id> --alert-index .ds-.alerts-security.alerts-default-2025.12.01-000013 --rule-id <rule_uuid> --rule-name "Malware Detection Alert"

# Attach multiple alerts (batch)
node skills/security/case-management/scripts/case-manager.js attach-alerts --case-id <case_id> --alert-ids <id1> <id2> <id3> --alert-index .ds-.alerts-security.alerts-default-2026.02.16-000016 --rule-id <rule_uuid> --rule-name "Malware Detection Alert"

# Add comment, update (--tags merges with existing tags, does not replace)
node skills/security/case-management/scripts/case-manager.js add-comment --case-id <case_id> --comment "Process tree analysis shows..."
node skills/security/case-management/scripts/case-manager.js update --case-id <case_id> --status closed --severity low --yes

写操作(create、update)默认会提示确认。传入 --yes 可跳过提示(由 Agent 调用时必须使用)。

报告列表和查找结果

报告 list 或 find 的结果时:

  1. 声明 JSON 响应中的确切 total 数量(例如:“共有 12 个未结案件”)。
  2. 将每个案件作为紧凑的单行条目呈现:<title> | <severity> | <case_id_short> | <created_at>。从 title 字段逐字复制确切标题,不得改写、缩写或总结。
  3. 如果用户要求 N 个案件,则恰好呈现 N 个条目(如果实际数量更少,则呈现更少的条目)。除非用户特别要求,否则不要添加其他列(警报数量、描述、状态)。
  4. 不要添加 API 返回内容以外的信息。如果某个字段为 null 或缺失,则省略该字段。
  5. 呈现结果后立即停止。不要添加分析、评论或对案件的观察。

标签约定

使用结构化标签来存储可供机器检索的元数据:

标签模式示例用途
classification:<value>classification:malicious分流分类(良性/未知/恶意)
confidence:<score>confidence:85置信度分数,范围为 0-100
mitre:<technique>mitre:T1574.002MITRE ATT&CK 技术 ID
agent_id:<id>agent_id:550888e5-...用于关联的 Elastic Agent ID
rule:<name>rule:Malicious Behavior Detection检测规则名称

案件严重性映射

分类Kibana 严重性
benign(分数 0-19)low
unknown(分数 20-60)medium
malicious(分数 61-80)high
malicious(分数 81-100)critical

已知限制

syncAlerts 仅适用于安全案件

syncAlerts 设置(默认启用)会将案件状态与关联警报的状态同步。此功能仅适用于 Security Solution 案件。如果不需要同步警报,创建案件时请传入 --sync-alerts false。

速率限制

Kibana API 会强制执行速率限制。附加多个警报时,attach-alerts 批处理命令会自动处理 429 响应并重试。如果逐个使用 attach-alert,请将调用间隔约 10 秒。

Serverless 上的 find --search

在 Kibana Serverless 部署中,find --search 参数可能会返回 500 错误。请改用 find --tags 进行筛选,或使用 list 浏览最近的案件。

find --tags 要求完全匹配

标签搜索仅支持完全匹配。find --tags "agent_id:abc123" 可以正常使用,但不支持部分匹配。

Kibana Cases API 参考

有关详细的 API 端点、请求/响应格式和示例,请参阅 references/kibana-cases-api.md。

示例

  • “为我分流的钓鱼警报创建一个严重性为 high 的案件”
  • “搜索与暴力破解攻击相关的未结案件”
  • “将调查结果作为评论添加到 ID 为 abc-123 的案件中”

指南

  • 仅报告工具输出,不要编造工具响应中不存在的 ID、主机名、IP 或详细信息。
  • 保留请求中的标识符,在工具调用和响应中使用用户提供的确切值。
  • 根据工具返回的数据简洁地确认操作。
  • 区分事实与推断;将超出工具输出的结论标注为你的评估。
  • 呈现案件列表或搜索结果时,逐字复制每个案件的确切标题。不要改写、缩写或总结标题。包含 API total 字段中的总数。
  • 立即开始执行工具。操作前不要读取 SKILL.md、浏览目录或列出文件。

生产环境使用

  • 写入操作(create、update)会要求确认。由 Agent 调用时,传入 --yes 或 -y 可跳过确认。
  • 运行任何命令前,请确认 KIBANA_URL 和 KIBANA_API_KEY 指向预期的集群。
  • 案例仅限于 securitySolution,此技能不会影响 Observability 或 Kibana 中由其他团队负责的案例。

环境变量

变量必填描述
KIBANA_URL是Kibana 基础 URL(例如:https://my-kibana.kb.cloud.example.com)
KIBANA_API_KEY是用于身份验证的 Kibana API 密钥

评论

支持 Markdown