权限与安全
谁能看什么、谁能改什么——在运行时强制执行。
拿一个销售组织来说:代表只能看自己团队的客户,成本价字段对他们脱敏,经理能看整个大区,审计随时要查"这条折扣谁改的"。在 ObjectStack 运行时上,这套边界就是本体的一部分——权限声明在它所保护的对象旁边,而不是另一套策略系统——也是人和 Agent 共用的同一道围栏:在每一次查询、API 调用和 AI 工具调用上强制执行,无论 Agent 是你自己经 MCP 接入的,还是 ObjectOS 的产品内 AI。
- 3 层
- 对象、记录、字段三级控制,一个模型
- 按用户
- AI Agent 继承登录用户的权限
- 不可变
- 记录的读、写与授权全程留痕;Enterprise 版还记录 AI 工具调用
权限即元数据
审阅者真的读得懂的权限。
这就是那个销售场景:支持工单可读可建、客户只读,成本相关字段只读、SSN 完全不可见,行级规则限定"只看本团队"。运行时在所有入口统一执行——UI、API 和 AI 工具。
export const SupportPermissionSet = {
name: 'support_agent',
label: 'Support Agent',
objects: {
support_case: { allowRead: true, allowCreate: true, allowEdit: true, allowDelete: false },
crm_account: { allowRead: true, allowCreate: false, allowEdit: false, allowDelete: false },
},
// Field-level security
fields: {
payout: { readable: true, editable: false },
ssn: { readable: false, editable: false },
},
// Row-level security — CEL predicates enforced on every query
rowLevelSecurity: [
{
name: 'case_own_team',
label: 'Own Team Cases Only',
object: 'support_case',
operation: 'select' as const,
using: 'team == current_user.team',
positions: ['support'],
enabled: true,
},
],
}; 访问模型
把销售组织的边界一层层落下来
一个模型覆盖全谱系——从大范围的角色授权到单条共享记录——例外不再演变成定制代码。
角色与权限集
"销售代表"是一个权限集:客户可读可建、订单可编辑、报价单不可删。默认安全姿态——没有定义明确允许之前,什么都不可读。
行级规则
"team == current_user.team" 一行表达式,代表就只看本团队;换成沿组织层级向上,经理就看整个大区——过滤发生在查询引擎内部,绕不过去。
字段级安全
成本价对代表只读、SSN 完全不可见——被脱敏的字段在 UI、API、导出和每一条 AI 回答里都保持脱敏。
记录共享
跨团队协作一单大客户?把这一条记录共享给协作人,不用扩大整个角色——例外被记录、可见、可撤销。
租户隔离
组织与工作区在运行时层保持隔离,多团队、多客户部署不会有任何意外共享。
权限管理界面
矩阵里勾出来,日志里查得到
Agent 写的权限定义,管理员在开源 ObjectStack 控制台里打开就是熟悉的矩阵——出了问题,审计查看器一条条对得上。
权限矩阵编辑器
Salesforce 式布局:上半屏是对象级增删改查与 View All/Modify All 勾选,点中某个对象,下半屏立即换成它的字段级读/写矩阵。
看得见的分配
每个权限集页面直接列出"分配给了谁"——审阅权限时不用去别处反查。
审计日志查看器
按动作、对象、操作者、时间筛选;点开任何一条,侧抽屉展示完整事件与字段的旧值 → 新值 diff——"这条折扣谁改的"三次点击有答案。
AI 的活动并排可查
AI 以登录用户身份行事,所以它读取和改动的记录与人的操作出现在同一份日志里,同样的筛选、同样的 diff。在 Enterprise 版中,AI 治理还会审计界面内 AI 的每一次工具调用。
AI 同规
Agent 拿到的是你的权限模型,不是服务账号
失去 AI 控制最快的方式就是给它超级用户权限。ObjectStack 运行时从不这么做:每个 Agent 动作都以发起它的登录用户身份执行,待在和这个用户同一道围栏里。
用户级执行
代表问 AI"我的客户里谁最可能续约",AI 看到的就是他那个团队的客户——成本价照样脱敏,一分不多。
关键处有人把关
在 ObjectOS Cloud 上,AI Builder 对已上线且已有记录的应用所做的改动存为草稿,由人来发布;退款这类业务决定,由流程中的审批节点交给审批人。
记录活动被审计
记录变更、权限授予、会话吊销和审批决定,全部写入不可变审计日志。界面内 AI 每次工具调用的审计属于 Enterprise 版的 AI 治理。
决策面
改什么、谁来审、跑什么
| 审阅者会问 | AI 编写 | 运行时执行 |
|---|---|---|
| 谁能读这个对象? | 元数据中的角色与权限集 | 每次查询、API 调用、工具调用都校验 |
| 代表能看到哪些行? | 按所有者或团队圈定的行级规则 | 过滤在查询引擎内部生效 |
| AI 能看到成本价吗? | 带脱敏的字段规则 | UI、API、导出与 AI 回答全部脱敏 |
| 这个折扣谁改的? | 不用写——审计是运行时自带的 | 审计查看器里旧值 → 新值一条条对 |
评审清单
安全评审应确认
- 每个对象都有显式的读写策略。
- 行级规则对应组织层级本身,而不是它的副本。
- 敏感字段对所有消费方脱敏,包括 AI。
- 结构性变更没有审批记录就无法上线。
- 在 Enterprise 版中,审计日志覆盖界面内 AI 的工具调用,而不只是记录写入。
FAQ
常见问题
AI Agent 有自己的服务账号吗?
没有。Agent 以登录用户身份行动,继承该用户的对象、行级与字段级权限。不存在可被泄露或滥用的特权 AI 身份。
这里哪些是开源的,ObjectOS 又加了什么?
角色与权限集、行级规则、字段级安全、共享、租户隔离、审计日志,以及 Console 里的权限矩阵编辑器与审计日志查看器,都是开源 ObjectStack,Apache-2.0,并同等适用于 MCP 工具访问。ObjectOS 加的是 Enterprise(自管版)为其产品内 AI 提供的 AI 治理——对其工具调用的逐次审计、护栏、权限限定。经 MCP 接入的外部 Agent 受上面这些开源规则约束,不在这项逐次审计范围内。
下一步