使用区域权限管理安全性

可以在数据加载脚本中使用区域权限来处理安全性。这样,可以使用单个文件来保存多个用户或用户组的数据。Qlik Sense 使用区域权限中的信息进行身份验证和授权并动态减少数据,以便用户仅查看自己的数据。

备注: 用户组在 Kubernetes 中不受支持。

安全性由文件自己建立在其内部,这意味着下载的文件也在一定程度上受到保护。但是,如果安全性要求高,那么应避免文件下载和脱机使用,并且文件仅应由 Qlik Sense 服务器发布。由于所有数据都保存在一个文件中,因此这个文件的大小可能会非常大。

警告:

为避免暴露受限的数据,请在发布应用程序前先移除所有具有区域权限设置的附加文件。

发布应用程序时,附加文件会包括在内。如果复制发布的应用程序,附加文件则会包括在副本中。但是,如果对附加数据文件应用了区域权限限制,则在复制文件时不会保留区域权限设置,因此,复制应用程序的用户将看不到附加文件中的所有数据。

警告: 快照根据拍摄快照的用户的访问权限显示数据,然后可在故事中共享快照。但是,如果用户从故事回到可视化以查看应用程序中的实时数据,则会受到自身访问权限的限制。
警告:

如果您因为值可能会暴露而使用区域权限或处理敏感数据,则不得将颜色分配至主维度值。

脚本中的区域

通过一个或数个安全表来管理访问控制,其加载方式与 Qlik Sense 常规加载数据相同。也可将这些表格存储在常规数据库中。在存取区域内给定了管理安全性表格的脚本语句,它在脚本内由语句 section access 发起。

如果存取区域被定义在脚本内,则加载应用程序数据的脚本部分应被放置于其他区域,由语句 Section Application 发起。

Example:  

Section Access;
LOAD * inline
[ACCESS,USERID
USER,U ];
Section Application;
LOAD... ... from... ...

区域权限系统字段

访问级别被指派给一个或数个表格中的用户,并加载在区域权限内。这些表格可以包含数个不同的用户指定系统字段,通常包括 USERID,该字段定义访问级别 ACCESS。所有区域权限系统字段将被用于身份验证或授权。以下描述的是全套区域权限系统字段。

ACCESS

定义相应用户拥有哪些访问权限。

存取 Qlik Sense 应用程序可以为指定用户或用户组授权。在安全性表格内,用户可以指派到访问级别 ADMINUSER。如果未指派有效访问级别,则用户无法打开应用程序。

具有 ADMIN 权限的人可访问应用程序中的所有数据。具有 USER 权限的人只能访问安全性表格中定义的数据。

USERID

包含与 Qlik Sense 用户名对应的字符串。Qlik Sense 将从代理获取登录信息并将之与此字段中的值相比较。

GROUP

包含与 Qlik Sense 中的组对应的字符串。Qlik Sense 将针对此组解析由代理提供的用户。

备注: 当您使用组来精简数据以及需要 Qlik Management Console 时,仍然需要 INTERNAL\SA_SCHEDULER 帐户用户来实现 任务中脚本的加载。

OMIT

包含将为此指定用户省略的字段名称。通配符可能会被使用,并且字段可能为空。一个简单做法就是使用子字段。

备注: 我们建议您不要在关键字段上应用 OMIT。省略的关键字段在数据模型查看器中可见,但是内容不可用,否则会让用户混淆。此外,在可视化中使用的字段上应用 OMIT 可导致可视化对没有被省略字段的用户权限的用户不完整。

Qlik Sense 将代理提供的用户与 UserID 进行比较并对照表格中的组来解析用户。如果用户属于允许访问的组或者用户匹配,则将获得对应用程序的访问权。

备注:

如果自己设置区域权限锁定了应用程序,则可打开没有数据的应用程序,并在数据加载脚本中编辑访问区域。此操作要求您有编辑和加载数据加载脚本的访问权。

有关更多信息,请参阅打开应用程序但不加载数据

由于相同内部逻辑是 Qlik Sense 的特点也用于存取区域中,安全性字段可能放置于不同表格中。区域权限中 LOADSELECT 语句内列出的所有字段必须采用大写。使用 Upper 函数将数据库内任何包含小写字母的字段名全部转换为大写,这样才能被 LOADSELECT 语句读取。

有关更多信息,请参阅Upper - 脚本和图表函数

通配符 * 被解释为字段中所有(列出的)值,即表格中的值列表。如果用于脚本访问区域加载的表格中的系统字段之一(USERID 或 GROUP),则星号将被视为此字段的所有(也包括未列出的)可能值。

