Siddhu007006/Sentinal

GitHub: Siddhu007006/Sentinal

Sentinel 是一个基于 FastAPI 微服务架构的威胁情报与数字资产分析平台,目前专注于核心数据库 schema 与 ORM 层的构建。

Stars: 0 | Forks: 0

# Sentinel — 威胁情报与数字资产分析平台 一个全面的威胁情报平台,用于通过集成多供应商威胁情报来分析、丰富和管理数字资产。 ## 项目概述 **Sentinel** 采用可扩展、面向微服务的架构构建,具有以下特性: - RESTful API 后端 (Python/FastAPI) - 具有全面 schema 的 PostgreSQL 数据库 - 实时威胁情报增强 - 多供应商 OSINT 集成 - 全面的审计日志和合规性跟踪 ## Epic 3:数据库基础(当前重点) 此 epic 实现了用于威胁情报分析的完整数据库 schema 和 ORM 层: | 任务 | 状态 | 描述 | |---|---|---| | **E3.T1** | ✅ 完成 | 带有身份验证的 User ORM 模型 | | **E3.T2** | ✅ 完成 | Alembic 迁移框架设置 | | **E3.T3** | ✅ 完成 | User 表和 FK 约束 | | **E3.T4** | ✅ 完成 | Upload 模型和文件处理 | | **E3.T5** | ✅ 完成 | DigitalAsset ORM 模型和索引 | | **E3.T6** | ✅ 完成 | **Analysis ORM 模型** (20 个字段,8 个索引,完整测试) | ## 主要功能 ### E3.T6 — Analysis ORM 模型 Analysis 模型代表威胁情报分析结果: - **20 个 ORM 字段** (18 个显式 + 2 个继承自 BaseModel) - **5 种生命周期状态**:PENDING, RUNNING, COMPLETED, FAILED, CANCELLED - **2 个 FK 关系**:DigitalAsset 和 User,采用 selectin 延迟加载 - **5 个 CHECK 约束**:状态验证、分数范围、严重性级别 - **8 个数据库索引**:针对常见访问模式进行查询优化 - **幂等性保证**:部分唯一索引强制每个分析器仅有一个完成的结果 ### Analysis 字段 | 类别 | 字段 | |---|---| | **标识符** | id (UUID), digital_asset_id (FK), requested_by (FK) | | **分析器信息** | analyzer_key, analyzer_version, analyzer_slugs | | **生命周期** | status, started_at, completed_at | | **结果** | threat_score, confidence, severity | | **数据** | reasoning_payload (JSONB), enrichment_data (JSONB) | | **重试** | retry_count, celery_task_id | | **错误** | error_message, error_code | | **时间戳** | created_at (继承), updated_at (继承) | ## 入门指南 ### 前置条件 - Python 3.12+ - PostgreSQL 15+ - Docker & Docker Compose (推荐) ### 安装说明 1. **克隆代码库:** git clone https://github.com/Siddhu007006/sentinal.git cd sentinal 2. **设置环境:** cp .env.example .env # 编辑 .env 文件以配置您的参数 3. **安装依赖:** cd backend pip install -r requirements.txt 4. **初始化数据库:** docker-compose up -d postgres cd backend alembic upgrade head 5. **运行测试:** pytest backend/tests/unit/test_analysis_model.py -v ## 架构 ### 数据库 Schema **核心实体:** - `users` — 具有角色的用户账户 (ADMIN, ANALYST, VIEWER) - `digital_assets` — 域名、IP 地址、URL、文件哈希等 - `analyses` — 威胁情报分析结果 (E3.T6) - `uploads` — 用于批量处理的文件上传 - `audit_logs` — 全面的审计跟踪 ### ORM 层 基于 SQLAlchemy 2.0+ 构建: - 带有类型提示的声明式模型 - 具有预加载/延迟加载策略的关系 - 在 schema 级别强制执行的数据库约束 - 通过 Alembic 管理迁移 ### API 设计 基于 FastAPI 的 REST API: - 请求/响应验证 - 基于角色的访问控制 - 全面的错误处理 - API 文档 (Swagger/OpenAPI) ## 测试策略 ### 单元测试 (E3.T6) **覆盖率:analysis.py 达到 100%** - ORM 模型实例化和字段验证 - 关系导航 - 枚举验证 - 服务器默认值和可空约束 - Repr 和字符串表示 **运行:** ``` pytest backend/tests/unit/test_analysis_model.py -v --cov=app.models.analysis ``` ### 集成测试 (E3.T6) **需要配置了 DATABASE_MIGRATION_URL 的 PostgreSQL** - 迁移升级/降级幂等性 - FK 约束强制执行 (ON DELETE RESTRICT) - CHECK 约束验证 (status, scores, severity) - 部分唯一索引 (幂等性保证) - 索引使用和查询性能 **运行:** ``` export DATABASE_MIGRATION_URL="postgresql://user:pass@localhost/sentinal_test" pytest backend/tests/integration/test_analysis_*.py -v ``` ## 质量保证 ### 代码质量 - **Linting:** Ruff (0 个问题) - **类型检查:** MyPy (0 个错误) - **测试覆盖率:** E3.T6 ORM 模型达到 100% ### Pre-Commit 检查 ``` cd backend ruff check app/models/analysis.py mypy app/models/analysis.py pytest backend/tests/unit/test_analysis_model.py ``` ## 项目结构 ``` sentinal/ ├── backend/ │ ├── app/ │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── analysis.py (E3.T6 — ORM model) │ │ │ ├── digital_asset.py (E3.T5) │ │ │ ├── upload.py (E3.T4) │ │ │ └── user.py (E3.T1) │ │ └── ... │ ├── migrations/ │ │ └── versions/ │ │ └── 20260721_1416_*.py (E3.T6 migration) │ ├── tests/ │ │ ├── unit/ │ │ │ └── test_analysis_model.py (103 tests, 100% coverage) │ │ └── integration/ │ │ ├── test_analysis_migration.py │ │ ├── test_analysis_constraints.py │ │ └── test_analysis_performance.py │ ├── ALEMBIC_SETUP.md │ ├── README.md │ └── pyproject.toml ├── .kiro/ │ └── specs/ │ └── epic-3-database-foundation-analyses-t6/ │ ├── requirements.md │ ├── design.md │ └── tasks.md ├── .github/ │ ├── E3-T6-FINAL-AUDIT.md │ ├── E3-T6-MIGRATION-REVIEW.md │ └── workflows/ │ └── ci.yml └── docs/ ├── 00-Project-Context.md └── 22-Engineering-Backlog.md ``` ## 文档 - **需求:** `.kiro/specs/epic-3-database-foundation-analyses-t6/requirements.md` - **设计:** `.kiro/specs/epic-3-database-foundation-analyses-t6/design.md` - **任务:** `.kiro/specs/epic-3-database-foundation-analyses-t6/tasks.md` - **迁移审查:** `.github/E3-T6-MIGRATION-REVIEW.md` (24 个检查点) - **审计:** `.github/E3-T6-FINAL-AUDIT.md` ## 后续步骤 - **E3.T7:** 查询层和 repository 模式 - **E3.T8:** 用于分析端点的 API 端点 - **E4:** 事件驱动的 enrichment pipeline ## 许可证 专有 — 保留所有权利。 ## 联系方式 **维护者:** Siddharth Reddy (Siddhu007006) **状态:** E3.T6 完成 ✅ — 已准备好投入生产环境 **最后更新:** 2026 年 7 月 21 日
标签:AV绕过, FastAPI, PostgreSQL, 威胁情报, 安全合规, 开发者工具, 微服务架构, 数字资产分析, 测试用例, 网络代理, 请求拦截, 逆向工具