birichani-codes/cybersecurity-incident-response-framework-integrating-institutional-knowledge-kalro
GitHub: birichani-codes/cybersecurity-incident-response-framework-integrating-institutional-knowledge-kalro
一个基于 NIST 框架与 SECI 模型的原型系统,旨在捕获机构知识并提升事件响应的一致性与效率。
Stars: 0 | Forks: 0
# 原型框架:利用机构知识改进网络安全事件响应
## 肯尼亚农业与畜牧业研究组织(KALRO)案例研究
## 描述
本项目提出一个**原型框架**,通过捕获、构建和集成**机构知识**(组织内个人积累的经验、技能和隐性知识)来增强网络安全事件响应能力。
许多组织依赖于仅存在于长期服务员工头脑中的未记录专家经验。当这些人员离开或不可用时,关键的响应能力就会丢失。本原型展示了如何将隐性个人知识转化为**可搜索、可版本化、可重用的情报**,以支持更快、更有效的事件响应。
设计遵循**NIST网络安全框架原则**、**SECI知识管理**和**MIST设计概念**,以确保模块化、安全性以及与现有工具的集成。
## 目标
- 探索捕获未记录机构知识的方法
- 将原型集成到网络安全工作流程中
- 展示响应速度和决策能力的提升
- 减少对个人专业知识的依赖(概念验证)
- 创建**可搜索、可版本化的机构知识库**
- 建立包含衰减检测、版本控制和退役的知识生命周期
## 关键特性
- **带可选2FA的基于角色的身份验证**
- **用于事件监控的交互式React仪表板**
- **机构知识捕获与注释**
- **检索知识条目的置信度评分**
- **版本控制和知识退役生命周期**
- **全文搜索与历史事件检索**
- **新事件记录时的自动知识建议**
- **所有知识条目的贡献者归属**
- **未知或不匹配事件的升级工作流**
- **所有系统操作的全面审计跟踪**
- **与日志和威胁情报源的集成**

## 原型架构
- **表示层** – React SPA(单页应用程序)
- **应用层** – Node.js + Express REST API
- **知识层** – 标记、索引、版本控制和置信度评分
- **集成层** – 与日志、IDS和外部威胁源的连接
- **数据层** – PostgreSQL持久化存储,用于事件、知识和审计日志

## 技术栈
| 层 | 技术 |
|---|---|
| 前端 | React (Vite) + React Router + Axios |
| UI样式 | Tailwind CSS |
| 状态管理 | React Context API |
| 后端 | Node.js + Express |
| 数据库 | PostgreSQL(通过tsvector支持全文搜索) |
| 身份验证 | JWT令牌 + bcrypt密码哈希 + 可选TOTP 2FA |
| 搜索 | PostgreSQL原生全文搜索 |
| 开发工具 | Vite(前端)、Nodemon(后端)、dotenv |
## 用户角色
| 角色 | 权限 |
|---|---|
| **超级管理员** | 完全访问:管理用户、角色、系统配置 |
| **安全分析师** | 记录事件、捕获知识、注释、搜索 |
| **查看者** | 对仪表板和知识库的只读访问 |
| **系统** | 通过API密钥进行自动日志和警报摄取 |
## 框架一致性
本原型与已建立的框架和设计原则保持一致,以确保**安全性、可扩展性和有效的知识管理**。
### NIST网络安全功能
提供贯穿整个生命周期的结构化事件管理。
- **识别** — 了解资产、风险及现有机构知识
- **保护** — 通过RBAC、加密和2FA确保安全访问
- **检测** — 监控日志、警报和传入的事件信号
- **响应** — 执行由机构知识指导的缓解策略
- **恢复** — 捕获经验教训,更新知识库,恢复运营
### SECI知识管理
在组织内捕获和共享机构知识。
- **社会化** — 团队对事件的讨论与协作
- **外部化** — 注释并记录事件见解到知识库
- **组合** — 跨事件和部门整合知识
- **内化** — 将经验教训应用于未来的响应
### MIST设计原则
确保模块化、安全性和现代系统设计。
- **微服务** — 分离的组件:认证、事件、知识、NLP/标记
- **集成** — 与外部系统(日志、IDS、威胁源)连接
- **安全** — 基于角色的访问控制、加密、2FA、审计日志
- **技术** — React SPA + REST API + PostgreSQL;支持未来的NLP自动化
### TRIKER知识生命周期
指导完整的机构知识生命周期。
- **触发** — 当事件发生或执行操作时启动工作流
- **记录** — 记录见解、注释和经验教训
- **整合** — 将新知识与现有库合并
- **知识** — 结构化信息以便轻松检索和分析
- **评估** — 评估捕获知识的质量、相关性、准确性和置信度
- **重用** — 将过去知识应用于改进未来的事件响应

