术语
权限模型
权限模型是一个系统用来决定「谁可以做什么」的结构——存在哪些主体、哪些容器装载可授予的能力、多份授权如何叠加、以及什么都没有授予时会发生什么——它区别于在其中表达的任何一条具体权限。
又称 访问控制模型授权模型权限集模型RBAC 模型
在实践中
权限模型与一条权限之间的区别,就像国际象棋的规则与一步棋之间的区别。决定一套模型能否扛过安全审查的,是模型本身的三个性质,而不是任何一条规则。容器是什么——角色、用户组、Profile、权限集——其中是否有不止一种在干同一件事?一个人同时持有多份授权时,它们如何叠加:只做加法、任一份命中即放行,还是存在会压过其它规则的拒绝项,于是求值顺序和优先级决定结果?以及什么都不匹配时的默认值是拒绝还是放行?产品会在多年里累积出彼此重叠的容器,结果「这个人为什么能看到这条记录」这个问题,不模拟一遍引擎就答不出来——而这恰恰是审计员开口问的第一个问题。
ObjectStack 刻意把这个面收窄。能力容器只有一种——权限集——它按并集合并,且纯粹是加法:里面没有任何一位是拒绝。岗位是一个扁平的分发组,负责把权限集绑到人身上;业务单元是可见性层级;完全不存在 Profile 这个概念。默认拒绝在字面意义上成立:每一个 allow 位默认为 false,所以在某条定义开口之前,一个对象是读不到的。在这一套模型之上叠着四层强制:对象级 CRUD、字段级读与写、行级谓词(见「行级安全」),以及针对协作例外的按记录共享——否则这类例外只能靠放宽整个角色来解决。导出是一条独立的轴,而不是「读」的顺带结果,因为「在屏幕上看一条记录」和「把整张表拉成 CSV 拖走」是两种不同的特权——Salesforce、Dynamics、NetSuite 和 SAP 都做了这个切分,而粗粒度的模型会悄悄把它丢掉。
「只做加法、没有拒绝」是一条实打实的约束,选它是为了可审阅性,不是为了表达力。因为授权只会做加法,「这个人为什么能看到这个」的答案就是列出授予它的那几个权限集——一份有限、可读的清单;而在一个允许拒绝的模型里,同一个问题需要在可能相隔数年、由不同人写下的规则之间推理优先级。同一个性质也让 AI Agent 无需为它另发明一套东西就能被治理:Agent 以登录用户的身份行动,按那个用户的权限集解析,于是不存在一个需要单独推理其权限的特权服务身份——审阅「Agent 能做什么」与审阅「这个人能做什么」,是同一件事。
这个术语用在哪里
真正用到这个术语的页面与文章。
产品页面
文章
- AI Agent 权限检查跑在哪一层:查询下推、字段脱敏与工具闸门 该不该守权限已经没有争议;决定这道边界真假的是检查跑在哪一层。数据进入模型上下文之后再过滤,等于没过滤——那是纸面权限。本文拆开查询、字段、工具闸门三个执行点,以及平台明确不兜底的两处。
- AI Agent 数据安全边界:如何在企业权限内工作 企业不是不想让 AI agent 使用业务数据,而是不允许它绕过身份、权限、审批和审计。真正可上线的 agent,必须像一个受控用户,而不是影子管理员。
- 低代码 vs AI 原生应用平台:复杂业务卡在哪里 低代码解决的是更快搭页面和流程;复杂业务真正卡住的是对象、权限、集成、变更和可维护性。AI 原生平台要把这些变成可审查的运行时元数据。