---
url: /v6.2/app-data-auth.md
---
# 权限控制

在使用`应用作者`权限和使用`数据集作者`权限的模式下，应用管理者可以对数据集设置权限，包括行权限和列权限。

![](/images/app-creation/app-setup-004.png)

> \[!TIP] 提示
> 数据权限设置`使用者`权限的模式时，应用管理者不能对数据集设置权限。

### 行权限添加规则

打开权限控制设置页面，点击行权限规则右侧的加号，为数据集添加行权限。

![](/images/app-creation/app-setup-005.png)

* **第一步 选择用户**
  点击用户，选择需要设置的行权限的用户，这些用户可以看到符合行权限规则的数据。

* **第二步 选择权限设置方式，支持简单过滤和表达式过滤**

  再简单过滤的情况下，行权限中的对比值可以为参数值，部分情况下也可选择用户属性。

  行权限可以选择用户属性的对比条件：

  * 文本：除为空/不为空外，所有比较方式的对比值均可以选择用户属性；

  * 数字：等于/不等于两种比较方式的对比值可以选择用户属性；

  * 日期：等于/不等于两种比较方式的对比值可以选择用户属性；

  选择多个数据集，分别添加行权限控制，此处的行权限可以是“并且”的关系也可以是“或者”的关系，在第一个下拉框中选择要添加行权限的数据集，在第二个下拉框中选择字段，指定对比方式以及对比值。

  * **参数值**

    对比方式选择参数值:

    例如：为`用户`中所选择的用户添加行权限，为两个数据集各自添加行权限：
    数据集制造销售数据：可见的数据仅为字段“地区”等于“参数值”“地点”的所在的行数据。

    ![](/images/app-creation/app-setup-006.png)

  * **用户属性**

    对比方式选择用户属性（用户属性的设置方式见[用户管理](user-role.md)）：

    例如：为规则“各区负责人”中所选的用户添加行权限：

    数据集`用户属性`：字段“地区”等于“用户属性”，在与用户属性相连的下拉框中会列出系统内全部的用户属性，选择用户属性
    `省份属性`:

    ![](/images/app-creation/app-setup-007.png)

    该条规则内的用户访问应用时，在依赖`用户属性`数据集的图表中，只能看到字段“地区”中等于自己的用户属性值的行数据。

* **第三步 预览**

  点击**预览**，预览数据时，可以切换数据集查看添加了规则的全部数据集分别可见那些数据。

  ![](/images/app-creation/app-setup-008.png)

* **第四步 保存**

  点击保存，规则添加成功，该窗口关闭。

### 列权限添加规则

列权限控制数据集字段对用户是否可见，当对数据集某个字段设置列权限后，用户在查看数据集时看不到该字段。

列权限规则设置相对简单。选择用户、数据集、对用户不可见的字段，点击保存即可。

![](/images/app-creation/app-setup-010.png)

### 编辑规则

点击规则上的**编辑**按钮编辑已经设置的权限规则。

![](/images/app-creation/app-setup-009.png)

### 删除规则

点击规则右侧的**删除**按钮可以删除设置的权限规则。

> \[!CAUTION] 请注意
> 针对 dataset 设置的行权限不会往下游推送，例如：
> dataset C = A join B， dataset A 和 B 上分别设置行权限： A where a = $user.a 和 B where b= $user.b，
> 那么 C 的 tableSql 就是 A join B， 而不会是 A where a = user.a join B where b= $user.b
> 如果用户需要控制权限，**需要额外在 C 上设置行权限**。

### 规则之间的计算方式

* 行权限和列权限之间取交集
  对同一用户、同一数据集，行权限和列权限作用后的数据集取交集。

* 行权限或列权限内部的多规则之间取并集
  对于同一个用户，同一个数据集，如果创建了多条规则，那么最后生效的权限是规则的并集。

比如在规则1中为用户 A 授权访问区域为“北京市”的数据，在规则2中为用户 A 授权访问区域为“上海市”的数据，最终用户 A 可以访问的是“北京市”
**和**“上海市”的数据。

## 连接权限、数据权限和行权限控制的关系

连接权限控制是第一道防线，它控制谁能访问该数据连接，以及访问该数据连接时能访问到什么数据。

数据权限是控制用户在访问该应用的数据集时，应该看到谁的数据：应用作者的，数据集作者的，还是使用者自己的。

行权限控制是在确定了应用的数据权限模式也就是数据集的数据之后，进一步去控制数据集数据的分发。
