TParrish21p/logshield-lab
GitHub: TParrish21p/logshield-lab
一个教学型事件响应仪表板原型,通过安全可控的方式演示日志分析、告警生成与事件跟踪等 SOC 核心工作流程。
Stars: 0 | Forks: 0
# LogShield 实验室
**LogShield Lab** 是一个安全的教学型事件响应仪表板,由 Tyler Parrish 在其个人独立开发品牌 **Bizarre Studios** 下构建。
## 在线公开演示
```
https://logshield-lab.vercel.app
```
公开演示是一个纯前端的安全演示。它使用内置的合成数据,不接受真实的上传文件。
## 截图
### 公开演示仪表板

### 解析器结果

## 架构
请参阅架构图:
```
docs/architecture/architecture-diagram.md
```
## 安全须知
请勿上传真实的凭证、私钥、客户数据、员工数据、财务数据、医疗保健数据、公司机密、受监管数据或其他敏感信息。仅使用合成的、经过脱敏处理的或实验室生成的日志。
LogShield Lab 不是一个真正的 SOC 平台、合规产品、企业安全工具或生产监控系统。
## 项目目的
LogShield Lab 演示了以下内容:
- 安全的日志文件上传概念
- 上传日志的临时解析
- 基于 Python 的日志分析
- 告警和事件生成
- 事件状态跟踪
- 分析师笔记
- 基本基于角色的访问概念
- 注重隐私的数据处理
- 安全优先的设计决策
## 公开演示模式
公开演示模式专为安全的作品集托管而设计。
在公开演示模式下:
- 真实文件上传被禁用
- 后端 API 调用被禁用
- 数据库写入被禁用
- 解析器服务调用使用内置的合成结果进行模拟
- 更改仅在浏览器内存中发生,并在页面重新加载时重置
从前端文件夹在本地运行公开的安全演示:
```
npm run dev:demo
```
从前端文件夹构建公开的安全静态演示:
```
npm run build:demo
```
更多详情:
```
docs/public-demo.md
```
## 本地全栈架构
```
User opens browser
↓
React frontend dashboard
↓
Java Spring Boot backend API
↓
Python parser service
↓
PostgreSQL database
```
## 本地开发端口
```
Frontend:
http://localhost:5173
Backend:
http://localhost:8080
Python parser service:
http://127.0.0.1:5000
Database:
Local PostgreSQL
```
## 技术栈
- 前端:使用 TypeScript 的 React
- 后端:Java Spring Boot
- 解析器服务:Python Flask
- 数据库:PostgreSQL
- 托管:Vercel 纯前端公开演示
## 项目结构
```
logshield-lab/
├── frontend/
├── backend/
├── parser-service/
├── docs/
│ ├── architecture/
│ └── security/
├── sample-logs/
├── README.md
└── .gitignore
```
## 本地设置要求
安装:
- Git
- Node.js
- Java 17 或更高版本
- Python 3.12 或更高版本
- PostgreSQL
- VS Code
检查版本:
```
git --version
node --version
npm --version
java --version
python --version
```
## 在本地运行公开演示
从项目根目录运行:
```
cd frontend
npm install
npm run dev:demo
```
打开:
```
http://localhost:5173
```
## 运行完整的本地开发者版本
完整的本地版本使用三个服务。
### 终端 1:Python 解析器服务
仅在此终端中激活 `.venv`:
```
cd parser-service
.\.venv\Scripts\Activate.ps1
python app.py
```
完成后:
```
deactivate
```
### 终端 2:Spring Boot 后端
为此终端会话设置 PostgreSQL 密码:
```
cd backend
$env:LOGSHIELD_DB_PASSWORD="your_postgres_password"
.\mvnw.cmd spring-boot:run
```
### 终端 3:React 前端
请勿在此处激活 `.venv`:
```
cd frontend
npm run dev
```
打开:
```
http://localhost:5173
```
## PostgreSQL
本地数据库名称:
```
logshield_lab
```
后端从以下位置读取数据库密码:
```
LOGSHIELD_DB_PASSWORD
```
该密码不应提交到 Git。
## 当前后端端点
```
GET /api/health
GET /api/incidents
PATCH /api/incidents/{id}/status
PATCH /api/incidents/{id}/notes
POST /api/demo/analyze
POST /api/upload/analyze
```
## 当前解析器端点
```
GET /health
POST /analyze
```
## 演示角色
当前的教学模拟角色:
```
ADMIN
ANALYST
VIEWER
```
这还不是真正的身份验证。它演示了在添加生产级身份验证之前基于角色的行为。
## 上传安全
本地开发者上传流程:
- 仅允许 `.txt`、`.log`、`.csv` 和 `.json`
- 拒绝空文件
- 强制执行 1 MB 的最大文件大小
- 不信任用户文件名
- 不暴露上传路径
- 将文件文本临时发送到解析器服务
- 不主动长期存储原始上传的日志
对于托管的公开演示,真实文件上传应保持禁用状态。
## 开发阶段
已完成:
- 阶段 1:项目设置
- 阶段 2:后端 MVP
- 阶段 3:Python 解析器 MVP
- 阶段 4:前端 MVP
- 阶段 5:安全上传处理
- 阶段 6:PostgreSQL 持久化
- 阶段 7:模拟身份验证和角色
- 公开的安全托管演示模式
下一步:
- 阶段 8:作品集完善
## 文档
```
docs/public-demo.md
docs/architecture/phase-1-setup-notes.md
docs/architecture/phase-2-backend-mvp-notes.md
docs/architecture/phase-3-parser-mvp-notes.md
docs/architecture/phase-4-frontend-mvp-notes.md
docs/architecture/phase-6-postgresql-notes.md
docs/security/phase-5-demo-analysis-notes.md
docs/security/phase-7-auth-roles-notes.md
docs/security/threat-model.md
docs/demo-walkthrough.md
```
## 状态
当前状态:本地全栈教学原型,加上公开安全的纯前端演示。
标签:Bizarre Studios, JS文件枚举, Python, React, SOC概念验证, Syscalls, Vercel部署, 前端原型, 前端演示, 合成数据演示, 告警生成, 安全事件响应仪表盘, 安全仪表盘, 安全开发实践, 安全日志解析, 教育项目, 无后门, 日志解析器, 测试用例, 网络安全教学, 自动化攻击, 逆向工具, 隐私保护设计