跳到主要内容
使用区域权限管理安全性

在该页面上

使用区域权限管理安全性

可以在数据加载脚本中使用区域权限来管理行级数据访问。这样,可以使用单个文件来保存多个用户或用户组的数据。 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 应用程序可以为指定用户或用户组授权。在安全性表格内,用户可以指派到访问级别 ADMINUSER。如果未指派有效访问级别,则用户无法打开应用程序。

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

如果在模板应用程序中的 On-demand 应用程序生成 (ODAG) 场景中使用了区域权限,则必须将 INTERNAL\SA_API 用户作为区域权限表格中的 ADMIN 纳入。例如:

Section Access; LOAD * inline [ ACCESS, USERID ADMIN, INTERNAL\SA_API ];

NTNAME

应包含与 Windows NT 域用户名或组名相对应的字符串的字段。如果使用不同的身份验证系统,它应该包含经过身份验证的用户的名称。

Qlik Sense 将从操作系统获取登录信息并将之与此字段中的值相比较。

USERID

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

信息注释 USERID 以及 NTNAME 二者都使用相同的身份验证信息,因此不必在授权表的同一行上同时检查这两者。这两个字段之间的区别是 NTNAME 还检查组。

USER.EMAIL

当前不受支持,将在 Qlik Sense 中仅以通配符匹配。

GROUP

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

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

SERIAL

包含与平台对应的字符串。如果字段包含字符串 ‘QLIKSENSE’ 或通配符 ‘*’,可授予访问权限,具体取决于授权表格中的其他字段。

信息注释如果字段 SERIAL 包含许可证号码,则区域权限行将拒绝访问文档。该设置仅在 QlikView 中有效。

OMIT

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

信息注释建议您不要在关键字段上应用 OMIT。省略的关键字段在数据模型查看器中可见,但是内容不可用,可能会给用户造成混淆。此外,在可视化中使用的字段上应用 OMIT 可导致可视化对没有被省略字段的用户权限的用户不完整。

Qlik Sense 将用户与 UserID 进行比较,并根据表中的组解析用户。 如果用户属于允许访问的组,或者用户匹配,则他们可以访问应用程序。

信息注释

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

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

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

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

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

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

Example:

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

访问文档
访问
用户 Finance

动态数据减少

应用程序中的部分数据可以对基于区域权限登录的用户隐藏,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(大写)同时存在于 section access 和区域应用程序中(所有字段值同样是大写)。通常这两个字段会不同并分隔开,但是如果使用 section access,则这些字段已链接并减少向用户显示的记录数。

区域权限中的字段 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 字段内不可用的值,则会将它们去除。

继承访问限制

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