Kahozue/thesis-admin-console

GitHub: Kahozue/thesis-admin-console

面向企业即时通讯中隐私保护社会工程学检测的前端管理控制台,支持多角色审批与审计追踪的重识别工作流。

Stars: 0 | Forks: 0

# thesis-admin-console 企业即时通讯(Microsoft Teams)中隐私保护社会工程学检测系统的管理控制台 MVP。作为关于 LLM 辅助威胁检测的硕士论文的实现产物而开发。 ## 概述 该前端仪表板支持三种分析师角色 —— 安全分析师(SA)、合规经理(CM)和授权重识别员(AR)—— 审查由 LLM 风险评分流水线标记的假名化聊天对话,并在严格的审计追踪下授权受控的身份重识别。 系统刻意**仅在假名化数据上运行**:除非完成完整的 CM 审批 + AR 揭示工作流并记录在审计追踪中,否则绝不会暴露真实的用户身份。 ## 架构上下文 ``` Microsoft Teams ↓ System A (data collection + PII filtering + token mapping) ↓ pseudonymized text only System B (LLM risk scoring) ← this UI consumes System B output ↓ Admin Console (this repo) — dashboard / alerts / re-identify / audit ``` PII 检测流水线(System A 组件)位于 [thesis-pii-pipeline](https://github.com/KahoKozue/thesis-pii-pipeline)。 ## 技术栈 - React 18.3 + TypeScript 5.4(严格模式) - Vite 5.4,Tailwind CSS 3.4,shadcn/ui - react-router-dom 6,TanStack Query 5,Zustand 4 - react-hook-form 7 + Zod 3 - Recharts 2(折线图,环形图,自定义热力图) - MSW 2(Service Worker 模拟 —— 无需后端即可运行) - Vitest 2 + Testing Library 16(46 个单元/组件测试) ## 快速开始 ``` npm install npm run dev # http://localhost:5173 npm run test # run test suite npm run typecheck # tsc --noEmit npm run build # production build ``` 复制 `.env.example` 到 `.env.local`(默认配置在 MSW 模拟下即可直接运行): ``` VITE_USE_MOCK=true VITE_API_BASE_URL=/api/v1 ``` ## 演示流程 1. 打开 `http://localhost:5173` → 重定向至 `/login` 2. 选择角色: - **SA** — 直接登录,可查看仪表板和警报 - **CM** — 触发 MFA 对话框(输入 `000000`) - **AR** — 与 CM 相同 3. 完整的重识别流程: 1. SA:`/dashboard` → 热力图 → 点击高风险事件 → `/alerts/{id}` 2. SA:点击“发起重识别”(需要 ≥ 20 个字符的理由说明) 3. CM 登录 → `/reidentify/queue` → 批准 → MFA 4. AR 登录 → `/reidentify` → 揭示 → 第二次 MFA → 查看真实身份 5. AR:“结束会话并清除” → `/audit` 显示 5 条记录的追踪 边缘状态测试: ``` /dashboard?mockState=empty /dashboard?mockState=5xx /dashboard?mockState=forbidden /dashboard?mockState=delayed ``` ## PII 流水线集成 在与 PII API 服务器一同运行时,接入(Ingest)页面会显示实时的假名化处理: ``` # 终端 1:PII API cd ../thesis-pii-pipeline/pii && python api_server.py # port 8503 # 终端 2:此 app npm run dev ``` 导航至 `/ingest`,加载内置示例,并检查显示 `PERSON_A`、`EMAIL_B` 等的别名映射。 ## 项目结构 ``` src/ ├── pages/ 11 pages (dashboard, alerts, reidentify, audit, settings, ...) ├── components/ │ ├── ui/ shadcn/ui base components │ └── domain/ heatmap, stability indicator, identity badge ├── features/ │ ├── auth/ roleStore (Zustand) + AR candidate list │ └── dashboard/ risk trend and distribution charts ├── api/ 12 endpoint modules (aligned to spec) ├── types/ graph / analysis / audit / api / role / common ├── schemas/ Zod runtime validators ├── mocks/ MSW handlers + in-memory store + scenario data └── lib/ permissions / alias / dateTime / risk / queryClient ``` ## 已实现的功能 | ID | 功能 | 状态 | |----|---------|--------| | F-1 | 登录 + MFA 触发 | 完成 —— 角色切换器替代了 SSO;CM/AR 需要 000000 | | F-2 | 仪表板热力图 | 完成 —— Tailwind 网格,点击进入过滤后的警报列表 | | F-3 | 风险趋势折线图 | 完成 —— 高/中/低,D/W/M 切换 | | F-4 | 风险分布环形图 | 完成 —— 扇区点击可过滤警报列表 | | F-5 | 带分页和过滤器的警报列表 | 完成 | | F-6 | 事件上下文页面 | 完成 —— 假名化,三面板布局 | | F-7 | 威胁消息高亮 + 原因同步 | 完成 —— 双向 scrollIntoView | | F-8 | 重识别请求 | 完成 —— RHF + Zod,≥ 20 个字符的理由,审计写入 | | F-9 | 批准队列 + MFA | 完成 —— 仅限 CM | | F-10 | AR 揭示(一次性 token) | 完成 —— 仅限状态,倒计时,beforeunload 清理 | | F-11 | 拒绝路径 | 完成 —— 强制要求原因 + 第二次 MFA | | F-12 | 标记为已处理 | 完成 —— 不可逆,审计写入 | | F-13 | 审计追踪查询 | 完成 —— SA/AR 查看自己的;CM 查看所有的 | | F-14 | 报告导出 | 完成(CSV) | | F-15 | 系统设置(CM) | 完成(前端状态) | ## 已知的 MVP 限制 | 项目 | 原因 | |------|--------| | 真实的 SSO(SAML/OIDC) | 超出 MVP 范围;前端使用角色切换器 | | 会话空闲超时 | 需要后端会话;已实现揭示的 15 分钟倒计时 | | 真实的后端 API | 完整的 MSW 模拟;Zod schema 已准备好直接对接 API | | XLSX 报告导出 | 因规格说明待澄清而暂缓 |
标签:AMSI绕过, React, Syscalls, TypeScript, Ubuntu, 前端管理后台, 威胁检测, 安全插件, 社交工程, 网络安全, 自动化攻击, 隐私保护