harshitha-parthiban024/SentinelSOC
GitHub: harshitha-parthiban024/SentinelSOC
一个基于智能体编排的全栈安全事件响应演示平台,通过多阶段 pipeline 对目标站点进行被动侦察与分析,并提供人工审核门控和 NIST-AI-RMF 审计追踪。
Stars: 0 | Forks: 0
# SentinelSOC
一个智能体安全事件响应演示:一个“编排器”运行被动侦察 → 分诊 → 关联 → 威胁狩猎 → 响应 → 校准门控 pipeline 来针对目标站点,通过 SSE 实时流式传输进度,并将低置信度的发现路由到人工审核队列。
这是一个**单一的、统一的全栈应用** —— 前端、后端 API 和数据库都在同一个进程中运行:
- **前端 + 后端:** [TanStack Start](https://tanstack.com/start)(React 19 + TypeScript)。UI 和 API 路由 (`src/routes/api/soc.*.ts`) 位于同一个应用中,并一起构建/部署 —— 无需单独的后端服务器或 CORS 设置。
- **数据库:** MongoDB(通过 Mongoose)。所有状态 —— 紧急停止开关、自主权上限、审核队列、结果、审计日志、侦察缓存 —— 都会被持久化,因此在重启后依然保留。
旧交接文档中的独立 Express 后端**不再使用** —— 其逻辑(相同的业务规则,仅基于 Mongo)已直接合并到此应用的服务器路由中,因此您只需运行一个代码库和一个进程,而不是通过 HTTP 拼接在一起的两个重复实现。
## 1. 前置条件
- Node.js 20+(或者 Bun,如果您愿意 —— 包含了一个 `bun.lock`)
- 一个 MongoDB 实例 —— 可以是:
- **本地,通过 Docker**(最简单):`docker compose up -d mongo`
- **本地原生安装**的 `mongod`
- **MongoDB Atlas**(免费版即可)—— 获取连接字符串
## 2. 设置
```
cp .env.example .env
# 如果使用 Atlas 或非默认的 Mongo URI,请编辑 .env
npm install # or: bun install
```
该应用在**没有 AI API 密钥**的情况下也能完全正常运行 —— 事件描述将回退到确定性模板。要使用真实的 AI 生成的描述,请在 `.env` 中设置 `AI_PROVIDER=anthropic` 或 `AI_PROVIDER=openai` 以及匹配的 API 密钥。
## 3. 运行
**开发环境:**
```
npm run dev # or: bun run dev
```
打开 http://localhost:3000。
**生产环境:**
```
npm run build # or: bun run build
npm run start # runs the built server: node .output/server/index.mjs
```
(下面添加的 `start` 脚本直接运行 Node 服务器 —— 参见 `package.json`。)
## 4. 功能说明
- 访问 `/` 并点击 **Run sweep** 以针对内置的公共演示目标之一(OWASP Juice Shop / PortSwigger Gin & Juice Shop)启动 pipeline 运行。仅限被动 `GET` 探测 —— 无漏洞利用,无身份验证尝试。
- 在允许的自主权级别下,置信度高于阈值的发现将自动处理;其他所有结果都会进入 `/queue` 以供人工决策(批准 / 拒绝 / 升级)。
- `/audit` 显示每个智能体和分析师操作的完整 NIST-AI-RMF 标记审计追踪(GOVERN / MAP / MEASURE / MANAGE)。
- 紧急停止开关和全局自主权上限可在 UI 中控制,并会立即影响后续运行。
## 5. 项目结构
```
SentinelSOC/
├── src/
│ ├── routes/ # pages (file-based routing) + API routes
│ │ ├── index.tsx /
│ │ ├── queue.tsx /queue
│ │ ├── audit.tsx /audit
│ │ └── api/
│ │ ├── soc.state.ts GET /api/soc/state
│ │ ├── soc.control.ts POST /api/soc/control (kill switch, autonomy cap, review, reset)
│ │ └── soc.run.ts GET /api/soc/run (SSE pipeline stream)
│ ├── lib/soc/
│ │ ├── types.ts shared types
│ │ ├── config.ts env-driven runtime config (AI provider, port)
│ │ ├── mongo.server.ts Mongoose connection (memoized)
│ │ ├── models/ Mongoose schemas (SocConfig, QueueItem, Outcome, AuditEntry, ReconCache)
│ │ ├── state.server.ts persistence layer — reads/writes MongoDB
│ │ ├── recon.server.ts passive recon probes + cached snapshots
│ │ ├── engine.server.ts scoring, autonomy, gating logic (pure functions)
│ │ ├── narrate.server.ts AI narrative generation (Anthropic/OpenAI, with fallback)
│ │ └── client.ts fetch helpers used by the React UI
│ └── components/soc/ UI
├── docker-compose.yml local MongoDB for development
├── .env.example
└── package.json
```
## 6. 部署(例如部署到 VM/EC2)
生产构建针对普通的 Node.js 服务器(`nitro` 预设 `node-server` —— 在 `vite.config.ts` 中设置 —— 因为 MongoDB 驱动程序需要真正的支持 TCP 的 Node 运行时,而不是 edge/Workers 运行时):
```
npm run build
node .output/server/index.mjs
```
将其置于 Nginx 之后并在 PM2 或 systemd 下运行,与任何 Node 应用一样。通过环境变量将 `MONGODB_URI` 指向您的 MongoDB Atlas 集群(或同一机器/VPC 上的 Mongo 实例)—— 切勿将真实凭据提交到 `.env`。
标签:MITM代理, MongoDB, Petitpotam, React, Syscalls, 安全运营中心, 库, 应急响应, 网络映射, 自动化攻击, 请求拦截