ObjectOS
配置权限

记录访问

控制用户可以看到或修改哪些记录。

记录访问控制对象权限允许某操作之后,用户可以看到或修改的具体行。

机制

机制用途
行级安全强制租户或组织隔离
共享规则按声明式条件授予访问
记录共享授予某用户、岗位或"单元及下级单元"对特定记录的访问
所有权/层级通过所有者和业务单元树授予访问

共享模型默认值

每个对象都声明(或继承)一个 sharingModel,用于设定组织级默认值:privatepublic_readpublic_read_writecontrolled_by_parent

自 ObjectStack 13 起,带有所有者字段但未声明 sharingModel 的自定义对象默认使用私有模型——记录仅对其所有者(和管理员)可见,直到共享规则、记录共享或更宽的默认值将其开放。需要开放行为时请显式声明:

defineObject({
  name: 'crm_lead',
  sharingModel: 'public_read_write',
  // …
});

13 之前的别名 readread_writefull 已被移除;os compile 会通过 security-owd-unsetsecurity-owd-alias 校验规则标记未设置或使用别名的模型。

默认租户隔离

security 插件通过当前用户的上下文强制租户隔离。对标准平台对象,默认规则保护那些不带常规组织字段的全局表。

客户的现实期望是:

Users only see records that belong to their organization or records
explicitly shared with them.

共享规则

把共享规则用于可复用的业务策略:

  • 所有大区经理可以读取本区的 account;
  • 支持经理可以查看升级的 case;
  • 财务可以读取已批准的发票;
  • 审计员可以读取标记为审计审查的记录。

记录共享

把记录共享用于例外情况:

  • 把一个 opportunity 共享给某专家;
  • 在升级期间临时授予访问;
  • 把某条记录的访问授予一个外部集成。

排查可见性

当用户看不到一条记录时,按顺序检查:

  1. 用户是否已认证并处于预期组织?
  2. 用户是否拥有对象 read 权限?
  3. 该对象的 sharingModel 是什么(自 ObjectStack 13 起自定义对象默认 private)?
  4. 行级安全是否允许该记录?
  5. 是否有共享规则应当生效?
  6. 是否存在直接的记录共享?
  7. 该记录是否归属于预期业务单元子树中的用户?
  8. 用户是否在正确的项目/主机名下?

解释引擎可以一次性回答上述所有问题——它报告每一层的判定结果,以及是哪条授权(或缺失的授权)决定了最终结果。

On this page