企业本体应该理解权限还是拥有权限

27 阅读13分钟

企业本体应该理解权限,还是拥有权限?

本体可以成为授权决策的重要输入,也可以在特定平台内执行权限;但只要源业务系统仍是现实状态权威,本体就不该靠复制 ACL 获得最终否决权。

企业建设本体后,很容易出现一个诱人的想法:

既然人员、组织、岗位、职责、项目、客户和业务动作都已经进入本体,为什么不把权限也统一放进去?

这条路看起来很顺。原来散落在 CRM、ERP、HR 和财务系统里的权限,被重新表达为一张关系图;Agent 查询本体,就能知道谁可以对什么对象执行什么动作。

问题是,“理解权限”和“拥有权限”之间差了好几层。

如果没有先划清权威边界,企业本体很快会从关系投影变成第二套 ACL:它有自己的角色、规则、缓存和审批,源系统也保留原有权限。两边只要有一次同步延迟、规则冲突或撤权遗漏,Agent 就会拿到两个不同答案。

更准确的结论是:

本体应理解授权所需的关系;策略层可以基于这些关系作出决策;只有当动作和对象本身由本体平台权威管理时,本体平台才适合拥有对应范围内的执行权限。对于外部源系统,本体 Allow 不能覆盖源系统 Deny。

先把“拥有权限”拆成三件事

企业讨论权限中台时,经常把三个问题混在一起。

1. 描述权限上下文

本体知道:

张三属于华东销售部
张三担任大客户经理
张三负责客户 A
客户 A 属于高敏感数据域
合同 B 关联客户 A

这叫理解关系。它为授权提供上下文,但还没有产生最终许可。

2. 计算授权决策

策略引擎根据用户、Agent、任务、对象、关系和风险,输出:

Allow
Deny
NeedApproval
Indeterminate

这叫作出决策。决策可以在本体平台内完成,也可以由独立 PDP 完成。

3. 执行和最终否决

真正写入数据前,执行点要再次验证对象状态、记录权限、字段权限、业务状态机和并发版本,并决定是否接受操作。

这叫执行权威。

在单一平台里,三件事可以由同一产品实现;在跨 CRM、ERP、HR 和财务系统的企业里,它们通常分属不同系统。

把“本体能表达关系”直接推导成“本体拥有全部执行权”,中间至少漏掉了策略版本、身份委托、数据新鲜度、业务状态和源系统校验。

职责关系不是生产权限

组织本体常见的输入包括部门、岗位、职责和项目分工。例如:

李经理负责华南区销售预测
王会计协助月末对账
赵主管统筹供应商管理

这些描述对搜索、推荐、任务分派和权限候选都很有价值。

但它们不能直接编译成:

李经理可以读取华南全部客户明细
王会计可以修改付款状态
赵主管可以批准任意供应商准入

“负责”“协助”“统筹”没有天然的动作、资源、数据范围和风险上限。生产授权至少还需要:

  • 具体动作;
  • 资源类型和实例范围;
  • 可见字段;
  • 金额、数量和批量上限;
  • 有效时间;
  • 是否允许转委托;
  • 是否需要审批或职责分离;
  • 当前对象状态;
  • 策略和组织快照版本。

职责可以形成授权候选,但不能成为未经审核的 Allow。

为什么第二套 ACL 很危险

假设 CRM 中已经维护客户记录权限,本体平台又复制一份“员工—区域—客户”的访问关系。

系统刚上线时,两边可能一致。问题通常发生在变化之后:

员工调岗
→ HR 已更新任职
→ CRM 已撤销原区域权限
→ 本体同步任务延迟
→ Agent 仍从旧关系中得到 Allow

或者反过来:

本体已更新新项目关系
→ 源系统账号尚未开通
→ 本体认为允许
→ 业务系统拒绝

后者会造成可用性问题,前者则可能造成越权。

复制 ACL 还会带来几个长期负担:

  • 两套规则分别演进;
  • 数据模型和权限模型耦合;
  • 撤权需要跨系统传播;
  • 缓存陈旧时间难以统一;
  • 审计无法解释到底依据哪套规则;
  • 同一请求可能获得冲突结论;
  • 平台团队被迫理解每个业务系统的细粒度语义。

权限数据不是普通主数据。它对时效、否决和审计的要求更高。晚同步一条部门名称通常可以容忍,晚撤销一个高风险写权限则不能。

一个反例:本体平台确实可以执行权限

说“本体永远只能提供上下文”也不准确。

