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