数据安全级别

Salesforce中将数据安全分为若干等级:

  • 组织级别:组织级别的安全设定在整个系统内部都有效。这是最广泛的级别
  • 对象级别:对象级别的安全设定可以限制用户对于对象的权限
  • 字段级别:字段级别的安全设定可以限制用户对于字段的权限
  • 记录级别:记录级别的安全设定可以限制用户对于记录的权限,这是最详细的级别

数据安全级别的关系

  • 对象级别和字段级别是相关联的,当用户对某字段有权限,那么对该字段所属的对象也是有权限的
  • 记录级别独立于对象级别和字段级别,是用户对于某条记录的权限的单独设定。但是当此用户在对象或字段的权限中有“查看全部”和“修改全部”权限时,记录级别会被忽略,即用户可以看或修改任何记录

权限计算

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

尽量避免引发复杂的权限计算

Salesforce 中关于记录的共享计算很复杂,包括了用户角色等级的设定、公共组设定等。

由于Salesforce会在权限设定更改时立即计算数据记录的权限,看似简单的改变可能引起大量的系统后台操作。

比如在改变一个用户的角色等级的时候,Salesforce 会重新计算每条相关记录的共享设定,包括:

  • 该用户所拥有的、共享给别的用户的记录在角色改变以后仍然有效或者不再有效
  • 角色等级在该用户上级的用户对于每条记录的权限要重新计算
  • 所有涉及到原角色和新角色的共享规则都要重新计算,以此来将该用户拥有的记录移除和添加到相应共享规则的计算结果

对于管理员来说,他所做的只是简单的改变了一个用户的角色。而这个看似简单的改变引发了大量的后台操作,大大降低了系统的运行效率。

与此同时,在权限计算进行中,相关的记录会被锁定。其他用户尝试修改这条记录时会出错。

数据库中的权限相关表格

在数据库中,Salesforce主要使用三类数据表来管理各种权限设定:

  • 对象记录表(Object Record Table):这类表中存储着数据记录
  • 对象共享表(Object Sharing Table):这类表中存储着各个对象的共享权限,共享权限包括了各种权限设定,包括手动共享、角色权限、共享规则等
  • 用户组表(Group Maintenance Table):这类表中保存着各个用户和用户组的关系

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

  1. 在对象记录表中找到这条记录
  2. 在对象共享表中根据这条记录的ID找到存储于其中的共享权限
  3. 在用户组表中根据用户或组的ID找到对应的记录,然后在对象共享表中找到和该用户或组的ID相对应的共享权限

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

组织级别的安全设定举例

组织级别的安全设定在整个系统内部都有效。最常用的设定有用户管理、密码规则、登陆IP限制等。

用户管理

用户管理是典型的组织级别的设定。管理员可以方便的从设置界面对用户进行管理。

需要注意的一点是:一个用户账户只能被冻结(无法登陆),而不能被直接删除。

密码规则设定

管理员可以设定所有用户都必须遵守的密码规则。

在设置界面下搜索“密码策略”,点击“安全性控制”菜单下的“密码策略”链接,可以进入“密码策略”的设定界面。

在此界面中,管理员可以设定用户密码的有效期、密码最小长度、密码复杂性等规则。

使所有密码到期

管理员可以一次性使所有密码到期。

在设置界面下搜索“使所有密码到期”,点击“安全性控制”菜单下的“使所有密码到期”链接,可以进入“使所有密码到期”的设定界面。

在此界面中,管理员可以勾选“使所有用户密码到期”,点击“保存”按钮,从而使所有用户的密码都到期,当用户下次登录时,必须重新设置密码。

受信IP范围

管理员可以设定一个IP范围,只有IP地址属于这个范围内的设备可以登录。

在设置界面下搜索“网络访问”,点击“安全性控制”菜单下的“网络访问”链接,可以进入“网络访问”的设定界面。

在此界面中,管理员需要输入开始和结束的IP地址,并保存。

登录时间和IP限制

Salesforce的用户都属于某一个用户简档。用户简档包含了一系列的规则,规定了用户在整个系统各个方面的权限。其中一种权限就是登录的时间和IP。

在设置界面下搜索“简档”,点击“管理用户”菜单下的“简档”链接,进入“简档”一览表界面。

点击任一简档的名字,进入其详细信息界面。

在简档详细信息的页面最下方,可以找到“登录时间”和“登录 IP 范围”的部分。管理员可以在此处进行设置,规定属于该简档的用户可以登录的时间范围和IP范围。在范围之外的时间或IP的用户无法登录。

如果用户在已经登录的状态下进行工作,当超过了登录时间范围的时候,用户会被自动登出,未保存的工作将丢失。

用户简档

用户简档(Profile)是一组规则的集合,规定了用户对于整个系统各个方面的权限,也包括对象。

利用用户简档,管理员可以设定属于该简档的用户对于若干对象的权限,比如查看、创建、编辑、删除等。这里同样也适用于每个对象的每个字段。

对象的特殊权限

