Nexa权限L1-L4分级 + 数据库自治升级 — 方案(P2安全增强)
- 任务: pending-tasks/yanxue-nexa-permission-autonomy.md
- 提出: yanxueBot 2026-08-28 | 执行: wecom-project(协调/验收)→ wecom-fullstack(开发)
- 借鉴: TDSQL Nexa/DatabaseClaw(Catalog权限分级 + DatabaseClaw数据库自治)
一、现状盘点(2026-08-28 摸底)
| 已有能力 |
位置 |
现状 |
| approval-gate |
/usr/local/bin/approval-gate(yanxue脚本) |
shell命令级LOW/MEDIUM/HIGH/CRITICAL分级+熔断;CRITICAL含DROP TABLE |
| 一Bot一Key |
bot_bridge.py verify_bot_key(X-BOT-KEY) |
Bot API鉴权;bot_bridge_v2用X-BRIDGE-TOKEN |
| entity_id多租户 |
全表entity_id + auth_middleware |
账套隔离(酣客=1/博海=2) |
| consistency-check |
wecom-yanxue/scripts/consistency-check.py |
103项每日04:30,输出JSON报告(summary total_checks/passed/issues) |
| verify-enforcer |
profiles/*/plugins/verify-enforcer |
铁律七验证提醒插件 |
| Hermes终端安全 |
approvals.deny Bash() |
SQL DROP/TRUNCATE已被终端层拦截(实测pending_approval) |
二、权限L1-L4分级清单(核心交付物)
分级定义
| 级别 |
含义 |
处理方式 |
| L1 |
只读查询 |
X-BOT-KEY验证后直接放行 |
| L2 |
业务写(单条,可追溯) |
放行 + 写前校验(entity归属/字段校验) |
| L3 |
批量写/创建(影响大) |
放行 + 限制批量 + source_batch审计 |
| L4 |
危险(DROP/TRUNCATE/批量DELETE/生产结构修改) |
不向Bot API开放 + 终端层拦截 + 人工审批 |
API→级别→处理方式 清单
L1 只读(20项)
| API |
说明 |
处理 |
| GET /api/cma/bot/ping |
心跳 |
放行 |
| GET /api/cma/bot/overview |
总览计数 |
放行 |
| GET /api/cma/bot/kpis |
KPI列表 |
放行 |
| GET /api/cma/bot/kpis/{id}/history |
KPI历史 |
放行 |
| GET /api/cma/bot/strategic-maps |
战略地图 |
放行 |
| GET /api/cma/bot/alerts |
预警列表 |
放行 |
| GET /api/cma/bot/budget/plans |
预算计划 |
放行 |
| GET /api/cma/bot/cost/standard |
标准成本 |
放行 |
| GET /api/cma/bot/cost/actual |
实际成本 |
放行 |
| GET /api/cma/bot/actions |
行动方案 |
放行 |
| GET /api/cma/bot/organization |
组织架构 |
放行 |
| GET /api/cma/bot/data-sources |
数据源 |
放行 |
| GET /api/cma/bot/users |
用户 |
放行 |
| GET /api/cma/bot/query |
统一查询 |
放行 |
| GET /api/cma/bot/okr/list |
OKR列表 |
放行 |
| GET /api/cma/bot/nlp |
自然语言查询 |
放行 |
| GET /api/cma/bot/iron-law |
铁律KPI看板 |
放行 |
| GET /api/cma/bot/iron-law/bots |
Bot排名 |
放行 |
| GET /api/cma/bot-bridge/verify/{id}/history |
验证历史 |
放行 |
| GET /api/cma/bot-kpis |
Bot KPI管理列表 |
放行 |
L2 业务写(4项)
| API |
说明 |
处理 |
| POST /api/cma/bot/kpi-value-with-check |
写KPI值+自动预警检查 |
放行+entity归属校验(已有) |
| POST /api/cma/bot-bridge/kpi-result |
KPI计算结果回填 |
放行+归属校验 |
| POST /api/cma/bot-kpis/{kpi_id}/value |
写KPI值 |
放行+归属校验 |
| POST /api/cma/bot-bridge/verify/{id} |
验证ActionPlan回填 |
放行+rule校验 |
L3 批量写/创建(3项)
| API |
说明 |
处理 |
| POST /api/cma/bot/import |
Excel批量导入KPI值 |
放行+限制行数+source_batch |
| POST /api/cma/bot/kpis/create-with-links |
创建KPI+批量因果链 |
放行+治理校验(已有)+审计 |
| POST /api/cma/bot/bridge/mpm-result |
MPM分析结果 |
放行+校验 |
L4 危险(0项开放 = 天然隔离 ✅)
| 操作 |
现状 |
拦截层 |
| DROP TABLE |
Bot API无此端点 |
①Hermes终端approvals ②approval-gate CRITICAL |
| TRUNCATE |
Bot API无此端点 |
同上 |
| 批量DELETE |
Bot API无批量删除端点 |
同上 |
| ALTER生产表 |
Bot API无此能力 |
同上 |
| 生产环境修改 |
仅systemd/运维通道 |
approval-gate HIGH/CRITICAL |
L4结论:Bot API面不存在任何DDL/DML危险端点——Bot只能通过白名单API读写,结构变更物理不可能。实测:尝试DROP被Hermes终端层拦截(pending_approval)+ approval-gate CRITICAL。
⚠️ 2026-08-28 实测发现approval-gate分级漏洞(python直接调assess_risk):
| 命令 |
approval-gate判定 |
应判定 |
| DROP TABLE kpi_values |
CRITICAL 拦截 ✅ |
CRITICAL |
| DELETE FROM kpi_values WHERE 1=1 |
CRITICAL 拦截 ✅ |
CRITICAL |
| TRUNCATE TABLE budget_plans |
MEDIUM 放行 ❌ |
CRITICAL(生产破坏) |
| ALTER TABLE kpi_values ADD COLUMN |
MEDIUM 放行 ❌ |
HIGH/CRITICAL(生产结构修改) |
| rm -rf /var/www/html |
HIGH 拦截 ✅ |
HIGH |
| → 修复项:approval-gate CRITICAL_RISK_PATTERNS 需补 TRUNCATE/ALTER(列入待修,代码修改归全栈Bot)。 |
|
|
与approval-gate衔接
- API层L1-L3 → 走Bot API(X-BOT-KEY),低危直通
- 任何涉及shell/DB结构的操作 → approval-gate check(高危拦截+人工确认)
- L4在API面不存在,在shell面被双层拦截
三、数据库自治升级设计(借鉴DatabaseClaw)
consistency-check升级:报告 → 自动巡检
现有脚本已输出103项JSON报告。升级为:
实现位置
- 主脚本: wecom-yanxue/scripts/consistency-check.py(升级σ分级+审计)
- 新增: wecom-yanxue/scripts/consistency-autonomy.py(自动修复+工单生成,与巡检解耦)
- 审计文件: /root/WB_WS/_wisdom/consistency/autonomy-audit.log
- 工单目录: 各profile pending-tasks/(高危自动写任务文件)
关键约束
- 自治≠无限授权:自动修只限白名单低风险(关系图重建/索引统计信息建议),数据值/表结构一律人工
- 修复动作必须留审计痕迹(铁律七:不验证=没做)
- 多租户隔离:巡检SQL一律带entity_id条件,不跨账套
四、行为护栏(自治边界)
- Bot对CMA写入边界 = L1-L3白名单API(表只读面宽、写面窄:kpi_values/objectives/action_plans/kpi_alerts等业务写)
- 危险操作列表(DROP/TRUNCATE/ALTER/批量DELETE)→ 双层拦截(Hermes approvals + approval-gate)
- 与approval-gate衔接:shell危险操作必须check;与verify-enforcer衔接:自动修复后必须验证
五、验收标准(铁律七)
附加修复(验收中发现):approval-gate CRITICAL_RISK_PATTERNS 补 TRUNCATE/ALTER(原判MEDIUM放行)→ 实测现全部CRITICAL拦截,DROP/DELETE不回归。
六、开发分工(2026-08-27用户铁律:项目Bot只做方案/验收,代码修改归全栈Bot)
| 任务 |
执行 |
验收 |
| A. CMA后端Bot API分级标注+审计(risk_level字段/日志) |
wecom-fullstack ✅ commit 758f820 |
wecom-project ✅ |
| B. consistency-check升级(σ分级+自动修复+工单+审计) |
wecom-fullstack ✅ |
wecom-project ✅ |
| C. pytest覆盖(分级+拦截+巡检) |
wecom-fullstack ✅ 627 passed |
wecom-project ✅ |
| D. approval-gate TRUNCATE/ALTER拦截补丁 |
wecom-fullstack ✅ |
wecom-project ✅ 实测 |