关于 security-case-management
security-case-management 是供安全运营中心团队管理 Elastic Security 案例的技能,覆盖案例检索、创建、更新及调查记录。案例限定在 securitySolution,可关联告警并使用连接器推送到外部事件管理系统。
主要功能
- 01创建、查找和列出案例
- 02更新状态、严重性与标签
- 03添加调查评论
- 04将告警关联到案例
- 05支持批量关联告警
适用场景
- 01告警分诊后创建安全案例
- 02查找与主机或攻击相关的案例
- 03向案例添加调查发现
- 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.mdscripts/case-manager.jskibana-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 的结果时:
- 声明 JSON 响应中的确切
total数量(例如:“共有 12 个未结案件”)。 - 将每个案件作为紧凑的单行条目呈现:
<title> | <severity> | <case_id_short> | <created_at>。从title字段逐字复制确切标题,不得改写、缩写或总结。 - 如果用户要求 N 个案件,则恰好呈现 N 个条目(如果实际数量更少,则呈现更少的条目)。除非用户特别要求,否则不要添加其他列(警报数量、描述、状态)。
- 不要添加 API 返回内容以外的信息。如果某个字段为 null 或缺失,则省略该字段。
- 呈现结果后立即停止。不要添加分析、评论或对案件的观察。
标签约定
使用结构化标签来存储可供机器检索的元数据:
| 标签模式 | 示例 | 用途 |
|---|---|---|
classification:<value> | classification:malicious | 分流分类(良性/未知/恶意) |
confidence:<score> | confidence:85 | 置信度分数,范围为 0-100 |
mitre:<technique> | mitre:T1574.002 | MITRE 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 密钥 |