RobertoBM21/CTI-platform
GitHub: RobertoBM21/CTI-platform
基于 STIX 2.1 标准构建的网络威胁情报平台,采用 DDD 与六边形架构解决复杂威胁数据的摄取、持久化与可视化问题。
Stars: 1 | Forks: 0
# 网络威胁情报 (CTI) 平台
## 🎯 项目概述
本项目是一个严格围绕 **STIX 2.1 (Structured Threat Information Expression)** 标准构建的综合网络威胁情报 (CTI) 平台。它支持复杂网络威胁数据的摄取、处理和可视化,包括攻击行动、入侵集合、恶意软件和攻击模式。
该平台的主要工程挑战在于处理 STIX 2.1 关系深度互联的图状结构特性,同时保持高性能、严格的数据完整性以及清晰、解耦的架构。
## 💻 技术栈
- **后端:** TypeScript, Node.js, NestJS
- **前端:** Next.js (React), Tailwind CSS
- **数据库与持久化:** MongoDB
- **架构:** 领域驱动设计 (DDD)、六边形架构 (端口与适配器)
- **QA 与测试:** Jest (单元/集成), Vitest, Playwright (E2E)
- **DevOps:** Docker, Docker Compose, GitHub Actions (CI/CD)
## 🧠 架构与工程影响
作为该平台的唯一架构师和开发者,我专注于构建一个可维护且可扩展的系统,能够解析庞大的数据 payload。主要技术成就包括:
- **严格的领域驱动设计 (DDD):** 采用六边形架构设计后端,将业务逻辑严格分离到不同的限界上下文(`Threat`、`Cyber`、`Reporting`、`Auth`)中。这确保了核心的 STIX 实体与基础设施和交付机制完全隔离。
- **复杂数据摄取引擎:** 设计了一个健壮的摄取 pipeline(`Bundle Ingestion Service`),能够处理大型 STIX 2.1 JSON bundle。该系统能高效解析、验证并将数百个实体及其复杂的相互关系持久化到 MongoDB 中。
- **NoSQL 数据建模:** 使用 MongoDB 设计了持久层,以自然适应 STIX 2.1 对象高度灵活和动态多态的特性,并实现了自定义 repository 来处理复杂的文档引用和查询。
- **全栈端到端交付:** 使用 Next.js 开发了一个响应式、类型安全的前端来可视化威胁态势,弥合了原始后端情报与可操作用户界面之间的差距。
- **全面的测试策略:** 从第一天起就通过为后端领域逻辑实现单元和集成测试,并使用 **Playwright** 对关键用户流程进行健壮的端到端 (E2E) 测试,从而保障了软件质量。
## 🚀 快速开始
该平台已完全容器化,便于评估和部署。你可以使用 Docker Compose 启动整个技术栈:
```
# 复制示例环境变量
cp .env.example .env
# 更新所需的 secrets (Google)
# 构建并启动服务
docker-compose up -d --build
```
_如果你是技术主管或招聘人员,我鼓励你探索 `backend/src/contexts` 目录以审查 DDD 的实现,特别是 STIX 领域模型和摄取服务是如何使用端口与适配器进行隔离的。_
标签:MITM代理, MongoDB, NestJS, STIX, 威胁情报, 开发者工具, 版权保护, 特征检测, 网络安全, 自动化攻击, 请求拦截, 隐私保护, 领域驱动设计