如何确定对记录的访问权限
有多种方法可以访问 Dataverse 中的特定记录。 为了能够对表执行特定操作(创建、读取、写入、删除、追加、追加到、分配、共享),需要进行两项主要检查:特权检查和访问权限检查。
特权检查
权限检查是需要通过的第一个障碍,以便对表的记录执行特定操作。 该特权检查验证用户是否具有该表所需的特权。 对于每个表,无论是现成的还是自定义的,都存在不同的特权来提供与该类型的记录之间的交互功能。
例如,出于“客户”,特权为:
特权 | 描述 |
---|---|
创造 | 创建新记录所需的特权。 可创建的记录取决于您的安全角色中所定义权限的访问级别。 |
读 | 打开记录以查看内容所需的特权。 可读记录取决于您的安全角色中所定义权限的访问级别。 |
写 | 更改记录所需的特权。 可更改的记录取决于您的安全角色中所定义权限的访问级别。 |
删除 | 永久移除记录所需的特权。 可删除的记录取决于您的安全角色中所定义权限的访问级别。 |
附加 | 将当前记录与其他记录关联所需的特权。 例如,如果用户对某个注释拥有“追加”权限,即可将该注释附加到商机。 可追加的记录取决于您的安全角色中所定义权限的访问级别。 对于多对多关系,您必须具有关联或解除关联的两个表的追加特权。 |
追加到 | 将某条记录与当前记录关联所需的特权。 例如,如果用户对商机具有“追加到”权限,则可以向商机添加注释。 可追加到的记录取决于您的安全角色中所定义权限的访问级别。 |
分配 | 向其他用户授予记录的所有权所需的特权。 可分派的记录取决于您的安全角色中所定义权限的访问级别。 |
共享 | 向其他用户授予记录的访问权限同时保留自己的访问权限所需的特权。 可共享的记录取决于您的安全角色中所定义权限的访问级别。 |
若要对某个记录执行操作,用户需要具有直接通过角色分配的必需特权,或者需要是为其中一个安全角色分配了特权的团队的成员。 否则,用户将遇到访问拒绝错误,说明其没有执行操作所需特权。
例如,如果用户要创建一个客户记录,则用户必须通过为其或为其所属团队分配的安全角色获得“创建”特权。
备注
在创建或编辑安全角色时,将为该角色授予具有给定访问权限级别的特权。 访问权限级别不纳入特权检查,而是在通过了特权检查之后的访问权限检查中进行。
访问权限检查
如果通过了特权检查,将进行访问权限检查。 访问权限检查验证用户是否有执行要执行的操作所需权限。
用户可通过四种不同方法获得在特定记录中执行操作的访问权限。 它们是:
- 所有权
- 角色访问权限
- 共享访问权限
- 层次结构访问权限
重要提示
访问权限检查中将检查所有这些,因此用户可能有权以多种方式对记录执行所需操作。
所有权
用户可能有特定记录的访问权限是因为其负责涉及的记录,或者属于负责记录的团队。 在这两种情况下,无论记录属于哪个业务部门,任何访问权限级别都足以拥有访问权限。 由于已经通过了特权检查,这意味着用户拥有执行操作的相应访问权限。
备注
如果用户属于负责记录的团队,则该用户也拥有该记录的访问权限。
角色访问权限
用户可以因为拥有的安全角色而拥有对记录执行某个操作的访问权限。 在此情况下,将考虑角色拥有的特权的访问权限级别。 有四种主要方案与所有权案例中涵盖的不同非“用户”访问权限级别对应。
记录属于用户或用户所属的团队 | 在这种情况下,用户必须有或属于一个团队,该团队具有至少分配了用户级别访问特权的角色。 *请参阅 下面的注释 。 |
记录与用户属于同一业务单位 | 在这种情况下,用户必须有或属于一个团队,该团队具有至少分配了业务部门级别访问特权的角色。 |
该记录与用户所属的团队属于同一业务部门 | 在这种情况下,用户必须有或属于一个团队,该团队具有至少分配了业务部门级别访问特权的角色。 |
该记录属于某个业务部门,该业务部门是用户业务部门的后代 | 在这种情况下,用户必须有或属于一个团队,该团队具有至少分配了上:下级业务部门访问特权的角色。 |
该记录属于某个业务部门,该业务部门是用户所在业务部门的后代,或者是用户所属团队业务部门的后代 | 在这种情况下,用户必须有或属于一个团队,该团队具有至少分配了上:下级业务部门访问特权的角色。 |
该记录属于不是用户业务部门后代的业务部门 | 在这种情况下,用户必须有或属于一个团队,该团队具有分配有组织级别访问特权的角色。 |
备注
*对于分配给具有基本级访问权限用户特权的团队的角色,角色的继承配置也会生效。 如果团队将成员特权继承设置为仅团队特权,用户只能对该团队负责的记录使用该特权。 有关详细信息,请转到团队成员的特权继承。
共享访问权限
另外一种不通过分配允许此访问权限的显式角色而获取记录的访问权限的方法是通过共享访问权限。 共享访问权限是在具有相应共享权限的用户与用户、团队或组织共享记录时获得的。 用户可通过五种方法获得记录的共享访问权限。
记录已直接与用户共享 | 如果将记录与用户共享以执行特定操作,并且该用户通过了特权检查,则其将拥有执行该操作的访问权限。 |
已直接与用户共享相关记录 | 当记录 A 与记录 B 相关时,会发生以下情形。如果用户具有对记录 A 执行特定操作的共享访问权限,并且该用户通过了特权检查,则该用户继承了对记录 B 执行同一个操作的访问权限。 |
记录已与用户所属的团队共享 | 如果将记录与团队共享以执行一组操作,并且该团队通过了特权检查,则属于该团队的用户将拥有执行这些操作的访问权限。 |
已与用户所属的团队共享相关记录 | 当记录 A 与记录 B 相关时,会发生以下情形。如果将记录 A 与团队共享以执行一组操作,并且记录 A 与记录 B 相关,并且该团队通过了特权检查,则属于该团队的用户将具有在记录 A 和记录 B 中执行这些操作的访问权限。 |
记录已与整个组织共享 | 如果将记录与组织共享以执行一组操作,并且该组织通过了特权检查,则属于该组织的所有用户都可以执行这些操作。 |
层次结构访问权限
只有在该组织中针对该表中启用了层次结构安全性管理,并且用户是经理时,才会发生层次结构访问。
在此情况下,如果满足以下两个条件,用户将具有该记录的访问权限:
- 直接或通过具有访问权限级别“业务部门”或“父:子业务部门”的团队为经理分配了安全角色。
- 以及下面的任何一项:
- 记录由直接下属负责。
- 直接下属是负责人团队的成员。
- 为了执行必需操作与直接下属共享了记录。
- 为了执行必需操作与直接下属所属团队共享了记录。
检查记录的访问权限
对于在 Web 客户端中显示的每条记录,用户可以通过命令栏中的检查访问权限选项查看是如何为其授予这些记录的访问权限的。 用户还可以查看有权访问记录的其他用户及其各自的访问级别。
可配置两个环境数据库设置来使用具有访问权限的人员功能。 安装 OrganizationSettingsEditor 工具 并将以下内容设置为 true:
- IsAccessCheckerAllUsersEnabled:这允许管理员查看谁有权访问该行。
- IsAccessCheckerNonAdminAllUsersEnabled:这允许管理员、记录的所有者和有权访问该行的用户查看谁具有访问权限。