ibondarenko1/operational-change-intelligence
GitHub: ibondarenko1/operational-change-intelligence
该工具通过确定性规则引擎在微软安全环境变更实施前进行风险评分、证据归因和历史相似故障匹配,帮助运营团队避免可预见的变更事故。
Stars: 0 | Forks: 0
# 运营变更智能分析
运营变更智能分析是一个 MVP,用于在实施前分析 Microsoft 安全环境中的计划变更。它会评估运营风险,解释分配风险等级的原因,查找类似的历史故障,并生成一份实施前检查清单。
该 MVP 是确定性的:不使用 LLM,不使用 embeddings,也没有不透明的评分。
## 问题
安全运营团队通常会在缺乏完整上下文的情况下批准 Microsoft 365、Entra ID、Defender、Intune 和 Azure 的变更:
- 隐藏的遗留依赖项;
- 受交互式控件影响的服务账户;
- 意外被纳入强制执行范围的 break-glass 账户;
- 缺少试点或 report-only 阶段;
- 未描述验证过程的回滚计划;
- 仅在旧工单中记录的重复性运营失误。
这会导致本可避免的账户锁定、停机、事件升级和紧急回滚。
## 产品价值
该 MVP 帮助审查人员解答以下问题:
- 此计划变更的风险等级是什么?
- 哪些因素导致其具有风险?
- 是什么证据触发了各个因素?
- 之前有哪些类似变更失败了?
- 应该审查哪些经验教训?
- 在实施之前应完成哪些检查清单项?
## 架构
运行时服务:
- `frontend`:Next.js, TypeScript, React, 纯 CSS。
- `backend`:FastAPI, SQLAlchemy 2, Pydantic 2, Alembic。
- `db`:PostgreSQL 16。
后端智能模块:
- YAML 规则引擎:`backend/app/rules/change_risk_rules.yaml`
- 风险服务:`backend/app/services/risk_engine.py`
- 相似度服务:`backend/app/services/similarity.py`
- 人为错误智能分析:`backend/app/services/analytics.py`
- 演示资产上下文:`backend/app/services/demo_assets.py`
更多详情:
- [架构](docs/ARCHITECTURE.md)
- [数据模型](docs/DATA_MODEL.md)
- [风险引擎](docs/RISK_ENGINE.md)
- [演示场景](docs/DEMO_SCENARIO.md)
- [局限性](docs/LIMITATIONS.md)
## 内置 UI
- Dashboard
- New Change
- Change Details
- Historical Changes
- Human Error Analytics
## 使用 Docker Compose 快速开始
```
cp .env.example .env
docker compose up --build
```
打开:
- Frontend:`http://localhost:3000`
- Backend API:`http://localhost:8000`
- 健康检查:`http://localhost:8000/health`
启动时,backend 容器会运行:
1. `alembic upgrade head`
2. 当 `DEMO_MODE=true` 时的幂等演示种子数据
3. FastAPI 服务器
## 本地后端
PowerShell SQLite 演示设置:
```
cd backend
$env:DATABASE_URL = "sqlite+pysqlite:///./local_dev.db"
$env:APP_CHECK_DB_ON_STARTUP = "false"
$env:DEMO_MODE = "true"
$env:CORS_ORIGINS = "http://localhost:3000,http://127.0.0.1:3000"
python -m pip install -r requirements.txt
python -m alembic upgrade head
cd ..
python scripts\seed_demo_data.py
cd backend
python -m uvicorn app.main:app --reload
```
## 本地前端
```
cd frontend
npm install
$env:NEXT_PUBLIC_API_BASE_URL = "http://localhost:8000"
npm run dev
```
## 演示流程
主要场景:
```
Enable MFA for all contractors
```
1. 打开 `http://localhost:3000`。
2. 转到 `New Change`。
3. 选择 `Load demo scenario`。
4. 创建变更。
5. 打开创建的变更详情页面。
6. 选择 `Run analysis`。
7. 审查:
- 风险评分;
- 风险等级;
- 建议;
- 风险因素和点位;
- 每个因素的证据;
- 检查清单项;
- 类似的历史变更;
- 过往事件;
- 经验教训。
预期演示结果:
- 风险等级:`high` 或 `critical`;
- 建议:`pilot_first` 或 `delay_and_investigate`;
- 至少五个风险因素;
- 至少六个检查清单项;
- 至少三个类似的历史变更;
- 至少两个类似的失败变更。
## API 示例
创建变更:
```
curl -X POST http://localhost:8000/api/v1/changes \
-H "Content-Type: application/json" \
-d '{
"title": "Enable MFA for all contractors",
"description": "Require MFA for all external contractor accounts and block legacy authentication.",
"environment": "entra_id",
"change_type": "mfa_rollout",
"planned_start": "2026-08-05T10:00:00Z",
"planned_end": "2026-08-05T11:00:00Z",
"affected_scope": "All contractor accounts, VPN access, Microsoft 365, legacy business applications.",
"rollback_plan": "Disable the new Conditional Access policy.",
"maintenance_window": false,
"pilot_enabled": false,
"report_only_mode": false
}'
```
分析:
```
curl -X POST http://localhost:8000/api/v1/changes/{id}/analyze
curl http://localhost:8000/api/v1/changes/{id}/assessment
curl "http://localhost:8000/api/v1/changes/{id}/similar?limit=5"
```
分析数据:
```
curl http://localhost:8000/api/v1/analytics/summary
curl http://localhost:8000/api/v1/analytics/root-causes
curl http://localhost:8000/api/v1/analytics/change-types
curl http://localhost:8000/api/v1/analytics/failure-patterns
```
## 截图占位符
在本地运行 MVP 后添加最终截图:
- `docs/screenshots/dashboard.png`
- `docs/screenshots/new-change.png`
- `docs/screenshots/change-details-risk.png`
- `docs/screenshots/historical-changes.png`
- `docs/screenshots/human-error-analytics.png`
## 验证
Backend:
```
cd backend
python -m pytest
```
Frontend:
```
cd frontend
npm run typecheck
npm run build
npm audit --audit-level=moderate
```
Compose 语法:
```
docker compose config
```
## 当前局限性
- 无身份验证。
- 无真实的 Microsoft Graph 集成。
- 无实时的 Entra ID、Intune、Defender 或 Azure 数据接入。
- 无 embeddings 或语义搜索。
- 演示资产是 JSON 上下文,而不是一等数据库实体。
- 风险评分是确定性的,在生产使用前应进行校准。
参见[局限性](docs/LIMITATIONS.md)。
## 未来集成
- Microsoft Graph
- Entra Conditional Access 策略导出
- Intune 设备合规性策略
- Defender 策略基线
- CMDB 或资产清单
- ServiceNow 或 Jira 变更工单
- 证据附件
- 审批工作流
- 基于角色的访问控制
标签:AV绕过, FastAPI, Microsoft 365, 云计算, 变更管理, 测试用例, 规则引擎, 请求拦截, 运维审计, 逆向工具