备注: 当从 QVD 文件加载数据时,使用上限函数将减慢加载速度。
备注: 如果已启用了区域权限,那么无法使用此处列出的区域权限系统字段名称作为您的数据模型中的字段名称。

Example:

在此示例中,仅财务组中的用户可以打开文档。

访问文档
访问
用户 财务

动态数据减少

应用程序中的部分数据可以对基于区域权限登录的用户隐藏,Qlik Sense 以此支持动态数据减少:

  • 可以通过使用系统字段 OMIT 来隐藏字段(列)。
  • 通过将区域权限数据与真实数据进行链接来隐藏记录(行):通过在区域权限和区域应用程序中选择一个或多个具有公共名称的字段来控制要显示/排除的值的选择。用户登录后,Qlik Sense 尝试将区域权限中字段的选择与区域应用程序中的任意字段进行匹配,并使用完全相同的字段名(字段名必须大写)。做好选择后,Qlik Sense 将永久隐藏用户选择之外的所有数据。
备注: 用于上述转换中的所有字段名和这些字段中所有字段值都必须大写,因为所有字段名和字段值在 section access 内会默认转换为大写。
备注: 如果您希望在 Qlik Management Console 任务中实现脚本的加载,则需要成为具有 ADMIN 访问权限的 INTERNAL\SA_SCHEDULER 帐户用户。

Example: 基于用户 ID 的数据减少

section access;
LOAD * inline [
ACCESS, USERID,REDUCTION, OMIT
USER, AD_DOMAIN\ADMIN,*,
USER, AD_DOMAIN\A,1,
USER, AD_DOMAIN\B, 2,NUM
USER, AD_DOMAIN\C, 3, ALPHA
ADMIN, INTERNAL\SA_SCHEDULER,*,
];
section application;
T1:
LOAD *,
NUM AS REDUCTION;
LOAD
Chr( RecNo()+ord('A')-1) AS ALPHA,
RecNo() AS NUM
AUTOGENERATE 3;

字段 REDUCTION(大写)现在同时存在于区域权限和区域应用程序中(所有字段值也为大写)。通常这两个字段会完全不同并分隔开,但是如果使用区域权限,则这些字段已链接并减少向用户显示的记录数。

区域权限中的字段 OMIT 定义应当为用户隐藏的字段。

结果将为:

  • 用户 ADMIN 可以查看所有字段,且只有当 REDUCTION 为 1、2 或 3 时其他用户才可以在此示例中查看这些记录。
  • 用户 A 可以查看所有字段,但仅限和 REDUCTION=1 相关的那些记录。
  • 用户 B 可以查看 NUM 之外的所有字段,可查看的记录仅限和 REDUCTION=2 相关的那些记录。
  • 用户 C 可以查看 ALPHA 之外的所有字段,可查看的记录仅限和 REDUCTION=3 相关的那些记录。

Example: 基于用户组的数据精简

section access;

LOAD * inline [

ACCESS, USERID, GROUP, REDUCTION, OMIT

USER, *, ADMIN, *,

USER, *, A, 1,

USER, *, B, 2, NUM

USER, *, C, 3, ALPHA

USER, *, GROUP1, 3,

ADMIN, INTERNAL\SA_SCHEDULER, *, *,

];

section application;

T1:

LOAD *,

NUM AS REDUCTION;

LOAD

Chr( RecNo()+ord('A')-1) AS ALPHA,

RecNo() AS NUM

AUTOGENERATE 3;

结果将为:

  • 允许属于 ADMIN 组的用户查看所有数据和所有字段。
  • 允许属于 A 组的用户跨所有字段查看和 REDUCTION=1 相关的数据。
  • 允许属于 B 组的用户查看和 REDUCTION=2 相关但未在 NUM 字段中的数据
  • 允许属于 C 组的用户查看和 REDUCTION=3 相关但未在 ALPHA 字段中的数据
  • 允许属于 GROUP1 组的用户跨所有字段查看和 REDUCTION=3 相关的数据
  • 用户 INTERNAL\SA_SCHEDULER 不属于任何组,但是可查看所有字段中的所有数据。

    备注:

    此行中的通配符 * 仅指区域权限表格内的所有值。如果在区域应用程序中存在区域权限中 REDUCTION 字段内不可用的值,则会将它们去除。

继承访问限制

备注: 该功能在 Kubernetes 中不可用。

二进制加载会导致新 Qlik Sense 应用程序受到继承访问限制。