Palantir Foundry 的 Ontology Action 就是一个值得正视的反例。官方文档显示,Action Type 的权限不仅涉及谁能查看和编辑 Action,还涉及谁能用给定参数提交 Action。

执行 Action 时,用户需要满足对象类型、链接类型和数据源相关权限,并通过 Submission Criteria。Submission Criteria 可以组合当前用户、用户组、参数、对象关系和执行上下文,决定动作是否可以提交。

Foundry 还支持把对象编辑限制为“只允许通过 Actions”。在这个范围内,Ontology 不只是描述关系,它连同 Action、权限和编辑路径共同构成了操作控制面。

这说明:

如果对象、动作、权限检查和写入路径都由同一 Ontology 平台权威管理,本体平台可以拥有该范围内的权限执行权。

但这个反例同样暴露了权限的作用域。

Palantir 文档明确描述:Action 是否可应用,仍取决于它编辑的对象类型、链接类型、数据源权限以及 Submission Criteria。文档还指出,通知发送失败时,数据编辑仍可能成功。

这意味着 Action 的同步编辑、通知副作用和外部系统写入不能被含糊地视为一个全局事务。Ontology Action 很强,但它的权限和事务保证仍有明确边界。

另一个反例:安全业务动作不一定需要本体

“Agent 的安全写操作必须经过 Ontology”同样站不住脚。

Microsoft Dataverse 的 Custom API 可以把一个或多个操作收敛成具名 API,使用插件实现业务逻辑,并通过 ExecutePrivilegeName 要求调用者拥有特定 Privilege。Custom API 还可以绑定具体表或记录,也可以作为业务事件进入 Power Automate。

这意味着一个成熟源系统可以原生提供:

具名业务动作
+ 原生身份和权限
+ 记录/表绑定
+ 业务插件逻辑
+ 生命周期管理

然后再把这个 Custom API 薄封装为 MCP Tool。

这样的架构没有中央 Ontology Action Layer,却仍然比通用 CRUD 安全得多。

因此要区分两个命题:

强命题:安全的 Agent 写操作必须由企业本体拥有权限
结论:不成立

弱命题:安全的 Agent 写操作需要受治理的业务动作,而不是 unrestricted CRUD
结论:成立

本体是实现受治理动作控制面的一个方案,不是唯一方案。

本体最适合拥有哪类权限

企业本体适合直接拥有权限的场景通常有几个共同点:

  1. 对象本身由本体平台权威管理;
  2. 所有写入口都能被 Action Layer 收口;
  3. 用户和 Agent 身份可以准确传入;
  4. 权限决策与对象当前状态在同一事务或一致性边界内;
  5. 绕过 Action 的直接写入被关闭或严格限制;
  6. 审计能关联动作、参数、用户、Agent、策略版本和对象变化;
  7. 外部副作用有明确的幂等、重试和补偿规则。

例如,本体平台原生维护的项目排班、设备维护计划或风险处置对象,可以由 Ontology Action 直接治理。

此时再要求外部系统保留一套重复 ACL,反而会造成不必要的双轨。

本体更适合“理解”哪类权限

当本体聚合的是外部系统投影时,应更克制。

典型场景包括:

  • CRM 拥有客户记录和区域权限;
  • HR 系统拥有人事字段和员工档案权限;
  • ERP 拥有订单、库存和采购状态机;
  • 财务系统拥有付款、记账和职责分离;
  • IAM/IGA 拥有账号生命周期、访问申请和再认证。

本体可以提供跨系统关系:

用户属于哪个组织
承担哪个项目角色
对象属于哪个数据域
动作涉及哪些业务系统
当前委托覆盖哪些资源

PDP 可以用这些关系计算前置决策,但调用源系统后仍要接受原生权限和业务规则的最终判断。

最重要的不变量是:

Ontology Allow ≤ Source System Allow

更准确地说,本体可以进一步收窄权限,不能放大源系统权限。

推荐的权威分层

一个跨系统企业可以把权限边界设计成下面几层:

HR / MDM
  → 人员、组织、Position、Assignment 和生效时间

IAM / IGA
  → 用户、Agent、服务身份、账号生命周期和基础访问

Enterprise Ontology
  → 组织、项目、职责、对象和数据域关系投影

PDP
  → 将身份、关系、委托、动作、资源和风险组合成决策

Action Layer
  → 具名动作、前置条件、审批、幂等、补偿和读回

Source System
  → 记录/字段权限、状态机、事务和最终 Deny

