设为首页 加入收藏

TOP

Salesforce的数据权限机制(一)
2019-09-17 18:31:29 】 浏览:55
Tags:Salesforce 数据 权限 机制

本文主要介绍了 Salesforce 对于系统中数据的访问控制是如何设计的,然后也了解了下 Alfresco 和 Oracle VPD 的数据权限机制。希望对一些业务系统的数据权限的访问控制设计能有所参考和启发。

Salesforce

1. 产品功能

salesforce是基于 SaaS 的客户关系管理系统(CRM),该系统提供的功能覆盖了众多不同的业务领域,例如:客户资料存储,销售业务管理,协同办公等。在此基础上,Salesforce又提供了一个开发平台以帮助其客户根据自身的需求对核心系统进行定制和扩展。

2. 数据权限配置

在salesforce平台,可以控制哪些用户可以访问哪些 Organization, Objects, Fields, Records 的数据,通过结合不同级别的安全控制,来为成千上万的应用提供恰到好处的数据访问级别。

例如下面是在salesforce平台上的一个招聘系统,开发者配置的数据权限:

如上图中:

  • Objects-Level Security:对象级别的数据权限,类似DB中的表。例如:面试官只能查看候选人和招聘职位信息,而不能查看offer信息。
  • Field-Level Security:列数据权限,类似DB表的列字段。例如:面试官可以查看候选人的姓名、住址,而不能查看电话号码、薪资等敏感信息。
  • Record-Level Security:行数据权限,类似DB表中的行记录。例如:面试官只能查看自己所在部门下的候选人信息,而不能查看其它部门下的候选人信息。

下面详细描述 salesforce 中数据的4种安全级别控制:

1)Organization 的数据访问控制

只有通过认证的员工才能登录到系统,是最广泛的数据保护级别。常用的设定有用户管理、密码登录、登录IP限制等。

2)Objects 的数据访问控制

Object可以看做表。Object 是由 Records 组成,通过 profile 和 permission sets 来设置 objects 的数据访问权限。一个用户会有一个 profile 和许多 permission sets。

  • profile(简档):是 salesforce 为每个用户指定的标准配置文件,在创建用户时候指定(不同用户可使用同一profile)。通过一组规则集合,规定了用户对这个系统各方面的权限。分为 settings 和 permissions 两部分:

    • settings:决定用户可以访问哪些 objects

    • permissions:对 objects 上的 records 能执行哪些操作:增删改查

  • permission sets(权限集):分配给用户额外的权限和访问规则,也由 settings 和 permissions 组成。permission sets 的权限范围和 profile 是类似的。

一个用户只能有一个 profile,但可以有多个 permission sets。一般使用 profile 分配给用户最低的权限集合,然后使用 permission sets 补充配置的其他权限。两个联合使用,提供了访问 objects 的灵活性。

下图是 profile 中对象的权限设定:

3)Fields 的列访问控制

Field可看做表中的列。有时,用户可以访问 Objects,但不能访问/修改 Object 的 Fields,例如:身份证信息、薪资信息等。Fields 列权限可通过 profile、permission sets 来控制

 

4)Records 的行访问控制

Record可看做表中的行记录。用户访问 Objects 时只能访问子集中的一部分 Records。而控制 Records 的数据访问范围有四个方法:

① Org-wide defaults:组织范围内的默认基础设置。共享设置是数据安全级别的最底层,如果用户在 profiles 或其他地方对某些对象有其他权限设定,则此处的权限设定会被忽略。

可以对系统中每个对象进行访问权限设置,例如下图:

有以下四种策略:

  • Private:只有 record 的拥有者(owner),以及上级能查看、编辑 

  • Public Read Only:所有用户可查看 records,但只有拥有者和上级能编辑
  • Public Read/Write:所有用户可以查看、编辑 records

  • Controlled by Parent:一个用户可查看、编辑、删除一个 record,那就可对该 record 下面的 record 做同样操作。

② Role hierarchies:salesforce 的角色是层级结构,类似于一个树,拥有上级角色可以同时拥有这个角色树节点下级的所有角色的 Record 权限。

③ Sharing rules:将符合规则的一些行数据,赋予符合规则的一些用户。一条共享规则包括:

  • 基本属性:标签、名字、描述等

  • 规则类型:可以设定基于记录所有人,还是基于某些条件

  • 被共享的用户:可以设定此共享规则对哪些用户生效。此处的用户分为三种:公用小组、角色、角色及下属

  • 被共享用户的访问权限:被共享的用户对于此数据有哪些权限

例如下图:

④ Manual sharing:手动共享一条记录给其他人。Records 的拥有者给没有 Records 权限的用户授予该 Record 相应的读写权限。

 

3. 数据权限校验

当用户需要进入某条记录、运行报表、搜索等操作时,salesforce 会检查用户的权限。由于 salesforce 有着复杂的权限设定,会在权限设定更改时立即计算数据记录的权限,然后将结果保存起来。这样,当用户对记录操作时,不用在此时进行权限的计算(因为会使效率变慢),而是根据存储好的权限结果直接判断。

salesforce 主要使用三种数据表来管理各种权限设定:

  • 对象记录表(Object Record Table):存储着数据记录

  • 对象共享表(Object Sharing Table):存储着各个对象的共享权限,包括了各种权限设定:Role hierarchies, Sharing rules, Manual sharing等

  • 用户组表(Group Maintenance Table):存储着各个用户和用户组的关系

当需要决定某个用户或用户组对于某条记录的权限时,会执行以下步骤:

  1. 在对象记录表中找到这条记录

  2. 在对象共享表中根据这条记录的ID找到存储于其中的共享权限

  3. 在用户组表中根据用户或组的ID找到对应的记录,然后在对象共享表中找到和该用户或组的ID相对应的共享权限

以上步骤执行完毕后,salesforce 便得到了该用户或用户组对于这条记录的权限。

 

4. 数据定义与存储

Metadatas表:存储用户自定义的对象(Record)和对象所包含的字段(Field)的结构信息,不保存具体的数据。Metadata可以保证极大的灵活性,搭配着配置化平台使用。主要有两大类:

  • Objects Metadata表:存储对象的信息,主要字段包括:对象ID(ObjID),拥有这个对象的租户ID(OrgID),对象的名称(ObjName)等
  • Fields Metadata表:存储对象附带字段的信息,主要字段包括:字段ID(FieldID),拥有这个字段的租户ID(OrgID),对象ID(ObjID),字段的名称(FieldName),字段的数据类
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇作业小结2 下一篇基础才是重中之重~面向接口编程..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目