四层安全模型:从机房到 Agent
不是一页「安全口号」,而是分层对照——每一层在 OpenNexus 部署里对应什么组件、查什么日志。
L1
基础设施层
身份鉴别、设备状态、网络边界;默认零信任;子系统仅内网 BFF 暴露
L2
平台层
RBAC + 标签 + 对象/字段 ACL + 目的绑定访问(Purpose-bound)
L3
企业层
对接现有 IdP / SIEM;审计日志可导出;最小化改造成本
L4
AI 层
Agent 仅访问授权字段;工具调用经策略网关;Prompt 封闭词汇 + 禁止项校验
战场特化原则:权限不是「能不能打开这个网页」,而是「这个指挥员能不能对这个 fusedId 执行这个打击动作」——未映射、未批准、未 commit 的目标,系统层直接拦截,而不是事后追责。
train / live:同一壳子,两套风险策略
战脑顶栏模式开关不是 UI 皮肤,是执行体、裁决源、审批流的整套切换。详见 玖衍能力 Q4。
| 维度 | LVC 训练 train | 实战 / 演示 live |
|---|---|---|
| 默认 executor | cmo(推演打击) | ygxt(异构实装) |
| 裁决 adjudicator | CMO 内置 / 可 JUDGE | JUDGE SSOT |
| ATO 批准 | 可 auto_approved | pending → 舱室人审 |
| 打击对象 | 允许 stub / 演示降级 | 禁 demo fusedId;须 db:* commit |
| BDA 门控 | 训练可 force-unlock | 必须等 JUDGE 回写 |
| 配置 SSOT | brain-config.js → executor / adjudicator 映射 | |
设计理由:安全边界 · LVC 职责分离 · 教学可控 · 裁决权威 · 映射本体论——五件事用一个开关同时兑现,避免教员误把训练当实战放行。
对象与字段级访问控制
以战场目标 fusedId 为例——不同角色看到不同字段、能执行不同动作。
| 角色 | 可读 | 可执行动作 | 典型用户 |
|---|---|---|---|
analyst | 位置、类型、置信度、来源 | 标记误报 mark_false_positive | 情报分析员 |
operator | + 威胁评级、武器分配建议 | 映射提案、杀伤链 Step①② | 操作员 / 联调 |
commander | + 完整 ORBAT、ATO 全文 | 批准打击 kc-cockpit/approve、live 下发 | 指挥员 |
agent-llm | 仅 decision-context-bundle 授权字段 | 产出 atomic_tasks(须校验器放行) | Gradio / CMOLLM |
敏感字段默认 deny
strikeReady
false 时:Prompt 仅允许 RECON/PATROL;KC preflight 阻断 Step③
db:* 映射
未 commit 不得当真打击;live 禁幽灵目标
友军 ORBAT
为空时 Gradio orchestrator 阻断推送
plan_id
Gradio 直推与 Brain strat-close 禁止双推
AI 治理:参谋可辅助,不能越权
信任不靠「模型更大」,靠封闭动作语言 + 条令溯源 + 装备库门禁 + 人在回路。
PROMPTOPS
提示词约束栈
- ZSSC
tactic_id白名单(70+ 条目) - Doctrine Pack
## 硬约束按区域/opMode 注入 - 仅 10 种原子任务;
FORBIDDEN_TASK_TYPES校验 - 每条任务带
reasoning可摘进讲评
HITL
人在回路
- 训练:可自动批准 ATO,便于联训
- 实战:杀伤链 Step④ 须 confirm / 舱室批准
- Claude 条令阻挡(live 可选)
- 指挥员看到「引用了哪条战法」
指挥员信任公式(工程实现):
条令溯源(tactic_id) + DB3K505 本体(db:*) + 会话日志(LLMSessionLogger)
+ 执行回执(assigned/failed/command_faults) + HITL 批准轨迹
→ 不是黑盒自动开火
审计与证据链:能回放,不是能删
审计 ≠ 堆日志文件。要能按 对象 ID 回放「谁、何时、为了什么、改了什么、结果如何」。
| 事件类型 | 记录内容 | 存储 / 入口 |
|---|---|---|
| 对象读取 | who / when / purpose / 字段集 | BFF 访问日志 |
| 映射变更 | proposal → commit;mapMode;db:* | mapping-registry |
| LLM 决策 | prompts / responses / battle_states | LLMSessionLogger |
| ATO 批准 | approvalStatus;审批人;时间戳 | kc-ato-cache · kc-cockpit |
| 动作执行 | before / after 快照;command_faults | WPF status API |
| 毁伤裁决 | verdict fanout;实体消失回写 | JUDGE · BDA 门控 |
READ
purpose 绑定
DECIDE
知识引用
APPROVE
HITL
ACT
ACK/故障
REPLAY
按 ID 回放
关键控制项(可测试)
CTRL-01对象读取必须记录
who / when / purpose;敏感字段默认 deny,按角色+目的单独放行CTRL-02动作回写必须写入
before / after 快照与责任主体;失败须记录错误码与重试轨迹CTRL-03越权访问返回统一错误码并触发告警;live 路径禁止 demo fusedId 进入打击链
CTRL-04Agent 工具调用日志与业务动作日志可按
plan_id / fusedId 对齐CTRL-05Gradio 与 Brain 禁止同一
plan_id 双推 WPF(架构不变量)CTRL-06浏览器仅允许
/api/brain/v1/*;禁止跨域直连子系统后端发布前验收清单
上线前逐项勾选——与 Gate 手册、verify 脚本对齐。
☐至少 3 个角色策略经过模拟越权测试(analyst 不能 approve、agent 不能读未授权字段)
☐对象与字段 ACL 已在生产策略表可追溯;
train / live 行为差异已文档化☐审计日志可按
fusedId 或 plan_id 回放完整行为链☐live 模式:未批准 ATO 无法进入 task-route dispatch(含 E2E 用例)
☐LLM 输出经
FORBIDDEN_TASK_TYPES 与 geo_anchor 校验;违规样本已回归测试☐
verify-gradio-brain.ps1 与 ecosystem-status 探针全绿或 degraded 可解释安全相关 Gate 对照
| Gate ID | 含义 | 验收方式 |
|---|---|---|
G-KC-LIVE-COCKPIT-01 | live 舱室批准 | POST /kc-cockpit/approve 后 ATO 才可下发 |
G-BDA-GATE-01 | 毁伤解锁门控 | live 必须等 JUDGE;训练可降级 |
G-ROUTE-01 | 通道纯度 | CMO 任务不走异构 LV 通道 |
G-STRAT-CLOSE-01 | 战略闭环 | 禁 demo fusedId;≥1 CMO 任务校验 |
G-CMD-ATO-GENERATE-01 | ATO 生成预检 | 映射未 commit 不起生成转圈 |