e9ad12e072
CI/CD Pipeline / Unit Tests (pull_request) Failing after 18s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 21m53s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 16s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1558h41m56s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1558h41m58s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1558h41m59s
CI/CD Pipeline / Build Production Runtime Images (pull_request) Failing after 1558h42m1s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Failing after 1558h42m1s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1559h13m34s
- Phase 0: baseline (bandit, black, isort, flake8) - existing - Phase 1: security foundation (gitleaks P0, pip-audit P1) - in progress - Phase 2: quality & frontend (npm audit P1, vulture P2) - planned - Phase 3: deep quality (mypy, semgrep, dep auto-update) - future - Access principles, progress tracking table
4.8 KiB
4.8 KiB
安全与质量扫描工具接入路线图
仓库: xiaoxia/xiaoxia-saas 更新时间: 2026-07-13 负责人: 代码审计 Agent
整体概览
Phase 0 (已完成) Phase 1 (进行中) Phase 2 (规划中) Phase 3 (远期)
───────────── ────────────── ───────────── ────────────
bandit gitleaks (P0) npm audit (P1) mypy (类型检查)
(已存在) pip-audit (P1) vulture (P2) semgrep (SAST)
迁移安全检查 依赖自动更新
License 合规
各阶段详情
Phase 0: 基线能力(已存在)
| 工具 | 类型 | 状态 | 说明 |
|---|---|---|---|
| bandit | Python 代码安全审计 | ✅ 已接入 | validate Job 中运行,-ll 级别,阻断模式 |
| black | 代码格式化 | ✅ 已接入 | --check --fast 模式,阻断模式 |
| isort | 导入排序 | ✅ 已接入 | --check-only 模式,阻断模式 |
| flake8 | 代码风格 | ✅ 已接入 | 阻断模式 |
| compileall | 语法检查 | ✅ 已接入 | Python 编译检查 |
Phase 1: 安全基础(进行中 / P0-P1)
预计完成时间:2026-07-13 ~ 2026-07-14
P0: gitleaks 密钥检测
- 状态: ✅ PR 已提交 (PR #256),CI 验证中
- 接入位置: validate Job(最前面,快速反馈)
- 扫描模式:
- PR 触发:增量扫描(只扫改动文件)
- 主分支 push:全量扫描
- 阻断策略: 发现密钥直接阻断合并
- 配置文件:
.gitleaks.toml(白名单排除示例配置、测试文件等) - 预估收益: 防止 API Key、密码、Token 等敏感信息泄露
P1: pip-audit Python 依赖漏洞扫描
- 状态: ✅ PR 已提交(同 PR #256),CI 验证中
- 接入位置: validate Job(依赖安装后)
- 扫描范围: 全部 4 个 requirements 文件
- 数据源: OSV(PyPA 官方推荐)
- 阻断策略: 告警模式(初期不阻断)
- 运行 1-2 周摸清漏洞存量
- 评估后根据严重程度设置阻断阈值(HIGH/CRITICAL 阻断)
- 预估收益: 及时发现 Python 依赖中的 CVE 漏洞
Phase 2: 质量与前端安全(P1-P2)
预计启动时间:Phase 1 稳定后(约 2026-07-15 ~ 2026-07-18)
P1: npm audit 前端依赖漏洞扫描
- 状态: 📋 规划中(前端开发负责)
- 接入位置: frontend-lint Job
- 扫描范围:
package.json/package-lock.json - 初始阈值:
--audit-level=high - 阻断策略: 告警模式(初期不阻断)
- 相关 PR: PR#255(前端缓存优化)后续接入
P2: vulture 死代码检测
- 状态: ✅ PR 已提交 (PR #259)
- 接入位置: validate Job(安全扫描之后)
- 置信度阈值: 80%(逐步调高)
- 扫描范围:
alembic/apps/packages/scripts - 白名单: 框架自动调用代码(FastAPI routes、SQLAlchemy models、Celery tasks 等)
- 阻断策略: 告警模式(不阻断)
- 运行 1-2 周统计死代码存量
- 分批清理确认的死代码
- 稳定后逐步提高置信度并考虑阻断
- 预估收益: 减少维护负担,降低安全攻击面
Phase 3: 深度质量(远期规划)
预计启动时间:Phase 2 完成后(约 2026-07 下旬)
| 工具 | 类型 | 优先级 | 说明 |
|---|---|---|---|
| mypy | 类型检查 | P1 | 先宽松模式,逐步收紧,提升代码质量 |
| semgrep | SAST 静态分析 | P2 | 自定义规则集,检测特定安全模式 |
| 依赖自动更新 | 依赖管理 | P2 | Dependabot / Renovate,自动更新依赖版本 |
| License 合规 | 合规检查 | P3 | 检查第三方依赖的 License 是否合规 |
接入原则
- 先告警后阻断:新工具初期一律告警模式,摸清存量后再设阈值
- 增量优先:PR 阶段增量扫描,主分支全量扫描,平衡速度与覆盖
- 白名单先行:提前配置好合理的白名单,减少误报干扰
- 分层递进:P0 → P1 → P2 → P3,按优先级逐步接入
- 文档同步:每个工具接入都同步更新接入方案和最佳实践
进度跟踪
| 阶段 | 工具 | PR | 状态 | 备注 |
|---|---|---|---|---|
| Phase 1 | gitleaks | #256 | 🟡 CI 验证中 | 国内镜像下载修复已提交 |
| Phase 1 | pip-audit | #256 | 🟡 CI 验证中 | 告警模式 |
| Phase 2 | vulture | #259 | 🟡 等待 CI | 80% 置信度,告警模式 |
| Phase 2 | npm audit | - | 📋 规划中 | 前端开发负责 |
| Phase 3 | mypy | - | 📋 规划中 | 后端开发负责(同迁移安全 PR) |