# 用 Section Access 管理数据安全

区域权限用于控制应用程序的安全。它基本上是数据加载脚本的一部分，您可以在其中添加一个安全表来定义谁可以查看什么。当用户打开应用程序时，Qlik Cloud 使用此信息将数据缩小到适当的范围，也就是说，应用程序中的一些数据根据用户的身份对用户隐藏。区域权限与应用程序中的数据紧密集成并且依赖它来控制访问。这种形式的动态数据减少可以表格行、列或二者的组合为目标。有关详细信息，请参阅[在 Qlik 的信任和安全](https://www.qlik.com/us/trust)。

## 加载脚本中的部分

通过一个或数个安全性表格来管理数据访问控制，其加载方式与常规加载数据相同。也可将这些表格存储在标准数据库或电子表格中。在授权区域内给定了管理安全性表格的脚本语句，它在脚本内由语句 Section Access 发起。

信息注释

区域权限中列出的所有字段名称和字段值始终转换为大写。因此，作为数据精简一部分的所有字段都必须转换为大写，以匹配区域权限语句中所述的内容，即使它们位于区域权限语句之外。您可以使用 Upper 函数将数据库内任何包含小写字母的字段名全部转换为大写，这样才能被 LOAD 或 SELECT 语句读取。

有关更多信息，请参阅[Upper 脚本和图表功能](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Upper.htm)。

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

示例：

```
Section Access;
Load * INLINE [
    ACCESS,  USER.EMAIL,             REDUCTION
    USER,    USER1@EXAMPLE.COM,      *
    USER,    USER2@EXAMPLE.COM,      1
    USER,    USER3@EXAMPLE.COM,      2
    ADMIN,   USER4@EXAMPLE.COM,             
];
Section Application;
T1:
Load *,
NUM AS REDUCTION;
LOAD
Chr(RecNo()+ord('A')-1) AS ALPHA,
RecNo() AS NUM
AUTOGENERATE 3;
		
```

请注意，在对加载脚本进行更改之后，必须始终重新加载数据才能使更改生效。

### Section Access 系统字段

访问级别被指派给一个或数个安全表格中的用户，并加载在脚本的 Section Access 部分内。这些表格必须至少包含两个系统字段：ACCESS，其为定义访问级别以及 USERID 或 USER 的字段。EMAIL。其他可选的系统字段可以根据用例添加。以下描述的是全套 Section Access 系统字段。

#### ACCESS

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

存取 Qlik Sense 应用程序可以为指定用户授权。在安全性表格内，用户可以指派到访问级别 ADMIN 或 USER。具有 ADMIN 权限的用户拥有对于应用程序中所有数据的访问权限，除非受到安全性表格的限制。具有 USER 权限的用户仅能访问安全表中定义的数据。如果未指派有效访问级别，则用户无法打开应用程序。

#### USERID

包含与 Qlik Cloud 用户名对应的字符串。Qlik Cloud 将从 IdP 主题获取登录信息并将之与此字段中的值相比较。有关使用电子邮件地址验证用户身份的其他方法，请参阅[USER.EMAIL](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/Security/manage-security-with-section-access.htm#Email)。对于多云环境，IdP 主题可以根据您的内部 Windows 身份映射。在使用 Qlik Account 时，主题不能根据内部 Windows 身份映射。用户 IdP 主题可以在 Administration 活动中心的管理用户部分查看。

通配符 (\*) 被解释为所有用户，受安全表中指定的其他条件的限制。例如，在下面的安全表中，Qlik Sense 租户管理员用户可以看到列出的所有缩减值。

```
Section Access;
LOAD * INLINE [
    ACCESS,  USERID,                   GROUP,                     REDUCTION
    ADMIN,   *,                        Qlik SENSE TENANT ADMINS,  *
    USER,    QLIK-POC\SOMEOTHERUSER1,  *,                         1
    USER,    QLIK-POC\SOMEOTHERUSER2,  *,                         2
    ...
];	
```

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

#### NTNAME

信息注释NTNAME 是传统 QlikView 字段，如果 QlikView 未使用相同安全表，则建议使用 USERID。

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

Qlik Cloud 将从身份提供商的 subject 声明获取登录信息并将之与此字段中的值相比较。

#### USER.EMAIL

包含与用户电子邮件地址对应的字符串。Qlik Cloud 将从身份提供商获取登录信息并将之与此字段中的值相比较。

#### GROUP

包含与 Qlik Cloud 中的组对应的字符串。Qlik Cloud 将从身份提供者的 “groups” 声明获取信息并将之与此字段中的值相比较。是否使用 IdP 组、自定义组或两者的组合由系统变量 `QlikCloudGroupMode` 控制。有关更多信息，请参阅[定义 GROUP 的 IdP 或自定义组](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/Security/manage-security-with-section-access.htm#Selectin)。

信息注释此功能在 Qlik Sense Business、Qlik Cloud Analytics Standard 中，或使用 Qlik 身份提供商（IdP）时不可用。

#### OMIT

包含将为此指定用户省略的字段名称。通配符可能会被使用，并且字段可能为空。

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

## 管理应用程序访问权限

具有 USERID AD\U DOMAIN\C 的用户将根本无法打开应用程序，因为该用户 ID 未列在安全表中。

最简单的区域权限形式可用于限制特定用户访问应用程序。通过排除拒绝用户访问应用程序。换句话说，如果安全表中未列出特定用户电子邮件地址，他们将无法访问应用程序。此规则的唯一例外是，安全表中的某一行中，USER.EMAIL 字段被分配了通配符 (\*)。在这种情况下，通配符意味着所有经过身份验证的用户都可访问应用程序。以下为包含用户 ID 列表的安全表示例：

```
Section Access;
LOAD * inline [
    ACCESS,  USER.EMAIL
    ADMIN,   USER1@EXAMPLE.COM
    USER,    USER2@EXAMPLE.COM
    USER,    USER3@EXAMPLE.COM
];
Section Application;
```

具有 USER.EMAIL USER4@example.com 的用户将根本无法打开应用程序，因为该用户电子邮件地址未列在安全表中。

## 管理用户对应用程序中特定数据的访问权限

在授权用户访问 Qlik Sense 应用程序本身之后，动态数据减少会限制对该应用程序中数据表中的行和列的访问。

### 管理对于行界别数据的访问

通过在加载脚本的区域权限的安全性表格中添加数据减少列来限制对行级数据的访问。可通过将 Section Access 数据与真实数据进行链接来隐藏特定记录（行）。通过在脚本的 Section Access 和区域应用程序部分中选择一个或多个具有公共名称的减少字段来控制要显示/排除的数据的选择。用户登录后，Qlik Sense 将访问区域中字段的选择与应用程序区域中的任意字段进行匹配，并使用完全相同的字段名（字段名必须大写）。做好选择后，Qlik Sense 永久隐藏用户选择之外的所有数据。如果通配符 (\*) 用作数据减少列中的字段值，则会将其解释为允许用户访问与安全性表格中所有所选减少字段相关的记录。

将区域权限中的缩减字段与数据模型 Qlik Sense 中的字段进行比较时，预期会出现以下行为：

* 如果数据模型中的字段值与区域权限中的缩减字段匹配，则应用程序将打开，显示与指定用户的匹配相关的数据。其他数据将被隐藏。

* 如果缩减字段值与数据模型中的任何值都不匹配，则应用程序将不会为普通用户打开。但是，对于标记为 ADMIN 的用户，它将不缩减地打开。

不建议在区域权限中使用多个缩减字段，因为它将允许除预期访问组合之外的其他访问组合。

信息注释

数据减少列中的通配符 \* 仅引用安全表中的所有值。如果在区域应用程序中存在安全性表格的减少列内不可用的值，则会将它们去除。

信息注释用于上述转换中的所有字段名和这些字段中所有字段值都必须大写，因为所有字段名和字段值在 Section Access 内会默认转换为大写。

示例： 基于用户 ID 的行级别数据减少

Section Access; Authorization: LOAD \* inline [ ACCESS, USER.EMAIL, REDUCTION ADMIN, USER1@EXAMPLE.COM, \* USER, USER2@EXAMPLE.COM, 1 USER, USER3@EXAMPLE.COM, 2 USER, USER4@EXAMPLE.COM, \* ]; Section Application; T1: LOAD \*, NUM AS REDUCTION; LOAD RecNo() AS NUM AUTOGENERATE 3;

在本例中，字段 REDUCTION（大写）现在同时存在于 Section Access 和区域应用程序中（所有字段值也是大写的）。通常这两个字段会不同并分隔开，但是如果使用 Section Access，则这些字段已链接并减少向用户显示的记录数。

结果将为：

* 用户 USER1@EXAMPLE.COM 可以查看所有字段，且当 REDUCTION = 1 或 REDUCTION =2时，其他用户才能查看这些记录。
* 用户 USER2@EXAMPLE.COM 可以查看所有字段，但仅限和 REDUCTION=1 相关的那些记录。
* 用户 USER3@EXAMPLE.COM 可以查看所有字段，但仅限和 REDUCTION=2 相关的那些记录。
* 用户 USER4@EXAMPLE.COM 可以查看所有字段，且当 REDUCTION = 1 或 REDUCTION =2时，其他用户才能查看这些记录。

### 管理对于行界别数据的访问

通过将 OMIT 系统字段添加到 Section Access 脚本的安全表中，限制对列级别数据的访问。下面的示例建立在上一个示例的基础上，其中行数据减少已经到位。

示例： 基于用户 ID 的列数据减少

Section Access; LOAD \* inline [ ACCESS, USER.EMAIL, REDUCTION, OMIT ADMIN, USER1@example.com, \*, USER, USER2@example.com, 1, USER, USER3@example.com, 2, NUM USER, USER4@example.com, 3, ALPHA ]; Section Application; T1: LOAD \*, NUM AS REDUCTION; LOAD Chr( RecNo()+ord('A')-1) AS ALPHA, RecNo() AS NUM AUTOGENERATE 3;

Section Access 中的字段 OMIT 定义应当为用户隐藏的字段。

结果将为：

* 用户 USER1@example.com 可以查看所有字段，且只有当 REDUCTION 为 1、2 或 3 时其他用户才可以在此示例中查看这些记录。
* 用户 USER2@example.com 可以查看所有字段，但仅限和 REDUCTION=1 相关的那些记录。
* 用户 USER3@example.com 可以查看 NUM 之外的所有字段，可查看的记录仅限和 REDUCTION=2 相关的那些记录。
* 用户 USER4@example.com 可以查看 ALPHA 之外的所有字段，可查看的记录仅限和 REDUCTION=3 相关的那些记录。

信息注释一些可视化具有必须满足的最低数据要求，以便进行渲染。因此，当从用户的数据视图中省略列级字段时，可能会显示“未完成的可视化”。

### 管理用户组访问权限

Section Access 为您提供了通过组成员身份限制用户可见数据范围的选项。要使用用户组限制数据，请将 GROUP 字段名称添加到访问部分的安全表中，并为 GROUP 字段定义值。

示例： 基于用户组的数据缩减

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, AD\_DOMAIN\DEV, \*, \*, ]; section application; T1: LOAD \*, NUM AS REDUCTION; LOAD Chr( RecNo()+ord('A')-1) AS ALPHA, RecNo() AS NUM AUTOGENERATE 3;

结果将为：

* 属于 ADMIN 的用户可以查看所有字段，且只有当 REDUCTION 为 1、2 或 3 时其他用户才可以在此示例中查看这些记录。
* 属于 A 组的用户可以查看所有字段中与 REDUCTION=1 相关联的数据。
* 属于 B 组的用户可以查看与 REDUCTION=2 相关联但不在 NUM 字段中的数据。
* 属于 C 组的用户可以查看与 REDUCTION=3 相关联但不在 ALPHA 字段中的数据。
* 属于 GROUP1 组的用户可以查看所有字段中与 REDUCTION=3 相关联的数据。
* 用户 AD\_DOMAIN\DEV可以查看所有字段中的所有数据。

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

#### 定义 GROUP 的 IdP 或自定义组

区域权限可以使用 IdP 组、自定义组或两者的组合。

默认情况下，区域权限使用您的 IdP 组。您可以使用变量 QlikCloudGroupMode 在区域权限语句中选择要使用的组。通过在区域权限语句前用适当的值设置 QlikCloudGroupMode，可以控制区域权限语句中对 GROUP 使用的组类型。

QlikCloudGroupModeQlikCloudGroupMode 值

| 值 | 结果 |
| --- | --- |
| 0 | IdP 组 |
| 1 | 自定义组 |
| 2 | IdP 和自定义组 |

如果使用 IdP 和自定义组的组合，则共享一个名称的 IdP 和自定义组将把定义的策略应用于两个组的成员。

示例： 使用自定义组

SET QlikCloudGroupMode = 1;   
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, ]; section application; T1: LOAD \*, NUM AS REDUCTION; LOAD Chr( RecNo()+ord('A')-1) AS ALPHA, RecNo() AS NUM AUTOGENERATE 3;

## 在 Qlik Cloud 中重新加载数据

若要在 Qlik Cloud 中重新加载应用程序而不进行数据缩减，建议使用安全性表格中的 USER.EMAIL 系统字段。USER.EMAIL 字段的值应该是能够编辑和加载应用程序的用户的电子邮件地址。这适用于共享和托管空间中的应用程序。例如：

Section Access; LOAD \* inline [ ACCESS, USER.EMAIL, REDUCTION ADMIN, TEST@EXAMPLE.COM, \* ];

在本例中，具有电子邮件地址的用户 test@example.com 是管理员，可以重新加载应用程序。

如果您在使用组，则以下示例将同等地对 Qlik Sense 和 Qlik Cloud 生效：

Section Access; LOAD \* inline [ ACCESS, GROUP, REDUCTION ADMIN, DEVELOPERS, \* ];

您还可将安全表中的 USERID 映射至身份提供者的 subject claim，如以下示例中所示。建议将该配置用于从 Qlik Sense 迁移到 Qlik Cloud 并用于多云环境。有关将 USERID 映射至 subject claim 的更多信息，请参阅[在多云环境中管理用户访问](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/Security/manage-security-with-section-access.htm#user_access)

Section Access; LOAD \* inline [ ACCESS, USERID, REDUCTION ADMIN, AD\_DOMAIN\DEV, \* ];

## 在多云环境中管理用户访问

Qlik Sense 多云环境涉及多种用户身份验证机制。通常对于 Qlik Sense Enterprise on Windows，Section Access 安全性表格中的 USERID 由代理服务验证。在 Qlik Cloud 中，身份提供商扮演该身份验证角色。因此，为内部部署环境（如 Qlik Sense Enterprise on Windows）设置的 Section Access 将无法在云环境中工作。

当把 OIDC 或 SAML 身份提供者（Qlik IdP 或自定义 IdP）结合 Qlik Cloud 使用时，subject claim 用于在用户登录时识别用户。借助 Section Access，将安全性表格中 USERID 字段的值与 subject claim 的值进行比较。在设置您的租户时，确保 SAM 帐户名映射到您的身份提供者的 subject claim。因此，例如，若 SAM 帐户名称为 AD\_DOMAIN\Dev，则将 subject claim 设置为 AD\_DOMAIN\Dev。如果您希望查看 IdP 的 subject claim 的值，将 /api/v1/diagnose-claims 附加至浏览器中的租户 URL，例如 your-tenant.us.qlikcloud.com/api/v1/diagnose-claims。在 JSON 响应中，subject claim 名为 sub。

如果您无法使用 SAM 帐户名，有另一种方法来验证用户。由于电子邮件地址在不同的环境中往往保持不变，因此可以使用用户电子邮件字段而不是安全表中的用户 ID。以下是安全性表格的形式的示例：

| ACCESS | USERID | 用户电子邮件 | 注释 | COUNTRY |
| --- | --- | --- | --- | --- |
| USER | ABC\JOE | \* | Access-on-prem | 美国 |
| USER | \* | JOE.SMITH@EXAMPLE.COM | Access-in-cloud | 美国 |
| USER | ABC\URSULA | \* | Access-on-prem | 德国 |
| USER | \* | URSULA.SCHULTZ@EXAMPLE.COM | Access-in-cloud | 德国 |
| USER | ABC\STEFAN | \* | Access-on-prem | 瑞典 |
| USER | \* | STEFAN.SVENSSON@EXAMPLE.COM | Access-in-cloud | 瑞典 |

授权脚本：

Section Access; LOAD \* INLINE [ ACCESS, USERID, USER.EMAIL, COUNTRY USER, ABC\JOE, \*, UNITED STATES USER, \*, JOE.SMITH@EXAMPLE.COM, UNITED STATES USER, ABC\URSULA, \*, GERMANY USER, \*, URSULA.SCHULTZ@EXAMPLE.COM, GERMANY USER, ABC\STEFAN, \*, SWEDEN USER, \*, STEFAN.SVENSSON@EXAMPLE.COM, SWEDEN ];

请注意，每个用户有两条记录：一个用于内部访问，一个用于云访问。通配符确保只使用相关的身份验证字段。在本例中，COUNTRY 用作数据减少字段。

## QlikView 授权字段

在向后兼容性上，Qlik Cloud 识别来自 QlikView 的授权字段。尽管 USERID 在 QlikView 和 Qlik Cloud 中有不同的解释，在 Qlik Cloud 中解释它的方式将和 Qlik Sense 中一样：它将与经过身份验证的用户的名称相匹配。

#### PASSWORD, NTSID 和 NTDOMAINSID

如果使用了字段 PASSWORD、NTSID 和 NTDOMAINSID 中的一个，并且其包含相关值，则会拒绝访问文档。如果字段包含通配符 (\*)，可授予访问权限，具体取决于授权表格中的其他字段。

#### SERIAL

如果使用了字段 SERIAL 并且其包含许可证号码，则 Section Access 行将拒绝访问文档。如果字段包含通配符 (\*)，可授予访问权限，具体取决于授权表格中的其他字段。

此外，在 Qlik Cloud 中该字段也可用于定义环境。这意味着如果字段包含字符串 ‘QLIKCLOUD’，可授予访问权限，具体取决于授权表格中的其他字段。

## 混合环境

如果计划在 QlikView 和 Qlik Cloud 二者中使用相同安全性表格，请注意：

• USERID 在 QlikView 和 Qlik Cloud 中具有不同的含义，并且如果使用，可能导致安全问题。请改为使用 NTNAME 或如下所述将其与 SERIAL 组合。

•GROUP 和字段以 ‘USER.’ 开头，诸如 'USER.NAME' 和 'USER.EMAIL'，是（或者将是）Qlik Cloud 中的授权字段。如果在您的 Section Access 中使用这些字段，则在 Qlik Cloud 中可能拒绝访问。

•PASSWORD, NTSID 和 NTDOMAINSID 无法用在 Qlik Cloud 中。访问将被拒绝，除非使用了通配符。

•SERIAL 无法用于在 Qlik Cloud 中检查许可证号。但是，如果该字段包含字符串 ‘QLIKCLOUD’，则可能授予访问权限。这意味着可以有一个如下所示的安全性表格，其中第 1 行将在 QlikView（但不在 Qlik Cloud）中授予访问权限，而第 2 行将在 Qlik Cloud（但不在 QlikView）中授予访问权限。

安全性表格

| 折线 | SERIAL | USERID | 注释 |
| --- | --- | --- | --- |
| 1 | 4600 0123 4567 8901 | \* | 授予访问权限以修正 QlikView 中的许可证号。 |
| 2 | QLIKCLOUD | JOHN DOE | 授予访问权限以修正 Qlik Cloud 中的用户。 |

授权脚本：

Section Access; LOAD \* INLINE [ ACCESS, USERID, SERIAL USER, \*, 4600 0123 4567 8901 USER, JOHN DOE, QLIKCLOUD ];

## 使用 Section Access 以及 Insight Advisor Chat

使用区域权限的应用程序用索引用户来确定 Insight Advisor Chat 从应用程序中检索多少信息。索引用户应是区域权限脚本中对应用程序具有最高访问权限的用户。然而，提供给最终用户的数据仍受 Section Access 限制的控制。

有关如何使用区域权限和 Insight Advisor Chat 的可视化演示，请参阅：

[使用区域权限和 Insight Advisor 聊天](https://share.vidyard.com/watch/8Xg1Eq9SyWYjQeTABijo1M)

警告注释

如果您在应用程序名称、字段名称或主项目名称中有敏感信息，则可以通过使应用程序使用可用于 Insight Advisor Chat 的 Section Access 来公开这些信息。查询的应用程序建议包括用户可以访问的空间中的应用程序。其中可能包括用户在应用程序的区域权限中无法访问的应用程序。然而，选择这些应用程序并不会执行任何操作。单击维度或度量以使用 Section Access 查看应用程序中的可用项目时，用户可能会看到他们无权访问的项目。但是，单击这些项目不会向用户提供任何数据。

默认情况下，应用程序所有者是索引用户。您可以在详细信息中更改索引用户。

执行以下操作：

1. 在 Qlik Cloud 中，导航至应用程序。

2. 单击应用程序上的 the 详细信息 icon，并选择。

3. 在索引用户下，选择索引用户。

4. 单击返回。

5. 单击应用程序上的 the 重新加载 icon 并选择。

## 使用 Section Access 和 Qlik Answers

使用Section Access的应用程序用索引用户来确定 Qlik Answers 从应用程序中检索多少信息。

配置具有最广泛数据访问权限的索引用户，最好是具有 Section Access 中 ADMIN 或者 ALL 访问权限的专用服务帐户。这可以确保索引捕获完整数据集，并且在查询时应用单个用户权限。向最终用户显示的数据仍受区域权限的控制。

### 索引和区域权限

索引用户决定索引的范围。当 Qlik Answers 索引 Section Access 应用程序时，它会根据索引用户可访问的内容构建索引。这意味着索引用户的数据权限设置了索引所含内容的上限。索引用户无法查看的数据将不会被编入索引。

若索引用户拥有完全访问权限，则索引会捕获所有应用程序数据。Section Access 规则在查询时仍然强制执行。这两个层是独立的，因而每个用户只接收他们被允许查看的结果。

如果索引用户具有受限访问权限，则索引将仅包含在该限制范围内的数据。具有更广泛权限的用户仍然将受限于索引中捕获的数据，即使他们的 Section Access 规则通常允许他们查看更多数据。

信息注释由于受限索引用户导致的不完整索引不会产生错误。受影响用户将根据精简的索引接收答案，而不会有任何数据缺失的提示。

示例：

一个应用程序有两种用户类型：

* 全球用户：拥有完全数据访问权限的用户。

* EMEA 用户：仅拥有 EMEA 数据访问权限的用户。

如果索引用户是 EMEA 用户，则索引将仅包含 EMEA 数据。通过 Qlik Answers 进行查询的全球用户将收到 EMEA 范围的答案，即使他们的 Section Access 规则授予了更广泛的访问权限。

如果索引用户具有完全访问权限，则索引包含所有数据。通过 Qlik Answers 进行查询的 EMEA 用户仍将仅收到 EMEA 范围的答案，因为 Section Access 规则在查询时应用。

### 设置索引用户

默认情况下，应用程序所有者是索引用户。在受管空间中，默认索引用户是空间所有者。您可以在区域权限设置中更改索引用户。

执行以下操作：

1. 在 Qlik Cloud 中，导航至应用程序。

2. 单击应用程序上的 the 管理 icon 并选择 &gt; 区域权限设置。

   信息注释或者，在打开的应用程序中，打开详细信息区域并单击 the 更多 icon &gt; 管理 &gt; 区域权限设置。

3. 在索引用户下，选择索引用户。

4. 单击保存。

## 将 QVD 与区域权限一起使用

QVD 文件可以作为常规加载或优化加载读取。优化加载是指在加载过程中不进行数据转换，并且 WHERE 子句中没有筛选器。

将 QVD 与 Section Access 一起使用时，优化负载不起作用。如果要使用 QVD 文件将数据加载到区域权限，则必须展开 QVD 文件。扩展 QVD 文件的最简单方法是在加载数据时更改格式。

在以下示例中，由于不对数据进行格式化，因此不会扩展 QVD 文件。

示例： 没有数据格式的非工作示例（优化负载）

section access; LOAD ACCESS, USERID, PASSWORD, [GROUP] FROM SAccess.qvd (qvd);

相反，例如，您可以使用 upper() 函数来格式化将扩展 QVD 文件的数据。

示例： 带数据格式设定的工作示例

section access; LOAD ACCESS, USERID, PASSWORD, upper([GROUP]) as [GROUP] FROM SAccess.qvd (qvd);

您还可以将 Where 1=1 语句添加到 LOAD 语句中。

示例： 带数据格式设定的工作示例

section access; LOAD ACCESS, USERID, PASSWORD, [GROUP] FROM SAccess.qvd (qvd) where 1=1;

## 使用 Section Access 的指导准则和技巧

下面是区域权限的一些重要的事实和有用的提示。

* 区域权限中列出的所有字段名称和字段值始终转换为大写。因此，作为数据精简一部分的所有字段都必须转换为大写，以匹配区域权限语句中所述的内容，即使它们位于区域权限语句之外。您可以使用 Upper 函数将数据库内任何包含小写字母的字段名全部转换为大写，这样才能被 LOAD 或 SELECT 语句读取。

  有关更多信息，请参阅[Upper 脚本和图表功能](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Upper.htm)。

* 您无法使用此处列出的 Section Access 系统字段名称作为您的数据模型中的字段名称。

* 若您在应用程序中添加、修改或删除区域权限控制，则需要不同的步骤来应用更改，具体取决于应用程序的空间类型：

  * 个人与共享空间：要应用更改的区域权限控制，请重新加载应用程序。

  * 受管空间：要在应用程序的已发布副本中应用更改的区域权限控制，请根据您的用例执行下面任一操作：

    * 重新加载源应用程序，然后将源应用程序同数据一起重新发布到受管空间。

    * 重新发布不带数据的源应用程序，之后重新加载应用程序。

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

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

* 为避免暴露受限的数据，请在发布应用程序前先移除所有具有区域权限设置的附加文件。发布应用程序时，附加文件会包括在内。如果复制发布的应用程序，附加文件则会包括在副本中。但是，如果对附加数据文件应用了区域权限限制，则在复制文件时不会保留区域权限设置，因此，复制应用程序的用户将看不到附加文件中的所有数据。

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

* 安全性字段可置于不同表中。

* 当从 QVD 文件加载数据时，使用上限函数将减慢加载速度。