使用区域权限管理安全性
可以在数据加载脚本中使用区域权限来处理安全性。这样,可以使用单个文件来保存多个用户或用户组的数据。Qlik Sense 使用区域权限中的信息进行身份验证和授权并动态减少数据,以便用户仅查看自己的数据。
安全性由文件自己建立在其内部,这意味着下载的文件也在一定程度上受到保护。但是,如果安全性要求高,那么应避免文件下载和脱机使用,并且文件仅应由 Qlik Sense 服务器发布。由于所有数据都保存在一个文件中,因此这个文件的大小可能会非常大。
必须先发布应用程序,然后才能应用区域权限控件。重新加载应用程序将不会应用任何新的或更改的区域权限脚本。
为避免暴露受限的数据,请在发布应用程序前先移除所有具有区域权限设置的附加文件。
发布应用程序时,附加文件会包括在内。如果复制发布的应用程序,附加文件则会包括在副本中。但是,如果对附加数据文件应用了区域权限限制,则在复制文件时不会保留区域权限设置,因此,复制应用程序的用户将看不到附加文件中的所有数据。
如果您因为值可能会通过颜色配置暴露而使用区域权限或处理敏感数据,则不得将颜色分配至主维度值。
脚本中的区域
通过一个或数个安全表来管理访问控制,其加载方式与 Qlik Sense 常规加载数据相同。也可将这些表格存储在常规数据库中。在存取区域内给定了管理安全性表格的脚本语句,它在脚本内由语句 section access 发起。
如果存取区域被定义在脚本内,则加载应用程序数据的脚本部分应被放置于其他区域,由语句 Section Application 发起。
Example:
Section access 系统字段
访问级别被指派给一个或数个表格中的用户,并加载在区域权限内。这些表格可以包含数个不同的用户指定系统字段,通常包括 USERID,该字段定义访问级别 ACCESS。所有区域权限系统字段将被用于身份验证或授权。以下描述的是全套区域权限系统字段。
ACCESS
定义相应用户拥有哪些访问权限。
存取 Qlik Sense 应用程序可以为指定用户或用户组授权。在安全性表格内,用户可以指派到访问级别 ADMIN 或 USER。如果未指派有效访问级别,则用户无法打开应用程序。
具有 ADMIN 权限的人可访问应用程序中的所有数据。具有 USER 权限的人只能访问安全性表格中定义的数据。
如果在模板应用程序中的 On-demand 应用程序生成 (ODAG) 场景中使用了区域权限,则必须将 INTERNAL\SA_API 用户作为区域权限表格中的 ADMIN 纳入。例如:
USERID
包含与 Qlik Sense 用户名对应的字符串。Qlik Sense 将从代理获取登录信息并将之与此字段中的值相比较。
GROUP
包含与 Qlik Sense 中的组对应的字符串。Qlik Sense 将针对此组解析由代理提供的用户。
OMIT
包含将为此指定用户省略的字段名称。通配符可能会被使用,并且字段可能为空。一个简单做法就是使用子字段。
Qlik Sense 将代理提供的用户与 UserID 进行比较并对照表格中的组来解析用户。如果用户属于允许访问的组或者用户匹配,则将获得对应用程序的访问权。
由于相同内部逻辑是 Qlik Sense 的特点也用于存取区域中,安全性字段可能放置于不同表格中。区域权限中 LOAD 或 SELECT 语句内列出的所有字段必须采用大写。使用 Upper 函数将数据库内任何包含小写字母的字段名全部转换为大写,这样才能被 LOAD 或 SELECT 语句读取。
有关更多信息,请参阅Upper - 脚本和图表函数。
通配符 * 被解释为字段中所有(列出的)值,即表格中的值列表。如果用于脚本访问区域加载的表格中的系统字段之一(USERID 或 GROUP),则星号将被视为此字段的所有(也包括未列出的)可能值。
Example:
在此示例中,仅财务组中的用户可以打开文档。
访问 | 组 |
---|---|
用户 | 财务 |
动态数据减少
应用程序中的部分数据可以对基于区域权限登录的用户隐藏,Qlik Sense 以此支持动态数据减少:
- 可以通过使用系统字段 OMIT 来隐藏字段(列)。
- 通过将区域权限数据与真实数据进行链接来隐藏记录(行):通过在区域权限和区域应用程序中选择一个或多个具有公共名称的字段来控制要显示/排除的值的选择。用户登录后,Qlik Sense 尝试将区域权限中字段的选择与区域应用程序中的任意字段进行匹配,并使用完全相同的字段名(字段名必须大写)。做好选择后,Qlik Sense 将永久隐藏用户选择之外的所有数据。
Example: 基于用户 ID 的数据减少
字段 REDUCTION(大写)现在同时存在于区域权限和区域应用程序中(所有字段值也为大写)。通常这两个字段会完全不同并分隔开,但是如果使用区域权限,则这些字段已链接并减少向用户显示的记录数。
区域权限中的字段 OMIT 定义应当为用户隐藏的字段。
结果将为:
- 用户 ADMIN 可以查看所有字段,且只有当 REDUCTION 为 1、2 或 3 时其他用户才可以在此示例中查看这些记录。
- 用户 A 可以查看所有字段,但仅限和 REDUCTION=1 相关的那些记录。
- 用户 B 可以查看 NUM 之外的所有字段,可查看的记录仅限和 REDUCTION=2 相关的那些记录。
- 用户 C 可以查看 ALPHA 之外的所有字段,可查看的记录仅限和 REDUCTION=3 相关的那些记录。
Example: 基于用户组的数据减少
结果将为:
- 允许属于 ADMIN 组的用户查看所有数据和所有字段。
- 允许属于 A 组的用户跨所有字段查看和 REDUCTION=1 相关的数据。
- 允许属于 B 组的用户查看和 REDUCTION=2 相关但未在 NUM 字段中的数据
- 允许属于 C 组的用户查看和 REDUCTION=3 相关但未在 ALPHA 字段中的数据
- 允许属于 GROUP1 组的用户跨所有字段查看和 REDUCTION=3 相关的数据
-
用户 INTERNAL\SA_SCHEDULER 不属于任何组,但是可查看所有字段中的所有数据。
信息注释此行中的通配符 * 仅指区域权限表格内的所有值。如果在区域应用程序中存在区域权限中 REDUCTION 字段内不可用的值,则会将它们去除。
继承访问限制
二进制加载会导致新 Qlik Sense 应用程序受到继承访问限制。