## 知识生命周期管理
本框架的一个关键组成部分是显式管理知识条目生命周期,以防止过时信息误导分析师。
### 知识条目状态
| 状态 | 含义 |
|---|---|
| **活跃** | 当前、受信任并推荐使用 |
| **取代** | 被新版本替换 — 可见但标记 |
| **退役** | 已归档;不再适用或准确 |
### 置信度评分
每个知识条目都带有**置信度评分**(0.0 – 1.0),根据以下因素计算:
- 最后使用的时效性
- 成功应用的次数
- 分析师的反馈和评分
- 创建以来的时间(衰减因子)
如果条目未被重用,分数会衰减,促使管理员审查并更新。
### 版本控制
当现有条目被更新时,旧版本会保留并带有`superseded_by`引用。分析师可以随时查看任何知识条目的完整版本历史。
### 贡献者归属
每个条目都记录创建者和最后修改者。这支持问责制、信任评估和知识质量审查。
## 升级工作流
当新事件到达且**未找到匹配知识**时,系统遵循结构化的升级路径,而不是让分析师无所适从:
```
New Incident Logged
↓
Auto-search Knowledge Base
↓
Match Found? ──YES──→ Display suggestions with confidence scores
↓ NO
Escalation Flag Set (status: "escalated")
↓
Notify assigned senior analyst / admin
↓
Manual investigation and response
↓
On resolution → Capture new knowledge entry
↓
Knowledge base updated for future incidents
```
事件状态:`open → investigating → escalated → resolved → closed`
## 审计跟踪
系统中的每个操作都会记录在防篡改的审计日志中,包括:
- 用户身份和角色
- 执行的操作(登录、查看、注释、创建、更新、退役、搜索)
- 目标实体(事件ID、知识条目ID)
- 时间戳
- IP地址和会话元数据
审计日志为只读,仅超级管理员可访问。
## UML图
### 1. 用例图
**目的:** 显示谁与系统交互以及他们做什么。
**参与者:** 网络安全分析师、系统管理员、外部系统(例如IDS、日志)
**用例:**
- 登录/认证
- 检测事件
- 查看事件
- 注释知识
- 搜索知识库
- 检索推荐
- 升级事件
- 管理用户
- 生成报告
- 知识条目的退役/版本控制

### 2. 活动图
**目的:** 逐步说明系统的工作流程。
**示例流程:**
开始 → 检测事件 → 检索机构知识 → 决策(找到知识?) → 是:使用建议分析 / 否:升级 → 响应 → 捕获新知识 → 存储 → 结束

### 3. 顺序图
**目的:** 显示系统组件之间随时间的交互。
**关键组件:** 用户(分析师)、React前端、Express API、知识库、集成层
1. 用户在React中提交登录表单
2. Express API进行身份验证并返回JWT令牌
3. React存储令牌并加载仪表板
4. 检测或通过React表单记录事件
5. API查询知识库,返回带有置信度分数的匹配项
6. React渲染建议;用户进行注释
7. API保存数据并写入审计日志

### 4. 类图
**目的:** 显示系统结构、实体及其关系。
**关键类:** User、Incident、KnowledgeEntry、Annotation、Entity(IP、文件、用户账户)、AuditLog、Report
**包含:**
- 属性(id、名称、时间戳、置信度分数、版本)
- 方法(save()、retrieve()、supersede()、retire()、search())
- 关系(User → KnowledgeEntry一对多,Incident ↔ KnowledgeEntry关联)

### 5. 组件图
**目的:** 显示系统架构和模块。
**关键组件:** React SPA、Express REST API、认证服务、事件管理、知识管理、NLP/标记引擎、搜索引擎、审计日志、集成层、PostgreSQL数据库