各层都可以产生拒绝,但只有清楚定义的权威系统才能产生最终许可。

如果任意一层返回 Deny、Indeterminate 或数据过期,高风险写操作不应继续。

四种部署模式,别只选“统一”或“分散”

模式一:源系统原生治理

业务系统已有成熟 Custom API、权限、审批、审计和事务。MCP 只做薄封装。

适合单系统动作和强原生平台。

模式二:本体提供上下文,源系统执行

本体统一组织、项目和数据域关系;PDP 先做任务级收窄;源系统最终执行和否决。

适合多数异构企业。

模式三:本体 Action 成为操作权威

业务对象和写入路径已迁入或原生位于 Ontology 平台,所有编辑都通过 Action 收口。

适合本体平台真正承担运营系统职责的场景。

模式四:跨系统 Action Control Plane

本体提供关系,独立 Action Service 编排多个源系统,使用 Saga、幂等和补偿处理部分失败。

适合跨 CRM、ERP、HR 和财务的高价值动作,但建设成本最高。

企业可以同时采用四种模式,不必强迫所有系统服从同一个模板。

判断是否正在制造第二套 ACL

出现下面这些现象时,应暂停扩张:

  • 平台开始复制每个源系统的角色、组和记录 ACL;
  • 同一权限既能在源系统修改,也能在本体修改;
  • 没人能说清冲突时谁优先;
  • 撤权依赖定时同步而不是事件和失效机制;
  • 高风险决策使用陈旧缓存继续放行;
  • 审计只记录“本体允许”,没有源系统最终回执;
  • Agent 使用共享服务账号绕过源系统的用户权限;
  • 本体规则无法绑定版本和生效时间;
  • 平台以“统一体验”为由开放通用写接口。

统一视图很有价值,统一权威则必须谨慎。越接近生产副作用,越不能靠语义上的“看起来一致”。

落地顺序:先解释,再旁路,最后才接管

第一阶段,先让本体解释现有权限。它输出用户为何可能拥有某项权限、涉及哪些组织和项目关系,但不影响生产决策。

第二阶段,以 Shadow 模式运行 PDP,把本体决策与源系统结果对比,重点找出:

Ontology Allow / Source Deny
Ontology Deny / Source Allow
撤权传播延迟
无法解释的历史权限

第三阶段,只让本体收窄权限。例如限制 Agent 的数据范围、调用次数和任务有效期,但不覆盖源系统拒绝。

第四阶段,选择少量本体原生对象,通过具名 Action 接管写入,并关闭旁路入口。

第五阶段,只有在对象、动作、身份、事务、审计和回退都能形成闭环时,才扩大本体 Action 的权威范围。

这个顺序比“先把全公司 ACL 导入图数据库”慢一些,却更容易在撤权和审计时说清楚真相。

结论

企业本体既不应被限制成只读知识图谱,也不该自动升级为全公司的超级权限系统。

更合理的边界是:

本体理解组织、职责、对象和关系
PDP 把这些关系编译成可版本化决策
Action Layer 管理业务动作和副作用
源系统对自己权威的数据保留最终 Deny

当本体平台原生拥有对象和写入路径时,它可以拥有对应范围内的 Action 权限。

当本体只是外部系统的关系投影时,它应该参与决策、解释权限并进一步收窄范围,而不是复制 ACL 后宣布自己成为新权威。

判断标准不是“我们是否已经建设本体”,而是:

当前这项权限对应的对象、动作、状态和写入路径,究竟由谁对现实结果负责?

能回答这个问题,企业才知道本体应该理解权限,还是拥有权限。


参考资料

  1. Palantir Foundry:Action Types Permissions
  2. Palantir Foundry:Action Submission Criteria
  3. Palantir Foundry:Action Log
  4. Microsoft Dataverse:Create and use custom APIs
  5. Microsoft Dataverse:Security roles and privileges
  6. OAuth 2.0 Token Exchange(RFC 8693)

发布摘要

企业本体已经理解组织、岗位、职责和业务对象后,是否应该顺势成为新的权限中台?本文区分“描述权限上下文、计算授权决策、拥有执行权威”三件事,结合 Palantir Ontology Action 与 Microsoft Dataverse Custom API 两个官方反例,说明本体何时可以拥有 Action 权限,何时只应提供关系和策略上下文,以及如何避免建立第二套 ACL。

标签

AI Agent 企业本体 Ontology MCP 权限系统 IAM PDP Palantir Foundry Dataverse 企业架构