在用户简档中,管理员还可以对对象设定两个特殊权限:“查看全部”和“修改全部”。这两个权限可以使具有此简档的用户忽略其他任何对此对象的安全设定,永远具有对此对象所有记录的查看权限和修改权限。

权限组

除了用户简档,管理员还可以设置权限组。权限组的内容和用户简档类似,也是一组用户对于系统各个方面权限的规则集合。

用户简档和权限组的功能有重叠的部分,一般来说,每个用户都必须具有一个用户简档,权限组可以作为用户简档的补充手段。

用户简档里的规则是统一的。当属于某用户简档的一部分用户需要一些特殊权限的时候,可以将这些特殊权限设定在某权限组中,再将该部分用户加入权限组里,这样,他们就可以在不失去用户简档规定的权限的同时拥有了权限组中规定的权限。

共享设置

在设置界面下搜索“共享设置”,点击“安全性控制”菜单中的“共享设置”链接,即可进入“共享设置”界面。

“共享设置”界面显示了系统中对于每个对象的权限设置。“共享设置”界面分为两部分:“默认共享设置”和“共享规则”。

“共享设置”处于数据安全级别的最底层,如果在用户简档或其他地方对于某些对象有其他的权限设定,则此处的访问权限设定将会被忽略。

默认共享设置

默认共享设置影响的范围是整个组织,在此可以规定每个对象对于所有用户的访问权限。

共享规则

共享规则是基于每个对象的。一条共享规则包括:

  • 基本属性:标签、名字、描述等
  • 规则类型:可以设定是基于记录的所有人还是基于某些条件
  • 被共享的用户:可以设定此共享规则对哪些用户有效。此处的用户分为三种:公用小组、角色、角色及下属
  • 被共享用户的访问权限:可以设定被共享的用户对于此数据有哪些权限

手动共享记录

无论是用户简档、权限组、共享设置,都只能设定对象、字段共享的规则。如果用户想共享某一条记录,那么就需要手动设置该记录的共享权限。

在记录的详细页面上,单击“共享”按钮,即可设定共享规则。

当一个对象在“共享设置”的“默认共享设置”中被设为“公用读/写”权限时,此对象的记录默认被所有用户共享,则此对象的记录中没有“共享”按钮。

隐式共享

Salesforce中的隐式共享是自动发生的,无法被关闭或消除。隐式共享对自定义对象不起作用。

父关系隐式共享

当某用户对某条Account记录的子记录(机会 Opportunity、联系人 Contact、个案 Case)拥有权限时,该用户自动对该Account记录拥有权限。

子关系隐式共享

当某用户是某条Account记录的所有者(Owner)时,该用户自动对此Account的各个子记录(机会 Opportunity、联系人 Contact、个案 Case)拥有权限。

记录权限设定小结

  1. 简档和权限集(Profiles and Permission Sets)。这是在对象层级设置的权限,可以设置对于每个对象的权限。特殊的选项是“读取所有”(View all)和“修改所有”(Modify all),它们的优先级高过其余的分享规则等设定。权限集一般是作为简档的补充。
  2. 记录所有者和队列(Record Ownership and Queues)。每条记录都要有所有者,而所有者对于记录的权限取决于所有者用户所属的简档和权限集。队列是一种特殊的用户组。
  3. 组织范围默认设定(Organization-Wide Defaults)。它是唯一的可以限制用户对于记录的读写权限的方法,其他的记录权限架构设定都是给出对于记录的读写权限。
  4. 角色层级(Role Hierarchy)。角色层级定义了用户的上下级关系。如果某个用户对一条记录有某种读写权限,那么角色处于这个用户上层的所有用户默认对这条记录拥有相同的权限。角色层级是记录权限架构的基础,所以必须小心地设计。一个简单的用户角色改动会引起大量的记录权限计算。
  5. 公共组(Public Groups)。公共组可以包含用户、角色、区域等,也可以包含其他公共组。
  6. 基于记录所有者的分享规则(Ownership-based Sharing Rules)。这是特殊的记录分享规则,可以将读写权限授予非记录所有者。
  7. 基于条件的分享规则(Criteria-based Sharing Rules)。和上一条类似,但是分享条件是基于某些字段的值。分享规则可以提供除了简档、角色层级等方法之外的额外的权限分享。
  8. 手动分享(Manual Sharing)。记录所有者可以手动设置某条记录的分享。当记录所有者变更,或者记录的分享设定比组织范围默认设定宽松的时候,手动分享的设定会被移除。
  9. 小组(Teams)。这是一种特殊的设定,适用于客户(Account)、机会(Opportunity)和案例(Case)对象。记录所有者可以建立一个小组,包含若干用户,这些用户就形成了针对这条记录的小组。
  10. 区域层级(Territory Hierarchy)。这是将记录按照“区域”,也就是不同的业务单元来划分。它只适用于客户(Account)、机会(Opportunity)和属于它们的“主-详细”(Master-Detail)关系的记录。
  11. 隐式分享(Implicit Sharing)。自动建立的分享规则。对于父、子记录的隐式分享,只对客户(Account)和其子对象(机会、联系人、案例)有效。

