数据访问配置文件设置
你必须为模型的所有安全维定义数据访问配置文件。
如果没有为某个安全维定义配置文件,则被分配了该配置文件的用户可能没有该模型的访问权。如果没有完整定义访问权(例如,为两个安全维中的一个定义),则系统仍然会拒绝用户访问模型。
创建数据访问配置文件后,你可以根据需要将其分配给用户。
数据访问安全的一般规则
数据访问安全是基于以下规则:
默认情况下,除了系统管理员之外,任何其他人都无法访问成员。必须显式授予成员访问权。
可以单独为某位用户分配数据访问权,也可以通过团队成员资格的方式来为用户分配数据访问权。
数据访问权在层次结构中向下流动,从父项到子项。
如果发生冲突,则应用限制最少的数据访问权配置文件。
如果个人数据访问权与团队数据访问权发生冲突,则应用限制最少的设置。
创建数据访问配置文件
转到“管理”页面,然后在“安全”部分下选择“数据访问配置文件”。
在显示的屏幕上,选择“新建”。
输入新数据访问配置文件的名称和说明。
从列表中选择所需模型。
对于每个授权相关维,选择所需的成员并设置访问权限。
转到“用户”或“团队”选项卡,从而将新的数据访问配置文件分配给用户(这些用户已经被分配到当前环境)或团队(已经为团队分配了对应的用户)。
定义对包含子项的成员的访问权
定义对某个安全维的访问权时,如果该安全维包含一个或多个已定义层次结构,则安全性将应用于该成员及其所有子项。例如,如果授予了某个包含 10 个子项的成员的访问权,则具有父成员访问权的用户也将拥有 10 个子项的访问权。
你可以通过“只读”或“写”访问权来限制某个父项的子成员,方法是创建一个单独的数据访问配置文件并分配子访问权“拒绝”。或者,也可以使用与父项相同的数据访问配置文件,但需要为子项创建一个行的新项目。
解决数据访问配置文件冲突
由于你可以按照个人用户或按照团队来定义成员访问权,因此可能存在发生冲突的情况。以下几节介绍了几种可能发生的成员访问权冲突情况以及系统解决冲突时应用的规则。这些情况是基于下面的假设:“实体”维是安全维,并且包含以下层次结构:
层次结构 |
成员 |
|||
H1 |
全球 1 |
销售额 |
亚洲销售额 |
韩国销售额 日本销售额 亚洲网络销售额 |
欧洲销售额 |
意大利销售额 法国销售额 欧洲网络销售额 |
|||
H2 |
全球 2 |
亚洲 |
韩国 |
韩国销售额 |
日本 |
日本销售额 |
|||
亚洲网络 |
亚洲网络销售额 |
|||
欧洲 |
意大利 |
意大利销售额 |
||
法国 |
法国销售额 |
|||
欧洲网上 |
欧洲网络销售额 |
|||
配置文件之间的冲突
数据访问配置文件存在冲突时,始终会应用限制最少的配置文件。本节介绍了配置文件之间存在冲突的三种不同情况。
情况 1:
用户 1 属于团队 1 和团队 2。
有两个数据访问配置文件:配置文件 A 和配置文件 B。
配置文件 A 分配给团队 1,配置文件 B 分配给团队 2。
数据访问配置文件的说明见下表:
数据访问配置文件 |
访问权限 |
维 |
成员 |
配置文件 A |
写 |
实体 |
销售额 |
配置文件 B |
只读 |
实体 |
亚洲销售额 |
在这种情况下,将应用两个两者中限制最少的配置文件,也就是配置文件 A(写)。因此,系统将忽略配置文件 B,并且用户 1 能够将数据发送到“韩国销售额”以及“意大利销售额”。
情况 2:
用户 1 属于团队 1 和团队 2
有两个数据访问配置文件:配置文件 A 和配置文件 B。
配置文件 A 分配给团队 1,配置文件 B 分配给团队 2。
数据访问配置文件的说明见下表:
数据访问配置文件 |
访问权限 |
维 |
成员 |
配置文件 A |
只读 |
实体 |
销售额 |
配置文件 B |
写 |
实体 |
亚洲销售额 |
在这种情况下,将对“亚洲销售额”的子成员应用两者中限制最少的配置文件,也就是配置文件 B(写)。因此,系统将忽略配置文件 A,并且用户 1 能够将数据发送到“韩国销售额”,但不能发送到“意大利销售额”。
情况 3:
用户 1 不属于任何团队。
有两个数据访问配置文件:配置文件 A 和配置文件 B。
这两个配置文件都分配到用户。
数据访问配置文件的说明见下表:
数据访问配置文件 |
访问权限 |
维 |
成员 |
配置文件 A |
拒绝 |
实体 |
亚洲销售额 |
配置文件 B |
只读 |
实体 |
销售额 |
在这种情况下,将应用两个两者中限制最少的配置文件,也就是配置文件 B(只读)。因此,系统将忽略配置文件 A,并且用户 1 能够从“韩国销售额”以及“意大利销售额”中获取数据。
父成员与子成员之间存在冲突
授权在层次结构中始终向下流动,从父项到子项。除非另有说明,否则子成员始终具有其父项的访问权级别。
情况 1:
用户 1 属于团队 1,且配置 A 分配给团队 1。
为配置文件 A 定义两个级别的数据访问配置文件。
配置文件 A 的数据访问配置文件的说明见下表:
数据访问配置文件 |
访问权限 |
维 |
成员 |
配置文件 A |
写 |
实体 |
销售额 |
配置文件 A |
只读 |
实体 |
亚洲销售额 |
在此情况下,“销售额”成员的写访问权向下流动到其成员。为“亚洲销售额”(“销售额”的后代)分配只读访问权中断了这种流动,“亚洲销售额”的访问权向下流动到其后代。因此,用户 1 可以将数据发送到“意大利销售额”,但不能发送到“韩国销售额”。
情况 2:
用户 1 属于团队 1,且配置 A 分配给团队 1。
配置文件 A 具有两个级别的数据访问配置文件。
配置文件 A 的数据访问配置文件的说明见下表:
数据访问配置文件 |
访问权限 |
维 |
成员 |
配置文件 A |
只读 |
实体 |
销售额 |
配置文件 A |
写 |
实体 |
亚洲销售额 |
在此情况下,“销售额”成员的只读访问权向下流动到其成员。为“亚洲销售额”(“销售额”的后代)分配写访问权中断了这种流动,“亚洲销售额”的访问权向下流动到其后代。因此,用户 1 可以将数据发送到“韩国销售额”,但不能发送到“意大利销售额”。
同一成员属于不同层次结构时发生的冲突
如果一个成员属于若干不同层次结构,并且成员访问权之间存在冲突,则会应用限制最少的访问权。
情况:配置文件 A 和配置文件 B 分配到用户 1。数据访问配置文件的说明见下表:
数据访问配置文件 |
访问权限 |
维 |
成员 |
配置文件 A |
只读 |
实体 |
全球 1 |
配置文件 B |
写 |
实体 |
全球 2 |
在这种情况下,配置文件 B 确定用户 1 的访问权。因此,用户 1 能够将数据发送到“韩国销售额”,即使配置文件 A 拒绝用户 1 对“韩国销售额”的写访问权(在“全球 1”层次结构中)。
基于数据访问配置文件的属性
创建数据访问配置文件时,你可以根据属性来分配不同级别的访问权。以下所述的示例是基于以下层次结构:
ID |
区域 |
国家 |
货币 |
|---|---|---|---|
实体 0 |
欧洲 |
德国 |
欧洲 |
— 实体 1 |
欧洲 |
德国 |
欧洲 |
— — 实体 101 |
欧洲 |
英国 |
英镑 |
— — 实体 102 |
欧洲 |
法国 |
欧洲 |
— — 实体 103 |
欧洲 |
德国 |
欧洲 |
- 实体 2 |
北美 |
美国 |
美元 |
— — 实体 201 |
北美 |
美国 |
美元 |
— — 实体 202 |
北美 |
加拿大 |
加拿大元 |
— — 实体 203 |
北美 |
墨西哥 |
墨西哥比索 |
示例 - 一个数据访问配置文件
数据访问配置文件 DAP1 定义如下:
规则编号 |
成员 |
访问权限 |
注释 |
结果 |
|---|---|---|---|---|
1 |
实体 1 |
读 |
实体 1 及其所有后代的读访问权 |
实体 1、实体 101、实体 102 和实体 103 的读访问权 |
2 |
国家 = 德国,货币 = 欧元 |
写 |
对于“国家”为德国且货币为“欧元”的成员具有写访问权 |
对于实体 0、实体 1 和实体 103 具有写访问权 |
3 |
实体 103 |
拒绝 |
无法访问实体 103 |
无法访问实体 103 |
如果数据访问配置文件中存在冲突,则优先顺序如下(从最高到最低):
对成员精确定义的访问权(一定要是父成员的基础成员)。
属性定义的访问权(将不会继承)。
示例如果定义的属性为 Currency=Euro: Read 和 Country=France: Write,则实体 02 可写入。
继承自父项的访问权。
对“所有成员”定义的访问权(正如在层次结构顶部的虚拟父项中所定义)。
下表中显示了结果:
ID |
访问权限 |
注释 |
|---|---|---|
实体 0 |
写 |
由规则编号 2 定义。 |
实体 1 |
读 |
规则编号 1 定义的读访问权;规则编号 2 定义的写访问权。应用规则编号 1,因为此规则直接应用于实体 1。 |
实体 101 |
读 |
由规则编号 1 定义。 |
实体 102 |
读 |
由规则编号 1 定义。 |
实体 103 |
拒绝 |
规则编号 1 定义的读访问权;规则编号 2 定义的写访问权;规则编号 3 定义的拒绝访问权。应用规则编号 3,因为此规则直接应用于实体 103。 |
实体 2 |
拒绝 |
如果不存在规则,默认情况下会拒绝访问。 |
实体 201 |
拒绝 |
如果不存在规则,默认情况下会拒绝访问。 |
实体 202 |
拒绝 |
如果不存在规则,默认情况下会拒绝访问。 |
实体 203 |
拒绝 |
如果不存在规则,默认情况下会拒绝访问。 |
示例 - 两个数据访问配置文件
数据访问配置文件 DAP2 定义如下:
规则编号 |
成员 |
访问权限 |
注释 |
结果 |
|---|---|---|---|---|
1 |
所有成员 |
读 |
所有成员的读访问权 |
所有成员的读访问权 |
2 |
实体 1 |
拒绝 |
无法访问实体 1 及其后代 |
无法访问实体 1、实体 101、实体 102 和实体 103 |
3 |
货币 = 美元 |
写 |
对货币为“美元”的成员具有写访问权 |
对实体 2 和实体 201 具有写访问权 |
下表中显示了数据访问配置文件的结果显示:
ID |
访问权限 |
注释 |
|---|---|---|
实体 0 |
读 |
规则编号 1 中定义。 |
实体 1 |
拒绝 |
规则编号 1 定义的读访问权;规则编号 2 中定义的拒绝访问权。应用规则编号 2,因为此规则直接应用于实体 1 及其后代。 |
实体 101 |
拒绝 |
规则编号 1 定义的读访问权;规则编号 2 中定义的拒绝访问权。应用规则编号 2,因为此规则直接应用于实体 1 及其后代。 |
实体 102 |
拒绝 |
规则编号 1 定义的读访问权;规则编号 2 中定义的拒绝访问权。应用规则编号 2,因为此规则直接应用于实体 1 及其后代。 |
实体 103 |
拒绝 |
规则编号 1 定义的读访问权;规则编号 2 中定义的拒绝访问权。应用规则编号 2,因为此规则直接应用于实体 1 及其后代。 |
实体 2 |
写 |
规则编号 1 定义的读访问权;规则编号 3 中定义的写访问权。规则编号 3 ,因为它会直接应用于实体 2 的属性。 |
实体 201 |
写 |
规则编号 1 定义的读访问权;规则编号 3 中定义的写访问权。规则编号 3 ,因为它会直接应用于实体 201 的属性。 |
实体 202 |
读 |
由规则编号 1 定义。 |
实体 203 |
读 |
由规则编号 1 定义。 |
如为某个用户或团队分配了多个数据访问配置文件,则将应用所有配置文件中限制最少的规则的组合。因此,如果为一个用户同时分配了 DAP1 和 DAP2,则该用户将具有以下权限:
ID |
DAP1 授予的访问权 |
DAP2 授予的访问权 |
结果 |
|---|---|---|---|
实体 0 |
写 |
读 |
写访问权 |
实体 1 |
读 |
拒绝 |
读访问权 |
实体 101 |
读 |
拒绝 |
读访问权 |
实体 102 |
读 |
拒绝 |
读访问权 |
实体 103 |
拒绝 |
拒绝 |
拒绝访问 |
实体 2 |
拒绝 |
写 |
写访问权 |
实体 201 |
拒绝 |
写 |
写访问权 |
实体 202 |
拒绝 |
读 |
读访问权 |
实体 203 |
拒绝 |
读 |
读访问权 |