学习目标
完成本单元后,您将能够:
- 列出四种方法来控制对记录的访问。
- 描述使用四个记录级别安全控制中的每一个的情况。
- 解释不同的记录控件如何相互作用。
- 设置组织范围的共享默认设置来控制对记录的访问。
记录级安全
记录访问决定了用户可以在其个人资料中访问的每个对象中查看和编辑哪些记录。首先问自己这些问题:
- 您的用户是否应该开放访问每个记录,或只是一个子集?
- 如果它是一个子集,什么规则应该确定用户是否可以访问它们?
假设您创建一个名为Recruiter的新配置文件,为招聘者提供他们所需的对象级权限。您限制删除招聘相关对象的权力,所以招聘者永远不能删除这些对象。但是,授予招聘人员创建,阅读或编辑招聘对象的权限并不一定意味着招聘人员可以阅读或编辑招聘对象中的每个记录。这是两个重要概念的结果:
- 记录上的权限总是根据对象级别,字段级别和记录级别权限的组合进行评估。
- 当对象级权限与记录级权限相冲突时,限制最多的设置将胜出。
这意味着,即使您授予配置文件创建,读取和编辑招聘对象的权限,但如果个人招聘记录的记录级别权限更具限制性,这些规则也可以定义招聘人员可以访问的内容。
您可以通过四种方式控制记录级访问。它们按照访问次序的顺序排列。您使用组织范围的默认设置将数据锁定到最严格的级别,然后根据需要使用其他记录级别的安全工具向选定的用户授予访问权限。
- Org-wide defaults 指定用户对对方记录的访问的默认级别。
- Role hierarchies 确保管理者可以访问与其下属相同的记录。层次结构中的每个角色都表示用户或用户组需要的数据访问级别。
- Sharing rules 是特定组用户的组织范围默认设置的自动例外情况,可以让他们访问他们不拥有或通常无法看到的记录。
- Manual sharing 允许记录所有者给予可能无法以其他方式访问记录的用户的读取和编辑权限。
任何类型数据的可见性和访问都是基于这些关键原则,通过上述安全控制的相互作用来确定的。
- 用户对任何对象的基准权限由其配置文件决定。
- 如果用户有任何权限集已分配,这些还设置与配置文件一起的基准权限。
- 访问用户不拥有的记录首先由组织范围内的缺省设置。
- 如果组织范围的默认值小于公共读/写,则可以使用角色层次结构为特定角色打开访问备份
- 您可以使用共享规则将访问扩展到其他用户组。
- 每个记录所有者可以通过使用记录上的分享按钮手动与其他用户共享单个记录。
您已经看到如何使用配置文件和权限集配置对象级别和字段级别的访问权限。现在我们来看看各种记录级安全控制的细节。
组织范围的共享
组织范围内的默认值指定最受限用户应具有的基准访问级别。使用组织范围的默认设置来锁定数据,然后使用其他记录级别的安全和共享工具(角色层次结构,共享规则和手动共享)将数据打开到需要的用户。
对象权限决定对象中所有记录的基准访问级别。组织范围内的默认值修改用户不拥有的记录的权限。组织范围的共享设置可以为每种类型的对象分别设置。
组织范围内的默认值永远不能授予用户比通过其对象权限更多的访问权限。
要确定您的应用程序需要的组织范围的默认值,请问自己有关每个对象的这些问题:
- 谁是这个对象最受限制的用户?
- 是否曾经有过这个对象的实例,这个用户不应该被允许看到?
- 是否曾经有过这个对象的实例,这个用户不应该被允许编辑?
根据您的答案,您可以将该对象的共享模型设置为其中一个设置。
- Private
- 只有记录所有者和层次结构中的角色以上的用户才能查看,编辑和报告这些记录。
- Public Read Only
-
所有用户都可以查看和报告记录,但是只有所有者和层次结构中的角色以上的用户才可以对其进行编辑。
- Public Read/Write
- 所有用户都可以查看,编辑和报告所有记录。
- Controlled by Parent
- 用户可以查看,编辑或删除记录,如果她可以在它所属的记录上执行相同的操作。
当对象的组织范围共享设置为“公共”或“公共只读”时,管理员可以通过设置角色层次结构或定义共享规则来授予用户对记录的其他访问权限。共享规则只能用于授予额外的访问权限。它们不能用于限制访问超出最初由组织范围共享默认值指定的记录。
作为一个例子,让我们来回顾一下Recruiting应用程序中Position对象的上述问题列表。
- 谁是这个对象最受限制的用户?
- 标准员工简介的成员。所有他们被允许做的是查看一个位置。
- 是否曾经有过这个对象的实例,这个用户不应该被允许看到?
- 不可以。尽管最低和最高薪酬字段的价值对于标准雇员是隐藏的,他们仍然可以查看所有的头寸记录。
- 是否曾经有过这个对象的实例,这个用户不应该被允许编辑?
- 是。标准员工不允许编辑任何职位记录。
由于我们对第三个问题回答“是”,所以Position对象的共享模型应该设置为Public Read Only。通过与其他招聘对象重复相同的练习,您可以轻松地找出适合他们的组织范围的默认设置。标准员工简介是每个对象最受限制的用户,并且将会有候选人,工作申请和特定员工无法查看的审核记录。因此,候选人,工作申请和审核对象的共享模式都应设置为“私人”。
设置您的组织范围共享默认值
- 在安装程序中,使用快速查找框来查找共享设置。
- 单击组织范围默认区域中的编辑。
- 对于每个对象,请选择您想给予每个人的默认访问权限。
- 要使用您的层次结构禁用自动访问,请取消选择“使用层次结构授予访问权限”,以获得没有“受父级控制”的默认访问权限的任何自定义对象。
即使取消选择“使用层次结构访问”,某些用户(如具有“查看全部”和“修改全部”对象权限以及“查看所有数据”和“修改所有数据”系统权限的用户)仍然可以访问记录自己的。
告诉我更多…
Apex托管共享允许开发人员以编程方式共享与自定义对象关联的记录。当您对任何自定义对象使用Apex托管共享时,只有具有“修改所有数据”权限的用户才能添加或更改该自定义对象记录上的共享,并且即使记录所有者发生更改,共享访问也保持不变。有关更多信息,请参阅Apex共享。