这是一个把“敏感数据发现 -> 敏感数据识别 -> 分级脱敏 -> 权限控制 -> 审计追踪 -> 合规审查”串成完整闭环的系统。
核心目标:
- 帮你从数据库和图像数据中自动发现敏感信息
- 帮你按角色控制“谁能看明文、谁只能看脱敏、谁完全不可见”
- 帮你留下可追溯审计日志,满足演示、竞赛、教学和实际治理场景
| 文档 | 重点 |
|---|---|
网络与数据安全挑战赛项目名:基于多模态智能分析的数据库敏感数据识别与安全治理系统 |
安全防护闭环、权限控制、审计合规 |
AI Agent 创新大赛项目名:面向企业数据流转的数据安全与合规治理智能体 |
多 Agent 协同、工具执行、产业落地价值 |
| 能力 | 说明 |
|---|---|
| 多模态识别 | 同时覆盖结构化、半结构化、编码文本、非结构化文本、图片 Blob、数据库对象 |
| OCR 回灌识别 | 支持 RapidOCR / PaddleOCR / Tesseract,多引擎补识别 |
| 分级治理 | L1-L4 等级控制明文、脱敏、隐藏策略 |
| 角色权限矩阵 | admin / auditor / kefu 差异化可见 |
| 审计闭环 | 登录、查询、导出、发起扫描均有审计记录 |
| 合规审查 Agent | 文本/文档风险审查、规则版本历史、报告导出 |
flowchart LR
A[(MySQL / PostgreSQL)] --> B[数据库结构发现]
B --> C{数据形态}
C -->|structured| D[字段语义 + 模式识别]
C -->|semi_structured| E[JSON / XML 递归解析]
C -->|encoded| F[URL / Hex / Base64 解码识别]
C -->|unstructured_text| G[上下文增强识别]
C -->|binary_blob| H[OCR 桥接识别]
C -->|db_object| I[视图/过程定义扫描]
H --> J[OCR 文本回灌]
J --> G
D --> K[置信度评分与去重]
E --> K
F --> K
G --> K
I --> K
K --> L[[output/upload.csv]]
flowchart TB
U[用户会话] --> R{角色判断}
R -->|admin| A[L1-L4 明文]
R -->|auditor| B[L1-L3 明文 / L4 脱敏]
R -->|kefu| C[L1-L2 明文 / L3 脱敏 / L4 隐藏]
A --> V[命中浏览器]
B --> V
C --> V
V --> Log[(审计日志)]
mindmap
root((数据库敏感数据治理系统))
多模态识别
表字段
JSON/XML
编码文本
非结构化文本
图像 OCR
视图与存储过程
安全治理
L1-L4 分级
角色权限矩阵
动态脱敏
导出控制
审计合规
行为留痕
操作追踪
合规审查 Agent
规则版本回滚
工程化
前后端分层
脚本化启动
Docker 数据环境
离线运行时
graph TB
subgraph 展示层
Frontend[产品端 Vue3]
Website[官网 Vite]
Docs[文档站 VitePress]
end
subgraph 接口层
API[FastAPI]
Session[Session Cookie]
RuntimeDB[SQLite]
Masking[脱敏引擎]
ACL[权限矩阵]
end
subgraph 扫描层
CLI[cli/main.py]
Engine[SensitiveScanner]
Detector[detector.py]
OCRBridge[ocr_bridge.py]
Exporter[exporter.py]
end
subgraph 数据层
MySQL[(MySQL)]
PostgreSQL[(PostgreSQL)]
Blob[(Image Blob)]
DBObjects[(Views / Routines)]
end
Frontend --> API
Website --> API
API --> Session
API --> RuntimeDB
API --> Masking
API --> ACL
API --> CLI
CLI --> Engine
Engine --> Detector
Engine --> OCRBridge
Engine --> Exporter
Engine --> MySQL
Engine --> PostgreSQL
Engine --> Blob
Engine --> DBObjects
scripts\start-web.bat启动后访问:
- 产品端:http://127.0.0.1:5173
- 官网:http://127.0.0.1:5174
- 文档站:http://127.0.0.1:5175
- 健康检查:http://127.0.0.1:8000/api/health
- API 文档:http://127.0.0.1:8000/api/docs
scripts\start-cli-local.batscripts\start-cli-docker.bat说明:Docker 比赛库是源码环境的可选备用方案,当前桌面 EXE / 离线软件交付包不纳入 Docker 镜像。
cd apps/backend
conda run -n NDS python -m pip install -r requirements.txtcd apps/frontend && npm install
cd ../web && npm install
cd ../docs && npm install# backend
cd apps/backend
conda run --no-capture-output -n NDS python -m uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
# frontend
cd apps/frontend
npm run dev -- --host 127.0.0.1
# web
cd apps/web
npm run dev -- --host 127.0.0.1
# docs
cd apps/docs
npm run dev -- --host 127.0.0.1这是源码环境的可选备用方案;当前桌面 EXE / 离线软件交付包不依赖 Docker,也不会复制 docs/docker 镜像。
cd docs/docker
docker compose up -d端口映射:
- MySQL:
3307 -> 3306 - PostgreSQL:
5433 -> 5432
停止:
cd docs/docker
docker compose down.
├─ cli/ # CLI 扫描主链(独立 Python 项目)
│ ├─ main.py # 扫描入口
│ ├─ scanner/ # 识别核心
│ │ ├─ engine.py # 任务调度、扫描执行
│ │ ├─ detector.py # 多类型敏感识别
│ │ ├─ ocr_bridge.py # OCR 桥接
│ │ ├─ exporter.py # upload.csv 导出
│ │ ├─ competition_ocr_router.py # 比赛 OCR 路由
│ │ ├─ competition_targeted_ocr.py # 目标化 OCR 策略
│ │ └─ calibrator.py # 校准能力
│ ├─ db/
│ │ ├─ config_loader.py # 配置加载
│ │ └─ connector.py # 数据库连接
│ ├─ config/
│ │ ├─ database.yaml # 主配置
│ │ ├─ database.web.yaml # Web 页面/桌面 EXE 扫描配置
│ │ ├─ database.local.yaml # CLI 本地命令行配置
│ │ ├─ database.docker.yaml # 主机运行扫描器、连接 Docker 数据库
│ │ └─ database.container.yaml # 扫描器自身在容器内运行时使用
│ ├─ runtime/ # 离线运行时(Python/Tesseract)
│ ├─ output/ # 扫描结果输出
│ └─ assets/ # 词典、样例等资源
├─ apps/
│ ├─ backend/ # FastAPI 后端
│ │ ├─ app/
│ │ │ ├─ main.py
│ │ │ ├─ config.py
│ │ │ ├─ database.py
│ │ │ ├─ routes/ # 接口路由
│ │ │ │ ├─ auth.py
│ │ │ │ ├─ dashboard.py
│ │ │ │ ├─ hits.py
│ │ │ │ ├─ scan.py
│ │ │ │ ├─ audit.py
│ │ │ │ ├─ profile.py
│ │ │ │ └─ agent.py
│ │ │ ├─ services/ # 业务服务
│ │ │ │ ├─ csv_loader.py
│ │ │ │ ├─ masking_engine.py
│ │ │ │ ├─ permissions.py
│ │ │ │ └─ audit_targets.py
│ │ │ ├─ rules/ # 合规规则
│ │ ├─ requirements.txt
│ │ └─ .env
│ ├─ frontend/ # 产品端(Vue3)
│ │ └─ src/
│ │ ├─ views/
│ │ ├─ components/
│ │ ├─ stores/
│ │ ├─ router/
│ │ ├─ api/
│ │ └─ styles/
│ ├─ web/ # 官网(Vite 静态站)
│ └─ docs/ # 文档站(VitePress)
├─ agent/ # 合规审查 Agent 运行时(由 apps/backend/app/routes/agent.py 挂载)
├─ scripts/ # 一键脚本
│ ├─ start-web.bat
│ ├─ start-cli-local.bat
│ ├─ start-cli-docker.bat
│ ├─ start-source-offline.bat
│ ├─ build-cli-offline-runtime.bat
│ ├─ build-desktop-exe.bat
│ ├─ build-installer-exe.bat
│ ├─ build-source-offline-bundle.bat
│ ├─ build-dist.bat
│ ├─ 自动化检查.ps1
│ └─ 脚本说明.md
├─ packaging/
│ └─ desktop/
│ ├─ assets/ # 桌面软件图标、Windows 版本信息
│ ├─ build/ # PyInstaller 临时构建目录
│ └─ release/ # 桌面 EXE、安装器、离线交付包
├─ docs/ # 项目资料与本地运行资源
│ ├─ README.md # 资料总索引
│ ├─ markdown/ # 分类后的 Markdown 文档
│ ├─ references/ # 赛事通知、赛题与研究资料
│ ├─ docker/ # MySQL/PostgreSQL 竞赛环境
│ ├─ sql/ # 数据库样本
│ ├─ python/ # Python 依赖清单
│ └─ coding/ # 本地协作规范
└─ README.md
| 账号 | 密码 | 角色 | 可见策略 |
|---|---|---|---|
admin |
123456 |
管理员 | L1-L4 明文 |
auditor |
123456 |
审计员 | L1-L3 明文,L4 脱敏 |
kefu |
123456 |
客服 | L1-L2 明文,L3 脱敏,L4 隐藏 |
| 分类 | 代表接口 | 作用 |
|---|---|---|
| 健康检查 | GET /api/health |
后端状态检查 |
| 认证 | POST /api/auth/login、GET /api/auth/me |
登录与会话 |
| 仪表盘 | GET /api/dashboard/summary |
聚合统计 |
| 命中查询 | GET /api/hits、GET /api/hits/export |
检索与导出 |
| 扫描控制 | POST /api/scan/start、GET /api/scan/status |
启动扫描和进度追踪 |
| 审计中心 | GET /api/audit/logs |
操作日志追踪 |
| 脱敏演示 | POST /api/audit/masking/demo |
脱敏策略验证 |
| 合规审查 Agent | POST /api/agent/reviews、POST /api/agent/reviews/stream |
风险审查与流式输出 |
upload.csv 核心字段:
db_type:数据库类型db_name:数据库名table_name:表名/对象名field_name:字段名record_id:记录 IDdata_form:数据形态sensitive_type:敏感类型sensitive_level:敏感等级(L1-L4)extracted_value:提取值(页面按角色自动脱敏)
为什么本地扫描脚本可能启动失败?
脚本优先使用 cli/runtime/python/python.exe,找不到才回退到 conda 环境。常见问题:
- 没安装
conda或conda.exe不在 PATH NDS环境不存在cli/config/database.yaml的数据库地址和账号密码不正确
为什么后端默认只监听 127.0.0.1?
这是安全策略,避免后端端口直接暴露公网。生产部署建议使用 Nginx/Caddy 反向代理统一对外暴露域名。
扫描模式主要在 cli/config/database.yaml 的 scan 配置区:
competition:偏向比赛提交策略(更强调高精度)generic:偏向通用业务落地(更强调普适性)
- 扫描引擎:Python
- OCR:RapidOCR / PaddleOCR / Tesseract / OpenCV / ONNX Runtime
- 后端:FastAPI / Uvicorn / Pydantic / SQLite
- 前端:Vue 3 / Vite / TypeScript / Pinia / Vue Router / Ant Design Vue / ECharts
- 文档:VitePress / Mermaid
- 数据环境:MySQL / PostgreSQL / Docker Compose