annu2510/Cyber-SECURITY-incidence-RESPONSE-SYSTEM
GitHub: annu2510/Cyber-SECURITY-incidence-RESPONSE-SYSTEM
一个基于 Node.js、Express 和 MySQL 的 SOC 事件管理系统,通过 SQL RBAC 实现细粒度权限控制与审计。
Stars: 0 | Forks: 0
# 🛡️ SOC Shield — 网络安全事件响应数据库
一个使用 Node.js、Express 和 MySQL 构建的全栈 **安全运营中心(SOC)** 事件管理系统。该项目模拟了真实 SOC 如何执行 **基于 SQL 的访问控制**,每个数据库操作都受角色权限限制——就像 SQL 中的 `GRANT` 和 `REVOKE` 一样。
## 预览
| 登录页面 | 仪表盘 | RBAC 权限 |
|---|---|---|
| *黑暗赛博朋克风格登录页,带快速演示按钮* | *统计数据、图表、最近事件* | *每个角色的 SQL GRANT 矩阵* |
## ✨ 功能特性
- 🔐 **SQL RBAC** — 权限存储在 `RolePermissions` 表中,模拟 SQL `GRANT` 语句
- 👥 **4 种角色** — 管理员、安全主管、安全分析师、审计员
- 🚨 **事件管理** — 完整 CRUD,按严重程度着色(严重 → 低)
- **威胁报告** — 分析师提交包含 IOC 的调查报告
- 📜 **审计日志** — 每项操作(包括被拒绝的尝试)均记录 IP 和时间戳
- 🖥️ **系统清单** — 跟踪监控资产及其受损状态
- 📊 **实时仪表盘** — 通过 Chart.js 实现甜甜圈图和柱状图,带有动画统计计数器
- 🎨 **赛博朋克暗黑主题** — 青色/绿色霓虹光效、发光图标、闪烁的 DEFCON 指示器
## 🗄️ 数据库架构
```
Roles — role_id, role_name, description
Users — user_id, name, email, password (bcrypt), role_id
Incidents — incident_id, title, description, severity, status, reported_by, assigned_to
Systems — system_id, system_name, ip_address, owner, status
ThreatReports — report_id, incident_id, analyst_id, report_text, findings, ioc_data
AccessLogs — log_id, user_id, action, resource, status, ip_address, timestamp
RolePermissions — role_name, resource, action ← Core RBAC table
```
## 🔒 SQL RBAC — 工作原理
权限存储在 `RolePermissions` 表中,并在每次 API 调用前由中间件层进行检查。这模拟了真实的 SQL `GRANT`/`REVOKE` 语义:
```
-- Admin: Full access
GRANT SELECT, INSERT, UPDATE, DELETE ON incidents TO admin;
-- SOC Manager: View + assign
GRANT SELECT, INSERT, UPDATE ON incidents TO soc_manager;
-- Security Analyst: View assigned + submit reports
GRANT SELECT, UPDATE ON incidents TO security_analyst;
GRANT SELECT, INSERT ON threat_reports TO security_analyst;
-- Auditor: Read-only
GRANT SELECT ON incidents TO auditor;
GRANT SELECT ON access_logs TO auditor;
```
当角色缺少权限时,服务器会返回结构化的 **访问被拒绝** 响应:
```
{
"error": "Access Denied: Role 'auditor' does not have UPDATE permission on 'incidents'.",
"rbac_info": {
"role": "auditor",
"resource": "incidents",
"action": "UPDATE",
"sql_equivalent": "REVOKE UPDATE ON incidents FROM auditor;"
}
}
```
## 🎭 演示账户
| 角色 | 邮箱 | 密码 | 访问级别 |
|------|-------|----------|--------------|
| **管理员** | admin@soc.com | admin123 | 对所有资源拥有完整 CRUD 权限 |
| **安全主管** | manager@soc.com | manager123 | 可分配分析师,查看所有内容 |
| **安全分析师** | analyst@soc.com | analyst123 | 仅限分配给自己的事件 |
| **审计员** | auditor@soc.com | auditor123 | 只读,无法写入 |
## 🚀 安装与运行
### 先决条件
- [Node.js](https://nodejs.org) v16+
- [MySQL](https://dev.mysql.com/downloads/) 8.0+
### 1. 克隆仓库
```
git clone https://github.com/HarshitJK/Cybersecurity-Incident-Response-Database.git
cd Cybersecurity-Incident-Response-Database
```
### 2. 配置环境
```
cp .env.example .env
```
编辑 `.env` 并设置你的 MySQL 凭据:
```
DB_USER=root
DB_PASSWORD=your_mysql_password
```
### 3. 安装依赖
```
npm install
```
### 4. 初始化数据库
```
node database/seed.js
```
这将创建所有表、插入演示数据并设置 RBAC 权限矩阵。
### 5. 启动服务
```
node server.js
```
### 6. 打开应用
```
http://localhost:3000
```
## 📁 项目结构
```
soc-shield/
├── server.js # Express entry point
├── .env.example # Environment template
├── database/
│ ├── schema.sql # CREATE TABLE + GRANT statements
│ ├── seed.js # Demo data seeder
│ └── db.js # MySQL connection pool
├── middleware/
│ └── auth.js # RBAC enforcement + access logging
├── routes/
│ ├── auth.js # Login / logout
│ ├── incidents.js # Incident CRUD
│ ├── users.js # User management
│ ├── reports.js # Threat reports
│ ├── logs.js # Audit logs
│ └── systems.js # Systems inventory
└── public/
├── index.html # SPA shell
├── css/style.css # Cyberpunk dark theme
└── js/app.js # Frontend logic
```
## 🛠️ 技术栈
| 层级 | 技术 |
|-------|------------|
| 前端 | HTML5 · 原生 CSS · 原生 JavaScript |
| 图表 | [Chart.js](https://chartjs.org) 4.4 |
| 后端 | Node.js · Express.js |
| 认证 | express-session · bcryptjs |
| 数据库 | MySQL 8.0 |
| 数据库驱动 | mysql2(原生 SQL — 无 ORM) |
## 📖 RBAC 演示场景
1. **分析师更新状态** — 登录为 `analyst@soc.com`,编辑分配给自己的事件,更改状态 → ✅ 允许
2. **审计员被阻止写入** — 登录为 `auditor@soc.com`,尝试任何编辑 → ❌ 访问被拒绝(已记录)
3. **主管分配分析师** — 登录为 `manager@soc.com`,将事件分配给分析师 → ✅ 允许
4. **管理员创建用户** — 登录为 `admin@soc.com`,进入用户管理,创建新账户 → ✅ 允许
*为数据库系统迷你项目而制作 — SQL 基于角色的访问控制与数据库安全*
标签:bcrypt, Chart.js, CISA项目, Express, GNU通用公共许可证, GPT, MITM代理, Node.js, RBAC, SQL RBAC, Streamlit, 事件管理, 仪表盘, 基于角色的访问控制, 威胁报告, 子域名变形, 安全合规, 安全运营中心, 审计日志, 数据库, 暗色主题, 权限管理, 模型越狱, 漏洞管理, 网络代理, 网络安全, 网络映射, 自定义脚本, 角色权限, 访问控制, 赛博朋克, 隐私保护