salesforce里对于权限的控制非常详尽,能够根据设定,从各个方面对数据进行控制。
1.对于Object本身的控制,这个控制是通过Profiles,Permission Sets,来做,可以控制用户是否可以对Object进行[读,写,修改,删除],以及控制Object里的每个项目的[非可见,只读,可写]。
2.对于Object里的Record来讲,是通过以下几种设定方法来控制。
a.Profiles
可以对一个Object里的所有记录进行View all,以及Modify all设定,一旦设定,便对这个Object里的所有数据具有了查看,或者修改的权限。
b.Permission Sets
这个设定其实是对Profiles设定的一个补充,设定的方法一样,但是可以只把设定赋予单个用户。
c.Organization-Wide Defaults
这个设定是对于组织内所有用户的一个普遍设定,由于这个设定比较泛广,所以设定需要谨慎,要按照对组织内所有用户最严格的那个进行设定,比如,该Object只要有一个人不允许看,就必须设为Private。
d.Role Hierarchy
每个组织都可以设定一个Role Tree,形成一个继承关系,那么赋予一个role的用户,可以看到,这个role一下,所有role所赋予用户可看到和可编辑的数据。
e.Sharing Rules
1.把owner是某个group或者role的recode赋予,某个group或role的用户读,或者读写的权限。
2.把符合某些条件的recode赋予,某个group或role的用户读,或者读写的权限。
3.把单独一个recode赋予,某个group或role的用户,或者一个单独的用户,读,或者读写的权限。
另外,这里面的权限控制也不是完全独立的,比如对于Object的权限控制,需要一下设定
查看 | 创建 | 编辑 | 删除 | 查看所有 | 修改所有 | |
查看 | - | X | X | X | X | X |
创建 | O | - | X | X | X | X |
编辑 | O | X | - | X | X | X |
删除 | O | X | O | - | X | X |
查看所有 | O | X | X | X | - | X |
修改所有 | O | X | O | O | O | - |
另外对于Profile中Field-Level Security的设定,当一个Field是必须项的时候,这个Field在所有的profile里都是一个可读写的,不允许修改。
对于一条记录,是否有可读(可写也是一样,只不过每一步检查的是写权限)权限,主要通过以下途径。
1.所属Profile是否设定Object可读
否 是
不可读 2.Owner是不是自己
是 否
可读 3.是否设定了View All
是 否
可读 4.Organization-Wide Defaults中是否可读
是 否
可读 5.是否属于Role Hierarchy
是 否
可读 6.是否属于Sharing Rules
是 否
可读 不可读