Salesforce数据安全简介
数据安全级别
Salesforce中将数据安全分为若干等级:
- 组织级别:组织级别的安全设定在整个系统内部都有效。这是最广泛的级别
- 对象级别:对象级别的安全设定可以限制用户对于对象的权限
- 字段级别:字段级别的安全设定可以限制用户对于字段的权限
- 记录级别:记录级别的安全设定可以限制用户对于记录的权限,这是最详细的级别
数据安全级别的关系
- 对象级别和字段级别是相关联的,当用户对某字段有权限,那么对该字段所属的对象也是有权限的
- 记录级别独立于对象级别和字段级别,是用户对于某条记录的权限的单独设定。但是当此用户在对象或字段的权限中有“查看全部”和“修改全部”权限时,记录级别会被忽略,即用户可以看或修改任何记录
权限计算
当用户需要进入某条记录、运行报表、进行搜索等操作时,Salesforce会检查该用户的权限。由于Salesforce中有着复杂的权限设定,Salesforce会在权限设定更改时立即计算数据记录的权限,然后将结果保存起来。这样,当用户需要对记录进行操作时,Salesforce不用在此时进行权限的计算(因为会使效率变慢),而是根据储存好的权限结果直接进行判断。
尽量避免引发复杂的权限计算
Salesforce 中关于记录的共享计算很复杂,包括了用户角色等级的设定、公共组设定等。
由于Salesforce会在权限设定更改时立即计算数据记录的权限,看似简单的改变可能引起大量的系统后台操作。
比如在改变一个用户的角色等级的时候,Salesforce 会重新计算每条相关记录的共享设定,包括:
- 该用户所拥有的、共享给别的用户的记录在角色改变以后仍然有效或者不再有效
- 角色等级在该用户上级的用户对于每条记录的权限要重新计算
- 所有涉及到原角色和新角色的共享规则都要重新计算,以此来将该用户拥有的记录移除和添加到相应共享规则的计算结果
对于管理员来说,他所做的只是简单的改变了一个用户的角色。而这个看似简单的改变引发了大量的后台操作,大大降低了系统的运行效率。
与此同时,在权限计算进行中,相关的记录会被锁定。其他用户尝试修改这条记录时会出错。
数据库中的权限相关表格
在数据库中,Salesforce主要使用三类数据表来管理各种权限设定:
- 对象记录表(Object Record Table):这类表中存储着数据记录
- 对象共享表(Object Sharing Table):这类表中存储着各个对象的共享权限,共享权限包括了各种权限设定,包括手动共享、角色权限、共享规则等
- 用户组表(Group Maintenance Table):这类表中保存着各个用户和用户组的关系
当需要决定某个用户或用户组对于某条记录的权限时,会执行以下步骤:
- 在对象记录表中找到这条记录
- 在对象共享表中根据这条记录的ID找到存储于其中的共享权限
- 在用户组表中根据用户或组的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)拥有权限。
记录权限设定小结
- 简档和权限集(Profiles and Permission Sets)。这是在对象层级设置的权限,可以设置对于每个对象的权限。特殊的选项是“读取所有”(View all)和“修改所有”(Modify all),它们的优先级高过其余的分享规则等设定。权限集一般是作为简档的补充。
- 记录所有者和队列(Record Ownership and Queues)。每条记录都要有所有者,而所有者对于记录的权限取决于所有者用户所属的简档和权限集。队列是一种特殊的用户组。
- 组织范围默认设定(Organization-Wide Defaults)。它是唯一的可以限制用户对于记录的读写权限的方法,其他的记录权限架构设定都是给出对于记录的读写权限。
- 角色层级(Role Hierarchy)。角色层级定义了用户的上下级关系。如果某个用户对一条记录有某种读写权限,那么角色处于这个用户上层的所有用户默认对这条记录拥有相同的权限。角色层级是记录权限架构的基础,所以必须小心地设计。一个简单的用户角色改动会引起大量的记录权限计算。
- 公共组(Public Groups)。公共组可以包含用户、角色、区域等,也可以包含其他公共组。
- 基于记录所有者的分享规则(Ownership-based Sharing Rules)。这是特殊的记录分享规则,可以将读写权限授予非记录所有者。
- 基于条件的分享规则(Criteria-based Sharing Rules)。和上一条类似,但是分享条件是基于某些字段的值。分享规则可以提供除了简档、角色层级等方法之外的额外的权限分享。
- 手动分享(Manual Sharing)。记录所有者可以手动设置某条记录的分享。当记录所有者变更,或者记录的分享设定比组织范围默认设定宽松的时候,手动分享的设定会被移除。
- 小组(Teams)。这是一种特殊的设定,适用于客户(Account)、机会(Opportunity)和案例(Case)对象。记录所有者可以建立一个小组,包含若干用户,这些用户就形成了针对这条记录的小组。
- 区域层级(Territory Hierarchy)。这是将记录按照“区域”,也就是不同的业务单元来划分。它只适用于客户(Account)、机会(Opportunity)和属于它们的“主-详细”(Master-Detail)关系的记录。
- 隐式分享(Implicit Sharing)。自动建立的分享规则。对于父、子记录的隐式分享,只对客户(Account)和其子对象(机会、联系人、案例)有效。
Salesforce数据安全简介的更多相关文章
- Salesforce DX 简介
Salesforce DX Salesforce DX (Salesforce Developer Experience) 是 Salesforce 推出的一个新的开发和部署模式,旨在提供更好的开发者 ...
- Salesforce 系列(一):云服务和 Salesforce 理念简介
本系列文章系笔者在 Salesforce 开发过程中的些许总结与心得,旨在记录自己的成长,以及为对 Salesforce 感兴趣的小伙伴提供一些帮助,如有疏漏,还望多多包涵 ~ 云服务 云服务,也称云 ...
- Salesforce的数据权限机制
本文主要介绍了 Salesforce 对于系统中数据的访问控制是如何设计的,然后也了解了下 Alfresco 和 Oracle VPD 的数据权限机制.希望对一些业务系统的数据权限的访问控制设计能有所 ...
- Salesforce 简介
Salesforce是什么 Salesforce是一个功能全面的云平台.它是践行Saas(软件及服务)概念的先驱之一. Salesforce的核心功能是CRM(客户关系管理系统).系统默认提供大多数C ...
- 【阿里云-大数据】阿里云DataWorks学习视频汇总
阿里云DataWorks学习视频汇总 注意:本文档中引用的视频均来自阿里云官方的帮助文档,本文档仅仅是汇总整理,方便学习. 阿里云DataWorks帮助文档链接:https://help.aliyun ...
- Salesforce服务云简介
服务云简介 Salesforce的服务云(Service Cloud)是专注于客服和呼叫中心解决方案的子系统.它是Salesforce核心CRM系统的一部分. 服务云特性 服务云提供了客户服务和呼叫中 ...
- Salesforce的数据安全防护措施
通过Salesforce,我们可以配置或开发出功能强大的网络应用.与此同时,无论作为管理员还是开发者,我们都要面对数据安全的问题. 常见的数据安全隐患有: SQL注入 跨站脚本攻击 跨站请求伪造 点击 ...
- Salesforce 导入导出数据简介
导入数据的方式 有两种方式可以将数据导入Salesforce: 数据导入向导 Data Loader工具 Salesforce支持将csv文件中的数据导入系统. 数据导入向导 数据导入向导可以从设置界 ...
- Salesforce Live Agent 简介
Live Agent Salesforce 内置了即时聊天功能--Live Agent,可以用来作为客服工具. 本文简单介绍了使用 Live Agent 的步骤,主要包含: 启用 Live Agent ...
随机推荐
- moment.js 学习笔记
一.安装 / 使用 npm install moment 注:使用版本为 2.22.2 var moment = require('moment'); moment().format(); // 20 ...
- Linux下Clamav 杀毒软件安装使用文档
一.安装Clamav杀毒工具 0.安装Clamav需要的依赖包 yum install libxml* openssl* -y 1.创建clamav组 groupadd clamav 2.创建clam ...
- Testing - 软件测试知识梳理 - 基础概念
测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计.实施.维护的的整个生命周期过程. 仅仅发现Bug是测试的初步,而分析出根本原因推动问题的解决,却要有很深的功底. 不同的测试岗位从事不同的 ...
- iOS之Settings.Bundle的应用
Settings.Bundle Settings.Bundle支持六种配置项分别是:Title,MultiValue,Group,Slider,ToggleSwitch,TextField . Tit ...
- [视频]K8飞刀 hacking team flash0day shellcode exploit
[视频]K8飞刀 hacking team flash0day shellcode exploit 链接:https://pan.baidu.com/s/1aVEElE2Y6zhOkaWKsUZ7Hg ...
- eval() 和 with()
作用域完全由写代码时的函数声明所决定,js有两种机制可以实现”破坏“我们对作用域的常规理解,通过eval()和with(). 1. eval()函数接受字符串为参数,并将其中的声明提升到eval()函 ...
- 高德地图添加marker及反地理编码获取POI
项目中集成百度.高德.腾讯地图已是司空见惯的事情,今天我总结了一下项目中用到的高德地图常用的功能: 1.展示高德地图并定位显示定位图标: 2.添加实时大头针: 3.反地理编码获取周围兴趣点 效果如下: ...
- Java:类与对象概念
什么是类? 怎样定义一个类? 什么是对象,类和对象之间是什么关系,怎样创建一个对象? 对象引用和对象在内存中是如何分配的? 什么是类? 1. 类是具有相同的属性和功能的事物的抽象的集合,在面向对象 ...
- 搭建oracle linux虚拟机报错解决
sysctl -P 报错解决办法问题症状修改 linux 内核文件 #vi /etc/sysctl.conf后执行sysctl -P 报错error: "net.bridge.bridge ...
- Hibernate学习(四)———— 双向多对多映射关系
一.小疑问的解答 问题一:到这里,有很多学习者会感到困惑,因为他不知道使用hibernate是不是需要自己去创建表,还是hibernate全自动,如果需要自己创建表,那么主外键这种设置也是自己设置吗? ...