Salesforce数据安全简介的更多相关文章

  1. Salesforce DX 简介

    Salesforce DX Salesforce DX (Salesforce Developer Experience) 是 Salesforce 推出的一个新的开发和部署模式,旨在提供更好的开发者 ...

  2. Salesforce 系列(一):云服务和 Salesforce 理念简介

    本系列文章系笔者在 Salesforce 开发过程中的些许总结与心得,旨在记录自己的成长,以及为对 Salesforce 感兴趣的小伙伴提供一些帮助,如有疏漏,还望多多包涵 ~ 云服务 云服务,也称云 ...

  3. Salesforce的数据权限机制

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

  4. Salesforce 简介

    Salesforce是什么 Salesforce是一个功能全面的云平台.它是践行Saas(软件及服务)概念的先驱之一. Salesforce的核心功能是CRM(客户关系管理系统).系统默认提供大多数C ...

  5. 【阿里云-大数据】阿里云DataWorks学习视频汇总

    阿里云DataWorks学习视频汇总 注意:本文档中引用的视频均来自阿里云官方的帮助文档,本文档仅仅是汇总整理,方便学习. 阿里云DataWorks帮助文档链接:https://help.aliyun ...

  6. Salesforce服务云简介

    服务云简介 Salesforce的服务云(Service Cloud)是专注于客服和呼叫中心解决方案的子系统.它是Salesforce核心CRM系统的一部分. 服务云特性 服务云提供了客户服务和呼叫中 ...

  7. Salesforce的数据安全防护措施

    通过Salesforce,我们可以配置或开发出功能强大的网络应用.与此同时,无论作为管理员还是开发者,我们都要面对数据安全的问题. 常见的数据安全隐患有: SQL注入 跨站脚本攻击 跨站请求伪造 点击 ...

  8. Salesforce 导入导出数据简介

    导入数据的方式 有两种方式可以将数据导入Salesforce: 数据导入向导 Data Loader工具 Salesforce支持将csv文件中的数据导入系统. 数据导入向导 数据导入向导可以从设置界 ...

  9. Salesforce Live Agent 简介

    Live Agent Salesforce 内置了即时聊天功能--Live Agent,可以用来作为客服工具. 本文简单介绍了使用 Live Agent 的步骤,主要包含: 启用 Live Agent ...

随机推荐

  1. SVN 客户端 TortoiseSVN 的安装和使用

    关于 参考博客:TortoiseSVN新人使用指南 TortoiseSVN 是一个 Apache Subversion(SVN)客户端,实现为Windows外壳扩展.它直观且易于使用,因为它不需要Su ...

  2. create-react-app脚手架中配置webpack的方法

    概述 create-react-app脚手架中的react-scripts能够(1)帮我们自动下载需要的webpack依赖:(2)自己写了一个nodejs服务端脚本代码:(3)使用express的Ht ...

  3. Swift5 语言指南(一) 关于Swift

    Swift是编写软件的绝佳方式,无论是用于手机,台式机,服务器还是其他任何运行代码的软件.它是一种安全,快速,交互式的编程语言,它将现代语言思维的最佳结合与来自更广泛的Apple工程文化的智慧和来自开 ...

  4. kaili 安装中文输入法

    kaili 安装中文输入法 更换为国内可用的源: vim /etc/apt/sources.list 添加以下内容: deb http://mirrors.ustc.edu.cn/kali sana ...

  5. 卖给高通之后的CSR的现状和未来

    转眼之间,CSR已经嫁给高通两年了,养在深宫大院大小妾的CSR,到底过的怎么样呢? 从高通官网上查看的结果显示,CSR产品被分成了三类: A 传统的用在耳机音响的CSR86XX系列,这部分改动不大,就 ...

  6. 【sping揭秘】21、Spring动态数据源的切换

    对于多个数据源的时候,我们如何切换不同的数据源进行数据库的操作呢? 当然我们可以直接定义2个DataSource,然后在每次获取connection的时候,从不同的DataSource中获取conne ...

  7. IO流查找文件然后写入TXT文档

    今天领导让分析日志,把日志中所有登录过的员工信息都拿出来.于是.把日志摘下来谢了这段代码 import java.io.BufferedReader;import java.io.BufferedWr ...

  8. GO入门——7. 并发

    1 并发 1.1 goroutine Goroutine 奉行通过通信来共享内存,而不是共享内存来通信 goroutine 只是由官方实现的超级"线程池"而已. 每个实例 4-5K ...

  9. python3中的range函数返回的是列表吗?

    注意,这里说的Python3里面的range函数,和Python2是不同的,返回的不是列表,是可迭代对象. 在python3中,如果执行下面的语句 print(range(10)) 得到结果是 ran ...

  10. SQOOP安装部署

    1.环境准备 1.1软件版本 sqoop-1.4.5 下载地址 2.配置 sqoop的配置比较简单,下面给出需要配置的文件 2.1环境变量 sudo vi /etc/profile SQOOP_HOM ...