beenuar/AiSOC

GitHub: beenuar/AiSOC

一个开源、可自托管的AI驱动安全运营中心,旨在通过集成告警融合、AI调查、紫队演练与自动化响应,统一并智能化企业安全运营流程。

Stars: 304 | Forks: 22

AiSOC # AiSOC 一个开源、可自托管的 AI SOC。Agent 的提示词、工具调用和推理过程被逐步记录并可回放。采用 MIT 许可证。 [![License: MIT](https://img.shields.io/badge/License-MIT-22c55e.svg?style=flat-square)](https://opensource.org/licenses/MIT) [![Public eval harness: CI-gated](https://img.shields.io/badge/eval%20harness-CI--gated-2563eb?style=flat-square)](apps/docs/docs/benchmark.md) [![PRs welcome](https://img.shields.io/badge/PRs-welcome-8b5cf6?style=flat-square)](CONTRIBUTING.md) [![Version](https://img.shields.io/badge/version-6.1.0-f59e0b?style=flat-square)](CHANGELOG.md) [在线演示](https://tryaisoc.com) · [AiSOC 对比](#how-aisoc-compares) · [公开评估套件](apps/docs/docs/benchmark.md) · [部署选项](#deployment-options) · [架构](#architecture) · [文档](apps/docs/) tryaisoc.com 上的演示是一个由 Cloudflare Tunnel 前置的自托管实例——当它可达时,该技术栈正运行在维护者的本地机器上。因此它可能随时离线。要运行您自己的实例(只需 3.5 分钟,附带种子数据),请参阅 一键演示;要通过 Cloudflare Tunnel 在您自己的域名上公开您自己的实例,请参阅 您自己域名上的公开演示 [![GitHub topics](https://img.shields.io/badge/topics-soc%20%7C%20siem%20%7C%20ai--security%20%7C%20mitre--attack-0ea5e9?style=flat-square)](https://github.com/beenuar/AiSOC/topics)
## AiSOC 是什么 AiSOC 是一个单一的可自托管技术栈,负责摄取安全事件、进行关联、运行 AI 驱动的调查,并将结果显示在 SOC 控制台中。Agent 和底层平台均采用 MIT 许可证,因此您可以阅读、复刻或替换其中任何一个。 三个特性使其有别于闭源的 AI SOC 厂商: 1. **Agent 决策被记录。** Investigation Ledger 存储了每次运行中每一步的 LLM 提示词、响应、引用的证据以及下游的工具调用。支持事后回放。 2. **底层平台拥有 CI 中的公开评估套件。** 五个套件限制了对 `main` / `develop` 分支的每一个 PR:从 55 个不同模板中提取的 200 个事件合成数据集推动了 MITRE 战术、调查完整性和响应质量关卡(每个关卡既报告每个案例的均值,也报告每个模板的宏值,因此单个损坏的模板无法隐藏在 199 个正常副本之后);单独生成的 1,000 条告警噪声流推动了告警压缩关卡;以及一个 schema/覆盖率关卡验证了 `synthetic_telemetry.jsonl`——包含 14 种日志来源(Sysmon、Windows Security、M365 audit、Azure sign-in、CloudTrail、Linux auditd、journald、EDR、DNS、web access、Kubernetes audit、GitHub audit、VPN、DB audit)约 360 个支持事件的伴随语料库,连接器和 Sigma PR 可以与之对接。告警压缩是针对固定告警流的真实度量;三个基于规则的套件是确定性模板之上的底层平台自一致性关卡。[基准测试页面](apps/docs/docs/benchmark.md) 详细解释了各自的作用。 3. **完全在您的基础设施上运行。** 没有向供应商云的回调,也没有用于“模型改进”的数据泄露。 编排器是位于 [`services/agents/`](services/agents/) 中的一个约 600 行的 LangGraph。它足够精简,支持端到端阅读、模型替换和补丁操作。 ## AiSOC 对比 | 能力 | AiSOC | Wazuh | Splunk ES | 闭源 AI SOC | |---|---|---|---|---| | 开源许可证 | MIT | GPL-2 | 私有 | 私有 | | 可自托管 | 是 | 是 | 仅限企业版 | 仅限云端 | | 自主 AI 调查 | LangGraph | 否 | 部分 (Splunk AI) | 是 | | Agent 决策审计追踪 | 公开的 Investigation Ledger | 不适用 | 不适用 | 未公开 | | 公开的底层平台评估套件 | CI-gated,可复现,附带合成遥测语料库 + 按模板宏值 | 不适用 | 不适用 | 未公开 | | 检测内容 | 800 个原生 + 6,000+ 导入 (Sigma / Splunk / Chronicle / CAR) | 1,200+ 规则 | 1,000+ 应用 | 策展 | | 插件 SDK | Python / TypeScript / Go | 仅 YAML 规则 | apps | 私有 | | 数据驻留 | 您的基础设施 | 您的基础设施 | 部分 | 供应商云 | | 定价 | $0 (自托管) | $0 (自托管) | 按摄取 GB 计费 | 企业版 | 闭源 AI SOC 厂商交付的是成熟的产品。AiSOC 的贡献在于使 Agent 本身保持开放、每一步的决策轨迹可读,并且底层平台受到针对 `main` / `develop` 分支的每个 PR 上公开评估套件的限制。 ## 部署选项 每个目标平台都在 [`infra/`](infra/) 中提供了经过测试的配置: | 平台 | 状态 | 配置 | 备注 | |---|---|---|---| | Fly.io | 一等公民 | [`infra/fly/`](infra/fly/) | 4 个应用,约 $14/月。参见 [infra/fly/README.md](infra/fly/README.md)。 | | Render | 支持 | [`infra/render/render.yaml`](infra/render/render.yaml) | 空闲休眠,爱好者层级。 | | Railway | 支持 | [`infra/railway/railway.toml`](infra/railway/railway.toml) | PaaS,按量付费。 | | Coolify | 支持 | [`docker-compose.yml`](docker-compose.yml) | 在您自己的 VPS 上自托管。参见 [infra/coolify/README.md](infra/coolify/README.md)。 | | Kubernetes / Helm | 一等公民 | [`infra/helm/`](infra/helm/) | `helm install aisoc ./infra/helm/aisoc` | | AWS / Terraform | 一等公民 | [`infra/terraform/`](infra/terraform/) | `cd infra/terraform && terraform apply` | Render、Railway 和 Coolify 配置部署了精简的演示配置:api、agents、web、realtime、Postgres 和 Redis。ClickHouse、Kafka、OpenSearch、Neo4j 和 Qdrant 受限于 compose 配置项。对于具有完整存储层的生产级安装,请使用 Helm 或 Terraform。 ## 从 Claude、Cursor 或 Cody 中使用 AiSOC 提供了一个 [MCP server](https://modelcontextprotocol.io),以便分析师无需离开 IDE 或聊天界面即可查询告警、运行 Agent 调查并回放 Agent 采取的每一个步骤。 ``` # Claude Desktop / Cursor / Continue / Cody npx -y @aisoc/mcp install --host claude \ --aisoc-url https://aisoc.your-company.com \ --api-key aisoc_pat_xxxxxxxxxxxx ``` 该服务器公开了 11 个工具——发现类(`aisoc_list_alerts`、`aisoc_list_cases`、`aisoc_query_detections`),深入查询类(`aisoc_get_case`、`aisoc_get_investigation`),以及操作/回放类(`aisoc_run_investigation`、`aisoc_replay_decision`、`aisoc_explain_step`),用于逐步遍历 Agent 决策账本。 完整指南:[docs/integrations/mcp](apps/docs/docs/integrations/mcp.md)。源码:[`services/mcp/`](services/mcp/)。npm:`@aisoc/mcp`。 ## 开箱即用的内容 AiSOC 捆绑了 SOC 通常需要从不同供应商拼凑来的组件: - **三次点击连接数据源** —— 包含 26 个连接器的点击即连目录涵盖了 EDR/XDR (CrowdStrike Falcon、SentinelOne、Microsoft Defender XDR、Palo Alto Cortex XDR)、SIEM (Splunk、Microsoft Sentinel、Elastic)、云 (AWS Security Hub、Azure Activity、GCP Cloud Audit、GCP SCC、Wiz)、身份 (Okta、Microsoft Entra、Duo Security、1Password)、SaaS (Microsoft 365 audit、Google Workspace、Cloudflare、Proofpoint、ServiceNow、Jira)、VCS (GitHub、Snyk) 和网络。每个连接器都会渲染一个由 Schema 驱动的表单,在保存前运行一次实时的 `Test connection` 往返测试,使用应用层的 `CredentialVault` (Fernet AES-128-CBC + HMAC-SHA256) 加密每一个 secret,并按每个实例的计划开始轮询。演练:[docs/connectors](apps/docs/docs/connectors/index.md)。威胁模型 + 密钥轮换:[docs/operations/credentials](apps/docs/docs/operations/credentials.md)。 - **摄取** 来自任何连接器的事件到 Kafka 主干。 - **实时关联**,结合去重、ML 评分、每告警置信度评分和 Sigma/YARA 检测。 - **将信号汇总到实体** —— Risk-Based Alerting 在每个告警接触的用户、主机、IP 和域名上累积时间衰减的风险分数,在可调阈值下将它们提升为实体事件,并在告警 UI 中展示以实体为中心的队列。达到了已发布的 2026 KPI 标准的 ≥ 50:1 告警与事件压缩比(在 [`services/fusion/tests/test_entity_risk.py`](services/fusion/tests/test_entity_risk.py) 中进行 CI-gated)。 - **跨 SIEM 搜索** —— Federated Search 将单个查询扇出到已连接的 Splunk、Microsoft Sentinel 和 Elastic 实例,通过 [`services/connectors/app/federated/`](services/connectors/app/federated/) 中可插拔的转换器将查询转换为每个目标的本地方言(SPL、KQL、ES|QL)。 - **将检测作为代码管理** —— Detection-as-Code (DAC) 为检测规则提供了 提议 → 审查 → eval-gate → 提升 的生命周期。每个提议都包含来自套件的评估结果;导致 MITRE 准确率下降的候选规则无法被提升。端点位于 [`services/api/app/api/v1/endpoints/detection_proposals.py`](services/api/app/api/v1/endpoints/detection_proposals.py)。 - **按计划运行假设驱动的狩猎** —— [`hunts/`](hunts/) 中的 Hunt-as-Code YAML 定义声明了假设、MITRE ATT&CK 标签、日志来源、指标和 cron 计划。位于 [`services/agents/app/hunt/`](services/agents/app/hunt/) 的狩猎引擎在启动时加载语料库,按其计划运行狩猎,并将结果存储在数据库中。 - **跟踪检测漂移** —— Purple Team 服务获取 ATT&CK 覆盖快照并随时间对其进行差异比较,以便您可以看到哪些技术在版本之间增加或失去了覆盖。实现在 [`services/purple-team/app/services/drift.py`](services/purple-team/app/services/drift.py)。 - **验证 ChatOps 操作** —— 在高影响力的 SOAR 操作执行前,会将 HMAC 签名的批准提示发送到 Slack 或 Teams,并带有有时限的验证令牌。实现在 [`services/actions/app/executors/chatops.py`](services/actions/app/executors/chatops.py)。 - **与对手 LLM 进行基准测试** —— 一个确定性的 attacker-LLM 变异器生成对手事件以测试检测韧性。脚本:[`scripts/generate_adversary_incidents.py`](scripts/generate_adversary_incidents.py);评估:[`services/agents/tests/test_adversary_eval.py`](services/agents/tests/test_adversary_eval.py)。 - **丰富** 每一个信号,使用来自 TAXII 2.1、MISP、OTX 和 CISA KEV 的威胁情报。 - **推理** 攻击,通过基于 MITRE ATT&CK 的 LangGraph 多 Agent 系统。 - **检测偏差**,使用 UEBA —— 按用户的基线行为和 Z-score 异常评分。 - **诱捕对手**,使用 HMAC 签名的 honeytoken(URL、文件、AWS 凭证、电子邮件)。 - **验证覆盖率**,使用自动化的 Atomic Red Team 和 Caldera 对手模拟。 - **响应**,使用具有爆炸半径感知的 SOAR 操作,每一步都可解释。 - **治理**,支持多租户 RLS、细粒度的 RBAC、不可变的审计日志,以及 SOC 2 / ISO 27001 / NIST CSF / PCI-DSS / HIPAA / DORA 证据仪表板。 - **大规模管理**,使用 MSSP 父租户控制台 —— 引导子租户,跨租户委派操作,并在一个面板中查看汇总指标。 - **跟踪资产**,使用资产清单自动将漏洞与告警关联,并展示资产爆炸半径。 - **检测内部威胁**,使用用户风险画像、行为指标和同组偏差评分。 - **控制自动化**,通过 L0–L4 成熟度层级 —— 每个层级逐步解锁更多的自主修复能力,并带有每次操作的白名单和完整的审计关卡日志。 - **生成内部威胁情报** —— 从告警历史中收集 IOC,跟踪威胁行为者和攻击活动,订阅外部 STIX/TAXII 订阅源,全部可通过 REST API 查询。 - **评估云安全态势**,使用内置的 CSPMSPM 引擎摄取发现,跟踪扫描运行之间的漂移,并通过抑制/解决工作流展示按供应商的摘要。 - **通过身份进行关联**,使用由用户、设备和服务账户组成的图谱;将告警链接到身份节点,以进行爆炸半径查询和攻击路径重建。 - **自动化董事会报告** —— 安排 PDF/HTML 执行摘要,存储工件,并通过电子邮件或 Webhook 交付。 - **三层 Agent 记忆** —— 会话(进程内 LRU)、工作(Redis 支持,24 小时 TTL)和机构(PostgreSQL + pgvector,永久)。Agent 在跨工具调用、案例和会话时保持上下文;机构知识在重启后依然存在。 - **自主防护栏** —— 每次操作的置信度阈值(例如 `block_ip ≥ 0.90`,`close_alert ≥ 0.60`)限制着每一个自主决策。租户管理员可以通过 API 收紧或放宽阈值;所有防护栏决策都会被记录。 - **调查成本遥测** —— 每一个 LLM 调用都按模型、提示词 token、补全 token、延迟和估计的 USD 成本进行跟踪。聚合计数按运行持久化到 `aisoc_run_costs` 中,并在 SOC 仪表板中展示。 - **SOC 指标仪表板** —— 实时 MTTD、MTTR、误报率、告警/案例量(滚动 7 天)和 ATT&CK 技术热力图。由实时 API 端点和精美的 React 组件支持。 - **分析师覆盖反馈循环与追溯性重新处置** —— 分析师可以一键纠正 AI 结论(`true_positive`、`false_positive`、`benign`、`escalate`)。纠正结果持久化在告警上,流入 `aisoc_institutional_memory`,以告警签名(类别 + 连接器 + 主要 MITRE 技术)为键,并自动调整 FPR 指标。API 会展示*追溯性候选* —— 同一租户中具有相同签名的过去告警,其处置现在将会翻转 —— 以便一键批量重新处置。 - **自然语言检测创作** —— 用简单的英语描述威胁;API 会同时将其转换为 Sigma YAML、KQL (Microsoft Sentinel)、SPL (Splunk) 和 ES|QL (Elastic)。在没有配置 LLM 密钥时,会回退到策展模板。 - **闭环检测工程** —— 当告警被标记为误报时,Agent 会使用 LLM 起草 Sigma 规则修复,然后自动创建一个 Detection-as-Code 提案,路由通过同样的人工审查 DAC 工作流。CI 在批准后重新运行评估;回归关卡将阻止回归。 - **自然语言查询执行** —— 用纯英语提出安全问题 (`POST /nl-query/execute`)。API 会将其转换为 ES|QL、SPL 和 KQL;对于由 Elasticsearch 支持的租户,它会实时执行 ES|QL 查询,并返回所有三种方言的结构化结果、列元数据和查询文本。 - **以身份为中心的调查时间线** —— 构建一个锚定到任何用户、设备、服务账户或 IP 的时间顺序事件时间线 (`POST /identity-timeline/build`)。该时间线查询告警和原始事件,用相关的 ATT&CK 技术注释每个事件,计算实体风险分数,并返回一个排序的、去重的事件列表用于分类。 - **跨平台检测转换** —— 在 Sigma YAML、Splunk SPL、Microsoft Sentinel KQL、Elastic ES|QL 和 Google Chronicle YARA-L2 / UDM Search 之间双向转换任何检测规则 (`POST /translation/translate`)。LLM 处理复杂的逻辑;正则表达式回退处理简单的字段映射规则,无需外部依赖。 - **假设驱动的狩猎工作台** —— 用自然语言定义狩猎假设 (`POST /hunts`);API 自动在 ES|QL、SPL 和 KQL 中生成可执行的查询;分析师可以记录针对任何运行的发现,工作台会跟踪开放、已完成和无结论的狩猎。 - **钓鱼分类工作流** —— 提交原始电子邮件文本、URL、附件或域名指标 (`POST /phishing/submit`);LLM 提取 IOC,分配结论(phishing / benign / spam / malware / unknown),映射到 MITRE ATT&CK,并可选择将提交链接到现有案例。 - **知识库 + RAG** —— 摄取 runbook、策略、SOP 和 wiki (`POST /kb/ingest`);API 对每个文档进行分块和全文索引;分析师使用自然语言查询 (`POST /kb/query`) 并接收最匹配的块以及带有引用的 LLM 综合答案,在没有配置向量存储时由 PostgreSQL FTS 支持。 ### v1.5 — 市场驱动的补充 (2026-05-07) - **自主告警分类 Agent** —— 位于 `services/agents/app/agents/auto_triage_agent.py` 的专用 LLM Agent,将传入的告警分类为 `true_positive`、`false_positive` 或 `benign`,带有置信度评分,自动关闭低置信度噪声并升级其余告警。由四个同级 Agent 支持 —— 钓鱼、身份、云和内部威胁 —— 每个都针对其领域进行了调优。 - **对话式调查聊天** —— `/investigate` 处的多轮聊天界面,允许分析师就案例、证据和分类账上下文提出后续问题,而无需通过新建工单来回周转。组件:`apps/web/src/components/copilot/InvestigationChat.tsx`。 - **MITRE ATT&CK 覆盖顾问** —— 展示检测覆盖中影响最大的差距(逐个技术),并推荐规则来弥补这些差距,按对手流行度和风险进行排序。页面:`/coverage-advisor`。 - **交接班仪表板** —— 交出/接手的分析师可以在一个屏幕上看到活动案例、正在进行的调查和排队的审批。端点位于 `services/api/app/api/v1/endpoints/shifts.py`。页面:`/shifts`。 - **EASM (外部攻击面管理)** —— 针对组织意外暴露在公共互联网上的所有资产,进行资产发现、暴露服务清单和证书过期监控。页面:`/easm`。 - **MSSP 高管仪表板** —— 多租户汇总:KPI、跨租户告警量和按客户的 SLA 状态集于一屏。页面:`/mssp`。 - **告警噪声调优仪表板** —— 按规则的误报率、抑制候选项和一键调优建议。页面:`/noise-tuning`。 - **团队分析与游戏化** —— 分析师排行榜、按分析师的 MTTR、分类准确性和交接工作量平衡。页面:`/analytics/team`。 - **STIX 2.1 / TAXII 2.1 发布** —— 通过 `services/api/app/api/v1/endpoints/stix_taxii.py` 将租户的 IOC 和威胁行为者画像推送到上游/社区订阅源。 - **自动化合规证据** —— 通过 `services/api/app/api/v1/endpoints/compliance.py` 收集 SOC 2 / ISO 27001 / NIST CSF / PCI-DSS / HIPAA / DORA 的时间点证据;并在合规性仪表板中展示。 - **AI 生成的事件报告** —— 每个案例上的一键“Export Report”从 Investigation Ledger 生成 PDF 事件报告。 - **十个新连接器** —— SentinelOne、Cortex XDR、Wiz、Snyk、Zscaler、Proofpoint、ServiceNow、Jira、1Password 和 Duo Security;使目录总数达到 26 个。 - **气隙部署配置** —— `services/api/app/api/v1/endpoints/deployment.py` 为禁止外部订阅源的租户公开了气隙模式切换开关。 所有内容均在 MIT 许可证下发布。复刻它、自托管它、审计它、扩展它。 ## 亮点
### 实时融合 - 毫秒级摄取的 Kafka 主干 - 在 10M+ IOC 上进行布隆过滤器去重 - LightGBM + Isolation Forest 评分 - 每告警置信度评分(来源可靠性 × 指标保真度) - Risk-Based Alerting 实体汇总(≥ 50:1 告警与事件比,CI-gated) - 实时 WebSocket 订阅源传入控制台 ### AI Copilot - 具有持久记忆的 LangGraph Agent - 基于 MITRE ATT&CK + 租户数据的 Qdrant RAG - 自然语言威胁狩猎 - 每一个决策端到端可追踪 ### 知识图谱 - Neo4j 实体图(主机、用户、告警、IOC) - 每个案例的攻击路径重建 - 自动化操作的爆炸半径关卡 ### UEBA - 按用户的 Welford 在线基线(无批处理作业) - 带有同组分析的 Z-score 异常评分 - Kafka 集成:`security.events` → `security.anomalies` - 直接输入到 ML 融合评分 ### 检测工程 - Detection-as-Code (DAC) 生命周期:提议 → 审查 → eval-gate → 提升 - Sigma on OpenSearch + ClickHouse - YARA 文件/内存扫描 - KQL、EQL、Lucene、正则表达式查询类型 - 支持一键安装的社区检测目录 - 检测漂移快照(版本之间的 ATT&CK 覆盖率增量) - Hunt-as-Code:带有 cron 计划的 YAML 狩猎定义 ### 联合搜索 - 将单个查询扇出到 Splunk、Sentinel 和 Elastic - 可插拔的转换器:SPL、KQL、ES|QL ### Honeytoken - HMAC-SHA256 签名令牌(URL、文件、AWS 密钥、电子邮件) - 首次触碰 Webhook 告警 - 令牌生命周期:active / triggered / expired - 内置诱饵 URL 复制和分享 ### Purple Team - Atomic Red Team YAML 解析器 + Caldera 执行器 - ATT&CK 覆盖热力图(战术 × 技术) - 检测报告(真阳性 / 漏报) - 桌面推演会话管理器 - 检测漂移监控 ### 治理 - SAML 2.0 + OIDC SSO - 多租户 Postgres RLS - 细粒度的 RBAC(`resource:action` 权限) - 具有防篡改触发器的不可变审计日志 - SOC 2、ISO 27001、NIST CSF、PCI-DSS、HIPAA、DORA 仪表板 - MTTD / MTTR / MTTC SLA 跟踪 - ChatOps 验证(HMAC 签名的 Slack/Teams 批准提示)
## 架构 ``` flowchart LR subgraph Sources["Sources"] EDR["EDR / XDR"] SIEM["SIEM"] Cloud["Cloud APIs"] IDP["Identity"] Net["Network"] end subgraph Ingest["Ingest & Normalize"] Connectors["Connectors\n(Python)"] IngestSvc["Ingest worker\n(Go · OCSF)"] Enrich["Enrichment\n(Go · IOC + Shodan)"] end subgraph Spine["Event Spine"] Kafka[("Apache Kafka")] end subgraph Detect["Detect & Reason"] Fusion["Fusion\n(Python · ML)"] UEBA["UEBA\n(Python · baseline)"] TI["Threat Intel\n(TAXII / MISP / OTX)"] Rules["Rule engine\n(Sigma · YARA · KQL)"] Agents["AI Agents\n(LangGraph)"] HT["Honeytokens\n(Python)"] PT["Purple Team\n(ART + Caldera)"] end subgraph Storage["Storage Tier"] PG[("PostgreSQL\nconfig · cases · RLS")] CH[("ClickHouse\nevents · metrics")] OS[("OpenSearch\nIOCs · search")] QD[("Qdrant\nvector RAG")] N4[("Neo4j\nattack graph")] RD[("Redis\ncache · pub/sub")] end subgraph Surface["Surface"] API["Core API\n(FastAPI)"] RT["Realtime\n(Node · WS)"] Web["Web Console\n(Next.js 14)"] Actions["Actions / SOAR\n(Python)"] end Sources --> Connectors --> IngestSvc --> Kafka IngestSvc --> Enrich --> Kafka Kafka --> Fusion --> Kafka Kafka --> UEBA --> Kafka Kafka --> Rules --> Kafka TI --> Storage Fusion --> Storage HT --> Kafka PT --> API Agents --> QD Agents --> N4 API --> Storage RT --> Kafka Web --> API Web --> RT Actions --> Kafka ``` ### 服务图 | 服务 | 语言 | 端口 | 角色 | |---|---|---|---| | `web` | Next.js 14 + React | 3000 | SOC 控制台、基准测试记分板、营销落地页 | | `api` | Python · FastAPI | 8000 | 告警、案例、RBAC、图谱、规则、审计、合规、检测提案 (DAC)、联合搜索扇出、SLA 跟踪 | | `realtime` | Node.js · `ws` | 8086 | 按频道扇出 WebSocket + VAPID Web Push | | `agents` | Python · LangGraph | 8001 | 多 Agent 推理 + Qdrant RAG + Hunt-as-Code 引擎与调度器 | | `fusion` | Python | 8003 | 去重 + ML 评分 (LightGBM、IsoForest)、告警置信度、实体风险 / RBA | | `actions` | Python | 8002 | 具有爆炸半径关卡的 SOAR + ChatOps 验证 | | `connectors` | Python | — | 连接器轮询 (APScheduler)、凭证保管库、联合查询转换器 | | `threatintel` | Python | 8005 | TAXII / MISP / OTX / KEV 轮询 | | `ueba` | Python | 8007 | 用户与实体行为分析 | | `honeytokens` | Python | 8008 | Honeytoken 生命周期 + Webhook 告警 | | `purple-team` | Python | 8006 | Atomic Red Team + Caldera + ATT&CK 热力图 + 检测漂移快照 | | `ingest` | Go | 8081 | OCSF 规范化 + Shodan/CVE | | `enrichment` | Go | 8080 | IOC 丰富 (VT、AbuseIPDB、GreyNoise) | ### 存储层 | 存储 | 目的 | |---|---| | PostgreSQL | 租户、用户、案例、检测规则、RBAC、审计日志、合规 · 行级安全 | | ClickHouse | 高基数事件分析 + 警指标 | | OpenSearch | 全文 IOC + 行为者 + 报告搜索 · Sigma 后端 | | Qdrant | Agent 的向量 RAG,语义 ATT&CK 查找 | | Neo4j | 知识图谱:实体、攻击路径、爆炸半径 | | Redis | 缓存、发布/订阅、IOC 布隆过滤器、丰富 TTL | | Kafka | 事件流主干(原始、融合、漏洞、异常、操作) | ## 控制台导览 控制台将分析师的第零天工作流程融合到一个界面中: - **仪表板** —— KPI 磁贴、趋势图和 WebSocket 驱动的事件指示器。 - **告警与案例** —— 分类队列、状态工作流、证据时间线。 - **Investigation Ledger** —— 可回放的、逐步的记录,包含 Agent 在案例上发出的每一个提示词、工具调用和推理。 - **攻击图** —— 针对案例的 Neo4j 子图上的 Cytoscape + fcose 布局。 - **MITRE 热力图** —— 带有按战术技术密度的覆盖磁贴。 - **威胁狩猎** —— 支持按需狩猎的 Sigma / KQL / YARA 编辑器。 - **检测规则** —— 带有 Sigma 自动补全的 Monaco 驱动规则构建器。 - **检测目录** —— 支持一键租户安装的社区 Sigma 规则。 - **威胁情报** —— IOC 搜索、订阅源状态和 STIX / MISP 来源健康状况。 - **市场** —— 插件、剧本和检测,带有评分、徽章和类别过滤器。 - **剧本** —— 具有 SOAR 自动化的社区和私有剧本。 - **UEBA** —— 行为异常订阅源和同组偏差图表。 - **Honeytoken** —— 创建诱饵、查看触发日志、复制诱饵 URL。 - **Purple Team** —— ATT&CK 热力图、执行跟踪器、桌面推演会话。 - **合规性** —— SOC 2 / ISO 27001 / NIST CSF / PCI-DSS / HIPAA / DORA 证据。 - **SLA 仪表板** —— MTTD、MTTR、MTTC 指标 + 违规告警。 - **审计日志** —— 不可变的、分页的、租户范围的事件历史。 - **基准测试** —— 公开评估套件(告警压缩度量加上三个底层平台自一致性关卡),在 CI 中运行。 - **调查聊天** —— 位于 `/investigate` 的多轮对话 Copilot,用于案例范围的后续问答。 - **覆盖顾问** —— MITRE ATT&CK 覆盖缺口查找器,带有优先的规则建议。 - **交接班** —— 交出/接手分析师的交接仪表板,显示活动案例和排队的审批。 - **EASM** —— 外部攻击面清单:资产、暴露服务、证书过期监控。 - **噪声调优** —— 按规则的误报分析和一键调优建议。 - **MSSP 仪表板** —— 具有跨租户 KPI 和 SLA 状态的多租户高管汇总。 - **团队分析** —— 分析师排行榜、按分析师的 MTTR、分类准确性、交接负载平衡。 - **设置 → RBAC** —— 角色、权限和用户角色分配。 - **环境 Copilot** —— 在告警、案例、规则和剧本页面上感知上下文的下一步操作建议。每个建议都使用正确的 payload 运行正确的工具。 - **AI Copilot 停靠栏** —— 在任何页面上使用 `⌘J` 调出的滑出面板。 - **命令面板** —— 全局 `⌘K`,用于导航、快速操作和 Copilot。 ### Responder PWA 位于 `/responder/*` 的独立、可安装的 PWA 路由,专为随身携带寻呼机的分析师设计: - **Passkey 登录** —— 仅限 WebAuthn / FIDO2 平台验证器,无 SMS 回退。 - **值班视图** —— 每个租户的当前响应者,也会在桌面控制台的告警中显示。 - **审批队列** —— 针对具有爆炸半径关卡的 SOAR 操作的长期审批请求,使用硬件认证的 passkey 签字批准。 - **推送通知** —— 通过 `services/realtime` 交付的 VAPID 签名 Web Push,遵循值班轮换。 - **离线 Shell** —— Service worker + 缓存的应用 shell,以便在信号不稳定的运营商链路上响应者界面仍能继续加载。 参见 [`apps/web/src/app/(responder)/`](apps/web/src/app/(responder)/) 和 [`services/api/migrations/009_responder_pwa.sql`](services/api/migrations/009_responder_pwa.sql)。 营销落地页位于 `/`,控制台位于 `/dashboard`。两者共享相同的品牌令牌。 ## 快速入门 ### 一键演示 要在您的浏览器中查看 AiSOC 如何调查一个正在进行的勒索软件案例: ``` git clone https://github.com/beenuar/AiSOC.git cd AiSOC pnpm aisoc:demo ``` 这个单一命令将: 1. 从 `ghcr.io/beenuar/*` 拉取预构建的镜像(api、agents、web、realtime)。 2. 启动精简的演示配置 —— Postgres、Redis、Kafka、api、agents、realtime、web。 3. 运行规范数据播种器 (`services/api/app/scripts/seed_demo.py`) 作为一次性容器,完成时退出。播种器是幂等的:针对已经播种的卷重新运行是一个空操作。 4. 定位 `INC-RT-001` —— 一个在您到达时正在进行的 LockBit 3.0 勒索软件调查(加密正在进行中,Agent 正在向 Investigation Ledger 流式传输决策,一个自动隔离剧本处于 DAG 中途)。 5. 直接在您的浏览器中打开 `/cases/INC-RT-001?tab=ledger`,并已自动登录演示分析师 (`demo@aisoc.dev`)。 在 Docker 守护进程处于热启动状态的干净 Mac 上的目标:**从克隆到调查不到 5 分钟**。 | 步骤 | 时间 | |---|---| | `docker compose pull` (冷启动) | ~90s | | `docker compose up` + 健康检查 | ~60s | | 播种规范数据 (一次性容器) | ~30s | | 启动实时调查步骤 | ~30s | | 总计 | ~3.5 分钟 (热启动) / ~5 分钟 (冷启动) | 浏览器打开时您会看到什么: - **Investigation Ledger** —— Agent 针对 `INC-RT-001` 的每步提示词、响应、引用的证据和工具调用,可从任何步骤回放。 - **决策图** —— 产生结论的 LangGraph 遍历的 Cytoscape 视图。 - **剧本时间线** —— 正在进行的勒索软件遏制 DAG,包含已完成和待处理的步骤。 - **15 个其他播种案例** —— 钓鱼、凭证访问、横向移动、数据渗出、云接管 —— 涵盖 `INC-PH-*`、`INC-CR-*`、`INC-LM-*`、`INC-EX-*`、`INC-CL-*` 系列,均包含填充的告警、IOC 和账本工件。 完成后运行:`pnpm aisoc:demo:down`(停止容器并删除演示卷)。 #### 托管的公共互联网等效方案 相同的技术栈提供了 Cloudflare Tunnel 模板(参见[您自己域名上的公开演示](#public-demo-on-your-own-domain))以及针对 [Render](infra/render/render.yaml) 和 [Fly.io](infra/fly/) 测试过的部署配置——两者都在部署生命周期中接入了 `alembic upgrade head && python -m app.scripts.seed_demo`,因此在 `render blueprint launch` 或 `fly deploy` 之后会呈现相同的 `INC-RT-001` 演示。 包含所有服务(UEBA、Honeytoken、Purple Team、ClickHouse、OpenSearch、Neo4j、Qdrant)的完整开发快速入门如下。 ### 在您自己域名上的公开演示 相同的演示技术栈可以从公共互联网访问,而无需暴露 端口、开放防火墙规则或支付云虚拟机费用。AiSOC 提供了 一个 Cloudflare Tunnel 模板以及一个包装脚本,它会: 1. 通过 `pnpm aisoc:demo --no-open` 启动精简的演示配置(Postgres、Redis、Kafka、api、agents、realtime、web)。 2. 创建一个命名的 `cloudflared` 隧道(如果已存在则复用)。 3. 从 [`infra/cloudflare/config.yml.example`](infra/cloudflare/config.yml.example) 渲染一个入口配置到 `~/.cloudflared/.yml`,在使用 `cloudflared tunnel ingress validate` 验证之后。 4. 在您的区域中添加 DNS 路由,以便根域 (`https://`) 和 `api`、`ws`、`docs` 子域都解析到该隧道。 5. 在前台运行 `cloudflared tunnel run`(Ctrl+C 可干净退出;本地技术栈继续运行)。 结果:一个可公开访问的、完全自托管的 SOC 控制台,从 您的笔记本电脑提供服务,仅接受通过 Cloudflare 进入的流量。您的 路由器或防火墙上没有开放任何入站端口。 #### 前置条件 - DNS 由 Cloudflare 管理的域名。 - 本地安装了 [`cloudflared`](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/get-started/) CLI(在 macOS 上运行 `brew install cloudflared`)。 - 两种认证方法之一(脚本接受任一): - **(A) Origin-cert 流程:** 在此机器上运行一次 `cloudflared tunnel login` —— 它会在 `~/.cloudflared/` 中放入一个 `cert.pem`,授权此主机管理区域上的隧道和 DNS 记录。然后脚本将自动创建隧道、渲染入口配置并接入 DNS。 - **(B) Tunnel-token 流程 ★:** 在 Cloudflare Zero Trust 仪表板中创建一个隧道(网络 → 隧道 → *创建隧道* → Cloudflared),配置四个公共主机名(apex/api/ws/docs → `localhost:3000/8000/8086/3001`),并复制仪表板提供给您的 `--token ey…` 值。不需要 `cert.pem`,不需要本地 DNS 管道。当基于浏览器的 `cloudflared tunnel login` 无法写入证书时(企业浏览器、无头机器等),此方法非常有用。 #### 运行它 ``` # (A) Origin-cert 流程 — 脚本管理 tunnel、ingress 和 DNS: pnpm demo:public # default: tryaisoc.com DOMAIN=demo.example.com pnpm demo:public # any zone you control # (B) Tunnel-token 流程 — 仪表板拥有 tunnel、ingress 和 DNS: export CLOUDFLARE_TUNNEL_TOKEN='ey…' # paste the token from the dashboard pnpm demo:public # script auto-detects the token # 已经在运行本地堆栈?只需启动 tunnel: pnpm demo:public:tunnel-only # works for both auth modes # 只需预置 tunnel + DNS,但不要运行 cloudflared # (仅限 origin-cert 流程 — 在执行 `cloudflared service install` # 以使其 24/7 全天候运行之前很有用): SKIP_RUN=1 pnpm demo:public:setup ``` 所有环境变量都被转发到 [`infra/cloudflare/tunnel.sh`](infra/cloudflare/tunnel.sh): `DOMAIN`(根域,默认 `tryaisoc.com`),`TUNNEL_NAME`(默认 `aisoc-tryaisoc`, 在令牌模式下忽略),`SUBDOMAINS`(默认 `"api ws docs"`,在令牌 模式下忽略),`SKIP_DNS=1`(不触碰 DNS 记录),`SKIP_RUN=1`(设置好一切 但不运行隧道),和 `CLOUDFLARE_TUNNEL_TOKEN`(切换到流程 B)。 运行 `bash scripts/demo-public.sh --help` 查看完整设置,或者阅读 [`infra/cloudflare/README.md`](infra/cloudflare/README.md) 了解拓扑 图和生产加固说明(将 `cloudflared` 作为 launchd / systemd 服务运行,在其前面叠加 Cloudflare Access 等)。 #### 停止它 ``` # 在 tunnel 终端中按 Ctrl-C 停止 cloudflared。 # 然后关闭本地堆栈: pnpm aisoc:demo:down ``` 此 README 顶部链接的 `tryaisoc.com` 实例正是如此: 这个脚本,从维护者的机器上运行。隧道基础设施是 上游的,因此任何人都可以在他们自己的域名上做同样的事情。 ### 完整技术栈(开发) #### 前置条件 - Docker 24+ 和 Docker Compose v2 - Node.js 20+ 和 pnpm 8+ - Go 1.21+ 和 Python 3.11+(仅用于本地服务修改) #### 1. 克隆 ``` git clone https://github.com/beenuar/AiSOC.git cd AiSOC cp .env.example .env ``` #### 2. 配置 ``` # AI 提供商(需要一个) ANTHROPIC_API_KEY=sk-ant-... OPENAI_API_KEY=sk-... # 可选扩充 CYBLE_API_KEY=... VIRUSTOTAL_API_KEY=... ABUSEIPDB_API_KEY=... GREYNOISE_API_KEY=... SHODAN_API_KEY=... # 可选 TAXII 源 TAXII_FEEDS=https://cti-taxii.mitre.org/taxii/,enterprise-attack,, # 可选 SSO (SAML 2.0) SAML_IDP_METADATA_URL=https://your-idp.example.com/metadata # 可选 SSO (OIDC) OIDC_DISCOVERY_URL=https://your-idp.example.com/.well-known/openid-configuration OIDC_CLIENT_ID=aisoc OIDC_CLIENT_SECRET=... # 可选 Purple Team CALDERA_URL=http://localhost:8888 CALDERA_API_KEY=... ATOMIC_RED_TEAM_PATH=/opt/atomic-red-team/atomics ``` #### 3. 启动 ``` docker compose up -d docker compose ps ``` 首次启动需要约 60 秒,等待数据存储预热。 #### 4. 播种演示数据 ``` pnpm seed:demo # generates cases, alerts, IOCs, attack paths, UEBA anomalies ``` #### 5. 验证 ``` pnpm aisoc:doctor # health check: ports, containers, demo data, API + WS ``` 如果任何检查失败,诊断程序会准确告诉您在登录前需要修复什么。 #### 5b. 运行公开评估套件(可选) ``` # 针对内置的 200-incident # 数据集(55 个不同的 templates)及其配套的 synthetic_telemetry.jsonl # 语料库运行全部五个 substrate eval 套件,然后输出机器可读报告。数据集大小由 # services/agents/tests/eval_data/synthetic_incidents.json 固定 — 没有 # --count 标志。 python scripts/run_evals.py --out eval_report.json # 或者运行单个 eval gate pytest services/agents/tests/test_mitre_accuracy.py pytest services/agents/tests/test_synthetic_telemetry.py # schema + coverage gate # 从头开始重新生成数据集和支持的遥测语料库 # (例如在添加 template 之后)。这两个文件均通过 # seeded RNG 确定性生成。 python scripts/generate_eval_incidents.py ``` 该套件会写入 `eval_report.json` 和 `eval_mitre_accuracy_report.json`,[公开评估套件页面](apps/docs/docs/benchmark.md) 会渲染它们。每个评分套件都会报告 55 个模板中每个案例的均值和每个模板的宏值 —— 该宏值是在数据集扩大时不会被稀释的回归信号。相同的套件在针对 `main` / `develop` 分支的每个 PR 上在 CI 中运行 —— 参见 [`.github/workflows/ci.yml`](.github/workflows/ci.yml)。 该套件针对合成数据运行确定性的底层平台代码(提取器、融合、模板、评判器)—— 它不会调用实时的 LLM Agent。四个评分指标中的三个是底层平台自一致性关卡,而不是 准确度分数;合成遥测套件是一个 schema/覆盖率关卡,而不是分数。[基准测试页面](apps/docs/docs/benchmark.md) 记录了每个套件测量什么和不测量什么。 #### 6. 打开 | 界面 | URL | 备注 | |---|---|---| | 营销页 | http://localhost:3000 | 公开落地页 | | 控制台 | http://localhost:3000/dashboard | 默认用户:`admin@aisoc.local` / `changeme` | | API (Swagger) | http://localhost:8000/docs | REST + GraphQL 端点 | | Agents | http://localhost:8001/docs | LangGraph 运行器 | | UEBA | http://localhost:8007/docs | 行为分析 | | Honeytokens | http://localhost:8008/docs | Honeytoken 生命周期 | | Purple Team | http://localhost:8006/docs | 对手模拟 | | Realtime WS | ws://localhost:8086/ws/alerts | 实时告警频道 | | Neo4j | http://localhost:7474 | `neo4j` / `neo4j_dev_secret` | | Grafana | http://localhost:3001 | `admin` / `admin` (`monitoring` 配置) | | Jaeger | http://localhost:16686 | 分布式追踪 (`monitoring` 配置) | #### 可选配置 ``` docker compose --profile connectors up -d # CrowdStrike, Splunk, AWS, Okta, Sentinel docker compose --profile monitoring up -d # Prometheus, Grafana, Jaeger, OTel Collector ``` ## 单体仓库布局 ``` AiSOC/ ├── apps/ │ ├── web/ # Next.js 14 console + marketing landing + Responder PWA route │ └── docs/ # Docusaurus documentation site ├── services/ │ ├── api/ # Core REST API + Neo4j graph + rule engine + auth + RBAC + compliance + ledger │ ├── ingest/ # Go · OCSF normalization · Shodan + CVE │ ├── enrichment/ # Go · IOC enrichment │ ├── fusion/ # Python · dedup + ML scoring │ ├── agents/ # Python · LangGraph + Qdrant RAG + investigation ledger writer │ ├── actions/ # Python · SOAR + blast-radius gating │ ├── threatintel/ # Python · TAXII / MISP / OTX / KEV │ ├── realtime/ # Node.js · per-channel WebSocket fan-out + VAPID Web Push │ ├── ueba/ # Python · User & Entity Behavior Analytics │ ├── honeytokens/ # Python · deceptive credential traps │ ├── purple-team/ # Python · Atomic Red Team + Caldera + ATT&CK │ └── mcp/ # TypeScript · Model Context Protocol server (@aisoc/mcp) ├── integrations/ # Connector implementations (CrowdStrike, Splunk, AWS, …) ├── packages/ │ ├── types/ # Shared TS types │ ├── ui/ # Shared React primitives │ ├── ocsf/ # OCSF normalization helpers │ ├── sdk-ts/ # TypeScript client SDK for AiSOC API (npm: @aisoc/sdk) │ ├── sdk-py/ # Async Python client SDK (PyPI: aisoc-sdk) │ ├── sdk-go/ # Go client SDK + models (module: github.com/beenuar/aisoc/sdk-go) │ ├── plugin-sdk-ts/ # TypeScript plugin development SDK │ ├── plugin-sdk-py/ # Python plugin development SDK (PyPI: aisoc-plugin-sdk) │ ├── plugin-sdk-go/ # Go plugin development SDK (module: github.com/beenuar/aisoc/plugin-sdk-go) │ └── aisoc-cli/ # CLI: scaffold / validate / publish plugins & detections ├── detections/ # Community Sigma detection rules (YAML) ├── hunts/ # Hunt-as-Code YAML definitions (hypothesis + indicators + schedule) ├── playbooks/ # Community SOAR playbooks (YAML) ├── plugins/ # First-party plugins (Go + Python) ├── marketplace/ # Marketplace index (JSON, generated by scripts/build_marketplace.py) ├── infra/ │ ├── coolify/ # Coolify (self-hosted Heroku-style PaaS) quickstart │ ├── fly/ # Fly.io machines + deploy script │ ├── railway/ # Railway template (railway.toml) │ ├── render/ # Render blueprint (render.yaml) │ ├── terraform/ # AWS (VPC, EKS, RDS, ElastiCache, MSK) │ └── helm/ # Kubernetes Helm chart (HPA, PDB, Ingress per service) ├── docs/ │ ├── openapi.yaml # OpenAPI 3.1 spec │ ├── architecture/ # System design docs │ └── operations/ # Runbooks + multi-region guide └── scripts/ ├── aisoc-demo.ts # One-shot demo orchestrator (powers `pnpm aisoc:demo`) ├── aisoc-doctor.ts # Local health check ├── run_evals.py # Public eval harness (per-case + per-template macros, telemetry coverage) ├── generate_eval_incidents.py # 200-incident synthetic generator (55 templates) + synthetic_telemetry.jsonl ├── build_marketplace.py # Build marketplace/index.json from detections+playbooks+plugins ├── validate_detections.py # YAML schema validation for Sigma detections ├── validate_playbooks.py # YAML schema validation for playbooks ├── backup.sh # Postgres + ClickHouse + plugins → S3/R2 ├── restore.sh # Point-in-time restore └── generate_runbook.py # Auto-generate runbooks from OTel traces ``` ## API 参考 完整的 OpenAPI 3.1 规范位于 [`docs/openapi.yaml`](docs/openapi.yaml)。端点组: | 标签 | 前缀 | 备注 | |---|---|---| | `auth` | `/api/v1/auth/` | JWT 登录、SAML ACS、OIDC 回调 | | `alerts` | `/api/v1/alerts/` | CRUD、批量状态、时间线 | | `cases` | `/api/v1/cases/` | 创建、链接告警、证据 | | `rules` | `/api/v1/rules/` | Sigma / YARA / KQL CRUD + 测试 | | `detections` | `/api/v1/detections/` | 目录浏览 + 安装 | | `detection-proposals` | `/api/v1/detection-proposals/` | DAC 生命周期:提议、审查、eval-gate、提升 | | `federated` | `/api/v1/federated/` | 扇出查询到已连接的 SIEM (Splunk、Sentinel、Elastic) | | `hunts` | `/api/v1/hunts/` | Hunt-as-Code:列表、获取、运行、发现 | | `entity-risk` | `/api/v1/entity-risk/` | RBA:按风险分数排名的顶级实体、实体详情 | | `plugins` | `/api/v1/plugins/` | 注册表、发布、评分、批准 | | `playbooks` | `/api/v1/playbooks/` | 社区 + 私有剧本 | | `marketplace` | `/api/v1/marketplace/` | 带有过滤器的插件市场 | | `compliance` | `/api/v1/compliance/` | SOC 2 / ISO 27001 / NIST CSF / PCI / HIPAA / DORA | | `audit` | `/api/v1/audit/` | 不可变审计日志,分页 | | `rbac` | `/api/v1/rbac/` | 角色、权限、用户角色分配 | | `sla` | `/api/v1/sla/` | MTTD/MTTR/MTTC 指标 + 违规日志 | | `ueba` | `/api/v1/ueba/` | 异常订阅源 + 基线统计 | | `honeytokens` | `/api/v1/honeytokens/` | 令牌生命周期 + 触发事件 | | `purple-team` | `/api/v1/purple-team/` | Atomic 测试、执行、桌面推演会话 | | `graph` | `/api/v1/graph/` | 案例的 Neo4j 子图 | | `intel` | `/api/v1/intel/` | IOC 搜索、订阅源状态 | | `graphql` | `/graphql` | GraphQL schema(告警、案例、情报) | 交互式文档:`http://localhost:8000/docs` (Swagger) 或 `http://localhost:8000/redoc` (ReDoc)。 ## 插件和检测 SDK 该 CLI 已作为 Python 包发布。使用 `pipx`(推荐)或 `pip` 安装它: ``` pipx install aisoc-cli # PyPI release # 或者,从 monorepo 中: pip install -e packages/aisoc-cli # 搭建新 plugin aisoc scaffold plugin my-connector # 验证 detection rule aisoc validate detection ./detections/my-rule.yaml # 发布到社区 registry(Ed25519 签名) aisoc publish plugin ./my-connector --key ~/.aisoc/signing.key ``` SDK: - TypeScript — `packages/plugin-sdk-ts` (npm:`@aisoc/plugin-sdk`) - Python — `packages/plugin-sdk-py` (PyPI:`aisoc-plugin-sdk`) - Go — `packages/plugin-sdk-go` (模块:`github.com/beenuar/aisoc/plugin-sdk-go`) 检测作者可以将 YAML 规则直接放入 `detections/`,将 SOAR 剧本放入 `playbooks/`。CI 在每个 PR 上验证它们([`scripts/validate_detections.py`](scripts/validate_detections.py)、[`scripts/validate_playbooks.py`](scripts/validate_playbooks.py)),并且 [`scripts/build_marketplace.py`](scripts/build_marketplace.py) 会重新发布 [`marketplace/index.json`](marketplace/index.json),以便应用内市场自动识别它们。 ## 开发 ### 前端 ``` cd apps/web pnpm install pnpm dev ``` ### 后端(选择性) ``` docker compose up -d postgres redis kafka clickhouse opensearch qdrant neo4j # Core API cd services/api && poetry install && poetry run uvicorn app.main:app --reload --port 8000 # UEBA cd services/ueba && poetry install && poetry run uvicorn app.main:app --reload --port 8007 # Honeytokens cd services/honeytokens && poetry install && poetry run uvicorn app.main:app --reload --port 8008 # Purple Team cd services/purple-team && poetry install && poetry run uvicorn app.main:app --reload --port 8006 # Fusion cd services/fusion && poetry install && poetry run uvicorn app.main:app --reload --port 8003 # Go 服务 cd services/ingest && go run main.go ``` ### 数据库迁移 ``` # 运行所有迁移 docker compose exec api alembic upgrade head # 按服务迁移 cd services/ueba && poetry run alembic upgrade head cd services/honeytokens && poetry run alembic upgrade head cd services/purple-team && poetry run alembic upgrade head ``` ### 测试 ``` cd apps/web && pnpm test cd services/api && poetry run pytest cd services/ueba && poetry run pytest cd services/honeytokens && poetry run pytest cd services/purple-team && poetry run pytest cd services/ingest && go test ./... ``` ## 部署 ### Kubernetes ``` helm repo add bitnami https://charts.bitnami.com/bitnami helm install aisoc ./infra/helm/aisoc \ --namespace aisoc \ --create-namespace \ --values ./infra/helm/aisoc/values.yaml \ --set global.environment=production ``` Helm chart 包括每个微服务的 HPA、PDB 和 Ingress。 ### 备份与恢复 ``` # 将 Postgres + ClickHouse + plugins 备份到 S3 ./scripts/backup.sh --target s3://my-bucket/aisoc-backups # Point-in-time 恢复 ./scripts/restore.sh --source s3://my-bucket/aisoc-backups/2026-05-03T10:00:00Z ``` ### 多区域 参见 [`docs/operations/multi-region.md`](docs/operations/multi-region.md) 获取主备和多主部署指南。 ### 运维手册 ``` # 从实时 OTel trace 数据自动生成 runbook python scripts/generate_runbook.py --service api --output docs/operations/runbooks/api.md ``` ### AWS 上的 Terraform ``` cd infra/terraform terraform init terraform plan -var="environment=prod" terraform apply ``` ## 路线图 公开路线图位于 [ROADMAP.md](ROADMAP.md)。v4.1、v5.0、v5.1、v5.2 和 v6.0 项目已发布(Investigation Ledger、环境 Copilot、Responder PWA、公开评估套件、MCP server 和一键演示)。v6.1 市场驱动的功能扩展已发布(自主分类 Agent、调查聊天、覆盖顾问、交接班、EASM、MSSP 仪表板、噪声调优、团队分析、STIX/TAXII 发布、自动化合规证据、AI 生成的事件报告、十个新连接器)。下一步: - v6.2 — 跨自托管实例的联合威胁情报共享 - v6.3 — 使用 CRDT 进行案例同步的多区域多主架构 - v6.4 — Agent 创作的检测,带有人工审查环节 ## 贡献 欢迎各种规模的 PR。在提交 PR 之前,请阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 了解工作流程和[行为准则](CODE_OF_CONDUCT.md)。 适合新手的 Issue: - `integrations/` 中的新连接器集成 - `detections/` 中的社区 Sigma 检测 - `hunts/` 中的 Hunt-as-Code YAML 定义 - 发布到市场的新插件 - 前端 UI 打磨 (Tailwind / React) - `apps/docs/` 中的文档和教程 - 任何服务的测试覆盖 - 翻译 ## 安全 对于安全问题,请不要提交公开的 Issue。请使用 [GitHub 的私有漏洞报告](https://github.com/beenuar/AiSOC/security/advisories/new)。完整政策详见 [SECURITY.md](SECURITY.md)。AiSOC 遵循协调披露原则。 ## 许可证 [MIT](LICENSE) — © 2024–至今 AiSOC 贡献者。
[报告 Bug](https://github.com/beenuar/AiSOC/issues/new?template=bug_report.md) · [请求功能](https://github.com/beenuar/AiSOC/issues/new?template=feature_request.md) · [贡献](CONTRIBUTING.md) · [阅读文档](apps/docs/)
标签:AI安全, Chat Copilot, Cloudflare, DLL 劫持, MITRE ATT&CK, SOAR, 人工智能, 可重放分析, 告警融合, 大语言模型, 安全事件响应, 安全事件调查, 安全运营中心, 搜索引擎查询, 日志关联分析, 日志审计, 智能分诊, 本地部署, 测试用例, 用户模式Hook绕过, 紫队演练, 网络安全, 网络安全攻防, 网络映射, 自动化分诊, 请求拦截, 逆向工具, 隐私保护