## 数据库架构
```
users
id, name, email, password_hash, role, totp_secret, created_at
incidents
id, title, type, severity, status, description,
entities JSONB, reported_by (FK), assigned_to (FK),
created_at, updated_at
knowledge
id, title, content, tags TEXT[], incident_id (FK),
contributor_id (FK), confidence_score, version,
superseded_by (FK self-referencing), status,
search_vector tsvector, last_used_at, use_count, created_at
annotations
id, knowledge_id (FK), user_id (FK), note, created_at
audit_logs
id, user_id (FK), action, target_type, target_id,
metadata JSONB, ip_address, created_at
```
## 原型工作流程(伪算法)
```
BEGIN
// MIST: Microservices Initialization
1. Initialize Services:
- Auth Service
- Incident Service
- Knowledge Service
- Integration Service
- NLP/Tagging Service
// NIST: IDENTIFY
2. Load System Context:
- assets, users, existing institutional knowledge
3. Authenticate User (React login form → Express API)
INPUT: credentials + optional 2FA (TOTP)
IF valid THEN
issue JWT, store in React context
grant role-based (RBAC) access
ELSE
deny access, log attempt
ENDIF
// MIST: Integration
4. Collect Incident Data from logs, IDS, threat feeds
// NIST: DETECT
5. Detect or Log Incident (React form → POST /api/incidents)
IDENTIFY anomalies, type, severity, affected entities
6. Extract Entities: IP address, user account, file hash
// NIST: RESPOND
7. Auto-Query Institutional Knowledge Base (GET /api/search)
IF match found THEN
DISPLAY entries with confidence scores in React UI
ELSE
SET status = "escalated"
NOTIFY senior analyst / admin
ENDIF
8. Analyst reviews knowledge, adds annotations, executes response
// NIST: RECOVER
9. On incident resolution -> prompt to capture new knowledge
RECORD observations, lessons learned, effective mitigations
// MIST: Technology
10. Process new knowledge entry (POST /api/knowledge):
- NLP tagging and categorization
- Confidence score initialization
- Version check (supersede existing entry if applicable)
- Full-text search index update
- Store in PostgreSQL
// MIST Security + NIST Protect
11. Enforce Security throughout:
- Encrypt data at rest and in transit (HTTPS)
- Validate JWT on every API request (Express middleware)
- Enforce RBAC per route
- Write all actions to audit log
// Knowledge Lifecycle
12. Scheduled job: decay confidence scores for unused entries
FLAG entries below threshold for admin review
RETIRE or UPDATE flagged entries
// Continuous Improvement
13. Feedback loop:
- Analysts rate knowledge usefulness in React UI
- Ratings update confidence scores via API
- Reports surface most/least useful knowledge entries
END
```
## 文件夹结构
```
kalro-ikf/
├── client/ <- React frontend (Vite)
│ ├── public/
│ ├── src/
│ │ ├── main.jsx <- React entry point
│ │ ├── App.jsx <- Router setup
│ │ ├── context/
│ │ │ └── AuthContext.jsx <- JWT + user state
│ │ ├── pages/
│ │ │ ├── Login.jsx
│ │ │ ├── Dashboard.jsx
│ │ │ ├── Incidents.jsx
│ │ │ ├── IncidentDetail.jsx
│ │ │ ├── Knowledge.jsx
│ │ │ ├── KnowledgeDetail.jsx
│ │ │ ├── Search.jsx
│ │ │ ├── Reports.jsx
│ │ │ └── UserManagement.jsx
│ │ ├── components/
│ │ │ ├── Navbar.jsx
│ │ │ ├── ProtectedRoute.jsx
│ │ │ ├── IncidentCard.jsx
│ │ │ ├── KnowledgeCard.jsx
│ │ │ ├── ConfidenceBadge.jsx
│ │ │ └── AuditLogTable.jsx
│ │ └── api/
│ │ └── axios.js <- Axios instance with JWT interceptor
│ ├── index.html
│ ├── vite.config.js
│ └── package.json
│
├── server/ <- Node.js + Express backend
│ ├── index.js <- Express entry point
│ ├── db.js <- PostgreSQL connection pool
│ ├── middleware/
│ │ ├── auth.js <- JWT verification
│ │ └── rbac.js <- Role-based access control
│ ├── routes/
│ │ ├── auth.js <- Login, register, 2FA
│ │ ├── incidents.js <- CRUD + status management
│ │ ├── knowledge.js <- Capture, version, retire
│ │ ├── search.js <- Full-text + tag search
│ │ └── reports.js <- Audit logs, analytics
│ └── models/
│ └── schema.sql <- All table definitions + indexes
│
├── .env
└── package.json <- Root package with dev scripts
```
## 开始使用
### 先决条件
- Node.js v18+
- PostgreSQL 14+
- npm 或 yarn
### 安装
```
# 克隆仓库
https://github.com/birichani-codes/cybersecurity-incident-response-framework-integrating-institutional-knowledge-kalro.git
cd kalro-ikf
# 安装后端依赖
cd server && npm install
# 安装前端依赖
cd ../client && npm install
# 设置环境变量
cp .env.example .env
# 使用您的数据库凭据和 JWT 密钥编辑 .env
# 运行数据库架构
psql -U postgres -d kalro_ikf -f server/models/schema.sql
# 启动后端(来自 /server)
npm run dev
# 启动前端(来自 /client)
npm run dev
```
React应用运行在 `http://localhost:5173`,并代理API请求到 `http://localhost:3000`。
## 参考资料
- NIST网络安全框架(CSF 2.0)— https://www.nist.gov/cyberframework
- Nonaka & Takeuchi, SECI知识创造模型(1995)
- MIST微服务设计原则
- KALRO ICT安全策略(内部参考)
标签:KALRO, MIST设计, MITM代理, NIST网络安全框架, React仪表盘, Ruby, SECI知识管理, 事件监控, 全文本搜索, 升级工作流, 原型框架, 双因素认证, 安全可观测性, 安全运营, 扫描框架, 搜素引擎优化, 机构知识, 测试用例, 版本控制, 知识库, 知识生命周期, 知识管理, 网络安全事件响应, 网络安全框架, 置信度评分, 肯尼亚农业与畜牧业研究组织, 自动知识建议, 自定义脚本, 角色基础认证, 贡献者归属