尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Anthropic-Cybersecurity-Skills SOC 指标采集代理 API 参考:用 Python + Splunk REST 自动计算 MTTD、MTTR 与告警质量

Anthropic-Cybersecurity-Skills SOC 指标采集代理 API 参考:用 Python + Splunk REST 自动计算 MTTD、MTTR 与告警质量 Anthropic-Cybersecurity-Skills SOC 指标采集代理 API 参考用 Python Splunk REST 自动计算 MTTD、MTTR 与告警质量【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本篇文章面向 SOC 运营团队与安全工程开发人员完整解析 Anthropic-Cybersecurity-Skills 仓库中building-soc-metrics-and-kpi-tracking技能所附的 API 参考文档references/api-reference.md并结合仓库内的 agent.py 源码与 SKILL.md 技能说明讲清如何通过 Splunk REST API 自动化采集 SOC 性能指标MTTD、MTTR、告警质量、分析师生产力并生成合并报告。读完本文你将掌握该代理的完整调用接口、每个核心函数的底层实现逻辑、输出数据 Schema以及如何把采集结果接入既有的 KPI 追踪流程。一、API 在 SOC 指标体系中的定位building-soc-metrics-and-kpi-tracking是仓库 817 个结构化网络安全技能之一归属于soc-operations子域被映射到 NIST CSF 2.0 的DE.CM-01、DE.AE-02、RS.MA-01、DE.AE-06等控制项。其 SKILL.md 定义了完整指标框架指标定义建议目标NIST CSFMTTD威胁发生到 SOC 检测的时间15 分钟DetectMTTA告警产生到分析师确认的时间5 分钟RespondMTTI确认到开始调查的时间10 分钟RespondMTTC调查到完成遏制的时间1 小时RespondMTTR检测到完全处置的时间4 小时RecoverFP Rate误报告警占比30%DetectTP Rate真阳告警占比40%DetectCoverage有活跃检测的 ATTCK 技术占比60%DetectDwell Time攻击者在网络内未被发现的时间24 小时DetectEscalation RateTier 1 升级至 Tier 2/3 的占比15-25%RespondAPI 参考文档所述的采集代理正是这套框架的自动化执行层它把 SKILL.md 中的手工 SPL 查询封装成可编程函数让 SOC 领导层无需手动在 Splunk 中执行搜索即可周期性获得量化的运营态势报告。二、依赖与环境准备API 层只依赖一个第三方包重量极轻包最低版本用途requests2.28Splunk REST API 通信从 agent.py 的导入语句可以确认除标准库json、os、time、logging、argparse、datetime外外部依赖仅有requests。安装方式即pip install requests2.28代理通过两个环境变量提供运行时配置源码 agent.pySPLUNK_URLSplunk 管理地址默认https://localhost:8089与--splunk-url参数的默认值一致SKIP_TLS_VERIFY设为true时跳过 TLS 证书校验源码中每个 REST 调用均通过verifynot os.environ.get(SKIP_TLS_VERIFY, ).lower() true控制适用于使用自签名证书的测试环境。注意跳过证书校验会削弱传输层安全仅在隔离的实验环境lab中使用。三、CLI 用法与参数说明API 参考文档给出的标准调用方式python agent.py --splunk-url https://splunk:8089 --username admin --password pass --output report.json完整参数定义与源码 agent.py 的argparse声明一一对应参数是否必填默认值说明--splunk-url否https://localhost:8089Splunk 管理managementURL--username否adminSplunk 用户名--password是-Splunk 密码无默认值缺失时argparse直接报错--output否soc_metrics_report.json输出 JSON 报告文件路径执行后代理会依次完成「认证 → 采集四类指标 → 终端打印人类可读报告 → 将结构化数据写入--output指定文件」的完整流程见源码 main()。四、核心函数逐个拆解API 参考文档声明了 7 个关键函数下面结合 agent.py 源码逐一说明其行为与底层调用链。4.1authenticate_splunk(base_url, username, password)对${base_url}/services/auth/login发起POST请求携带表单字段username与password从响应 JSON 中提取sessionKey返回形如{Authorization: Splunk session_key}的请求头源码 agent.py。关键实现细节请求超时固定为 30 秒resp.raise_for_status()在认证失败时抛出异常后续所有搜索调用都复用这份认证头避免重复登录认证成功时打印Authenticated to Splunk successfully日志INFO 级别。4.2run_splunk_search(base_url, headers, query, earliest, latest)通用搜索执行器是其余采集函数的公共底座。流程分三步源码 agent.py向/services/search/jobs发起POST请求体包含search自动加search前缀、earliest_time默认-30d、latest_time默认now、output_modejson响应中取得搜索任务 IDsid轮询/services/search/jobs/{sid}每 2 秒一次、最多 120 次即最长等待约 4 分钟直到响应体entry[0].content.isDone为true向/services/search/jobs/{sid}/results发起GET携带output_modejsoncount0count0表示返回全部结果解析返回results列表。该函数对上层屏蔽了 Splunk 搜索作业的异步模型让调用者能以同步函数的方式拿到解析后的 JSON 结果。4.3collect_mttd_metrics(base_url, headers)查询 Splunk ES notable 事件按紧急度urgency统计 Mean Time to Detect。其内部 SPL源码 agent.py与 SKILL.md 中的手工查询保持一致indexnotable earliest-30d status_labelResolved* | eval mttd_seconds _time - orig_time | where mttd_seconds 0 AND mttd_seconds 86400 | stats avg(mttd_seconds) AS avg_mttd, median(mttd_seconds) AS med_mttd, perc90(mttd_seconds) AS p90_mttd by urgency | eval avg_mttd_min round(avg_mttd / 60, 1)其中where mttd_seconds 0 AND mttd_seconds 86400用于剔除数据质量问题如时钟回拨或字段缺失导致的负值、以及超过一天的不合理检测时长这是保障指标可信度的关键过滤条件。4.4collect_mttr_metrics(base_url, headers)统计 Mean Time to RespondSPL源码 agent.pyindexnotable earliest-30d status_labelResolved* | eval mttr_seconds status_end - _time | where mttr_seconds 0 AND mttr_seconds 604800 | stats avg(mttr_seconds) AS avg_mttr, median(mttr_seconds) AS med_mttr by urgency | eval avg_mttr_hours round(avg_mttr / 3600, 1)注意上界过滤为 604800秒7 天与 MTTD 的 1 天上界不同——响应处置天然跨越多天过滤阈值必须放宽。SKILL.md 中该查询还增加了perc90分位数输出可在扩展采集时参考。4.5collect_alert_quality(base_url, headers)计算告警处置质量真阳率、误报率与信噪比源码 agent.pyindexnotable earliest-30d | stats count AS total, sum(eval(if(status_labelResolved - True Positive, 1, 0))) AS tp, sum(eval(if(status_labelResolved - False Positive, 1, 0))) AS fp | eval tp_rate round(tp / total * 100, 1) | eval fp_rate round(fp / total * 100, 1) | eval signal_noise round(tp / (fp 0.01), 2)分母fp 0.01是对零误报的平滑处理避免除零。相比 SKILL.md 中更完整的告警分类查询还统计Resolved - Benign与New/In Progress的 pending 数API 实现聚焦在tp与fp两个核心字段上属于最小可用版本。4.6collect_analyst_productivity(base_url, headers)按分析师owner统计工作量与效率源码 agent.pyindexnotable earliest-30d status_labelResolved* | stats count AS alerts_resolved, avg(eval((status_end - status_transition_time) / 60)) AS avg_triage_min by owner | eval alerts_per_day round(alerts_resolved / 30, 1) | sort - alerts_resolvedalerts_per_day用 30 天平均折算日处理量avg_triage_min通过status_end - status_transition_time刻画单条告警的流转triage耗时。SKILL.md 的同主题查询还包含dc(rule_name) AS unique_rule_types处理的规则类型多样性与按班次Day/Swing/Night的工作负载分布可在需要更细粒度人力规划时补全。4.7generate_report(mttd, mttr, quality, productivity)将四类指标格式化为人类可读的 SOC 绩效报告并打印到终端源码 agent.py。报告包含四个区块KEY METRICS (MTTD)、KEY METRICS (MTTR)、ALERT QUALITY、ANALYST PRODUCTIVITY每个字段缺失时以N/A兜底保证在数据不全时仍能输出可读文本。同时main()会将结构化字典含generated_at时间戳序列化为 JSON 落盘实现「终端可读 文件可解析」的双重输出。五、输出 SchemaAPI 参考文档定义了报告 JSON 的结构与源码 main() 完全一致{ generated_at: ISO-8601 timestamp, mttd_metrics: [{urgency: ..., avg_mttd_min: ...}], mttr_metrics: [{urgency: ..., avg_mttr_hours: ...}], alert_quality: [{total: ..., tp_rate: ..., fp_rate: ...}], analyst_productivity: [{owner: ..., alerts_per_day: ...}] }字段说明generated_atdatetime.utcnow().isoformat()生成的 UTC ISO-8601 时间戳mttd_metrics/mttr_metrics按 urgency 分组的数组每项至少含urgency与均值字段实际返回中还可能携带med_mttd、p90_mttd等中位数/分位数字段取决于 Splunk 返回的原始统计列alert_quality整体告警质量快照含total、tp_rate、fp_rate、signal_noiseanalyst_productivity按 owner 分组含alerts_resolved、alerts_per_day、avg_triage_min。该 Schema 可直接被下游看板Splunk Dashboard Studio、Grafana、Power BI或调度任务消费作为月度 SOC 执行摘要的数据源。六、底层 Splunk REST 端点清单API 参考文档列出了代理用到的全部 Splunk 端点端点方法用途/services/auth/loginPOST认证换取 session key/services/search/jobsPOST创建搜索作业/services/search/jobs/{sid}GET轮询搜索作业状态/services/search/jobs/{sid}/resultsGET拉取搜索结果这一组端点对应 Splunk 的「登录 → 提交异步搜索 → 轮询 → 取结果」标准 REST 工作流与authenticate_splunk、run_splunk_search两个函数的实现一一对应是整个采集链路唯一需要打通的网络通路。七、接入持续改进闭环API 采集到的指标可以无缝接入 SKILL.md 定义的持续改进追踪流程。SKILL.md 提供了两类可直接落地的配套资产改进计划登记表以 CSV 形式维护soc_improvement_initiatives.csv字段包括initiative,start_date,target_date,status,metric_impact,baseline,current示例条目如Risk-Based Alerting告警量 -84%、Sigma Rule LibraryATTCK 覆盖 61%→64%、SOAR Phishing Playbook钓鱼 MTTR 45min→18min执行摘要报告模板将 API 输出的 MTTD、MTTR、FP/TP Rate、ATTCK Coverage、Alerts/Analyst/Day 与目标值、趋势如 -12%、3%和 GREEN/YELLOW/RED 状态合并成季度业务评审QBR、人员编制论证、工具 ROI 评估与合规审计ISO 27001 / SOC 2所需的量化证据。将agent.py放入定时任务如每日/每周执行即可让 KPI 从「手工查询」升级为「自动沉淀」再配合 ATTCK Navigator 检测覆盖追踪形成「采集—报告—改进—再采集」的完整运营闭环。八、使用限制与注意事项前置数据依赖指标计算依赖 90 天以上的告警处置历史与完整的时间戳字段orig_time、status_end、status_transition_time若事件字段命名与 SPL 中的约定不一致需要按实际数据模型调整查询TLS 校验生产环境应提供有效证书并保持默认校验开启SKIP_TLS_VERIFYtrue仅用于自签名证书的实验环境搜索超时单次搜索轮询上限约 4 分钟超大时间窗口下的重型统计可能超时可通过调整 run_splunk_search 的轮询次数或改用预计算的 summary index 优化指标口径SKILL.md 强调指标应驱动流程改进而非针对个人的惩罚性考核采集与展示时应保持口径透明、按团队维度聚合避免误用。以上限制均能从 agent.py 源码与 SKILL.md 中直接验证接入前请结合自身 Splunk ES 数据模型核对。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表