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, 事件管理, 仪表盘, 基于角色的访问控制, 威胁报告, 子域名变形, 安全合规, 安全运营中心, 审计日志, 数据库, 暗色主题, 权限管理, 模型越狱, 漏洞管理, 网络代理, 网络安全, 网络映射, 自定义脚本, 角色权限, 访问控制, 赛博朋克, 隐私保护