在api调用时, sharing也是起作用的。
权限的层级:
org层: password policy, login hours, login location
Object
Field
Record: 又分 org-wide default, role hierarchy, sharing rule, manual sharing
Audit 应该经常检查可能的权限问题
1. 数据createdby, lastmodifiedBy
2. login history
3. Field history: 所有custom obj可以。但有些standard obj不可以。
4. Audit trail
Org级别的权限管理
1. 管理user
创建user / Deactivate user 如果user在某个hirararchy字段中使用而无法deactivate可以暂时先Freeze user然后解决hirarchy的问题。
password policy: 多久过期,密码复杂程度
密码过期对于“Password Never Expires”的user不适用。
可以reset单个user的password
登录尝试次数以及锁定时间。
Trusted IP 在Newwork Access里设置
不在trusted IP里时,只需输入verification code
在Profile上设置login IP ranges, 在这个范围以外的,不能login 【与trusted IP相比这个更严厉】。
Login hour: 也是在profile上定义
如果某天不能访问,只需设置当天的login hour的start与end相同即可。
如果用户的login hour已经到了end时间,user仍未退出,此时他可view page但不能继续任何action。
Object级别:
profile: standard / custom. standard的object-level permission不允许修改,如果需要可以clone一个profile.
permission set : 一般用于给某个obj/app加权限,或者给某个临时权限,或给某个特定字段权限。
User Management Settings里可以设置Enhanced Profile User Interface.
Field level security:
与layout不同,它控制的是整个field级别的权限,无论通过何种方式访问数据。
在定义delete权限时, 尽管不允许delete但是在级联delete情况下仍能delete.
Org wide default 控制的是系统中所有当前user不是owner的records的权限。
private
public readonly
public read/write
Controlled by parent
对应master-detail关系中的detail object, 它不能设置org-wide default.
确定sharing的灵魂三问:
1. 谁是当前obj权限最小的用户
1. 它是否对于某些数据应该不可见 - yes 则private
2. 它是否对于某些数据应该不可改 - yes 则public readonly No则 public read/write
对于private / public readonly 的情况, 可以设置role hierarchy 或sharing rule
Role hierarchy默认是勾选的,取消勾选后则当前user的上级不被share. (view all / modify all除外)
apex sharing的特点:
1.只有"Modify all data"的user可以添加/修改这个apex share
2. record owner被修改不影响已有的apex share