权限模型总览:两类控制

第 1 课 · 共 7 课 约 9 分钟

组织、Markings、角色与行列策略;资源继承、读取过滤与导出的边界。

本课目标

读完这一课,你将能够

  • 分清强制控制与自主控制,说出它们在「随数据传播」上的差别
  • 说出本体(Ontology)里要保护的三样东西:定义、对象与链接、属性值
  • 判断一条保护要求该用哪类控制,并说清 AIDC 今天有哪些

先问三件事

前一门课讲完了读写本体的四个入口:API、SDK、CLI 和 MCP。这一门回答它们背后绕不开的问题:谁能看,谁能改,改本体本身时怎样不出事。

设计权限之前,先分清本体里有三样东西要保护。第一样是定义:customer 有哪些属性、叫什么名字。第二样是对象与链接,也就是真正的数据行:某一个客户,某一张销售订单。第三样是属性值:同一个客户里,creditLimitUsd 这一格。

SCHEMA

定义

看得到定义,不等于看得到数据。一个人可以知道 customer 有信用额度这一列,却读不到任何一个客户。

ROWS

对象与链接

行级问题:这一行你能不能看。采购员该不该看到所有供应商?

CELLS

属性值

列级问题:同一行里这一格你能不能看。销售看得到客户,看不到 creditLimitUsd。

再问两件事:谁会读取数据,是人、智能体还是应用;哪些路径会复制或导出数据。平台内的继承和平台外的文件是两种边界,不能把它们混为一谈。

强制控制与自主控制

强制控制自主控制
例子Markings、组织角色(Owner、Editor、Viewer)、对象与属性的安全策略、受限视图
谁来执行平台一律执行,不看你是什么角色,应用的逻辑也绕不过资源的 Owner 通过分享,一项一项授予
方向只限制:满足全部要求才放行只增加:给了才有
随数据传播沿资源层级与数据依赖继承;不保证任意副本或平台外导出继续受控只在读的那一刻过滤,读出来的数据不再带着策略
拿掉它要有专门的「扩大访问」权限,Owner 也不例外Owner 可以改授予;改安全策略还要满足相关 Markings 与角色要求

资源上的敏感要求,用 Markings;同一类型里谁能读哪些行和列,用对象与属性安全策略。两者可以叠加。复制、Function结果、Action 写值和导出要另外检查,源控制不会自动跟过去。

自主控制停在哪里

行级、列级策略过滤的是「读」。读出来的行就是普通数据,没有任何 Markings 能让后面的代码再套一次策略。所以下面这些出口,源头的策略都跟不过去:

  • Function 的返回值:AIDC 已有隔离运行时,ctx 按调用人的权限读对象。结果不自动继承源数据的安全控制。用 aidc semantic functions list 查看已发布的 Function。
  • Action 的写入:从一个受保护的类型读,写进另一个类型,生效的是写入目标的规则。
  • 模型上下文:智能体或工作流的 AI 分析步骤读到数据以后,模型怎么转述、总结,都和源头策略无关。
  • API、SDK、SQL 的响应:调用方在自己的上下文里拿到数据,可以显示、记录、转发。
  • 数据写入与导出:写进对象类型的行按目标的规则;导出的文件在平台之外,什么都不带。
随口一问

只在 customer.creditLimitUsd 上设了读限制,就认为信用额度不会外泄。

好的交代

读限制之外,检查哪些 Action、工作流和导出会把值搬到别处。为目标资源另设控制,并检查输出内容。

这不是漏洞,是设计:读的人本来就有权读,这一点始终成立。丢掉的只有传播,约束不会跟着数据离开源头。

在 AIDC 里:现在怎样设权限

先摸清现状。下面两条命令,先列出你所在组织看得见的对象类型,再看某个类型上谁有什么角色(RID 形如 ri.ontology.aidc.object-type.…,后面是类型的 id):

aidc resources list --scope organization --type objectType
aidc resources roles <rid>
现在的控制配置入口与边界
强制控制组织按命名空间隔离;资源 Markings 对 Owner 和 developer 同样生效aidc semantic admin marking-categories … 管类别,aidc semantic admin markings … 管成员和角色;aidc semantic filesystem mark 挂资源 Marking
自主控制Owner / Editor / Viewer 三种角色;Private / Group / Public / Open to Internet 四档objectSecurityPolicy 管行,propertySecurityGroups 管列;Groups 支持嵌套、成员管理与到期
SQL 读取标准 Ontology SQL(Spark SQL)按调用人过滤对象;受保护属性返回 NULLPOST /api/v2/sqlQueries/executeOntology?preview=true;Postgres 方言与数据库直连另有边界
智能体的凭证Agent Key 按主体权限与 restrictions 读取对象、执行获准 Actionoperations 限定读写操作,objectTypes 限定类型,actionTypes 限定 Action;限制不能提权

要点

  • 本体里要保护三样东西:定义、对象与链接、属性值,它们的权限是分开的。
  • Markings 沿资源层级和数据依赖继承;行列策略在读取时过滤。平台外导出不自动受控。
  • Function 结果、Action 写值、模型上下文和导出不自动继承源控制,要检查目标与输出。
  • AIDC 已有组织隔离、三种角色、四档开放程度、Groups、Markings 和行列安全策略。

练一练

给示例工厂画一张保护清单

拿示例工厂的对象类型,先不管技术,只回答:谁该看到什么。

挑 customer,写出它的定义、行、属性值三层各自谁该看到。

小测

选一个答案,马上看解析。

Q1要求「敏感资源的 Owner 也必须满足数据分级要求才能读」,该用哪类控制?

Q2creditLimitUsd 上设了列级读限制。一个 Action 把这个值写进销售订单的备注,备注的读者能看到额度吗?

Q3AIDC 今天能做到下面哪一件事?

延伸阅读