---
url: /v6.2/connection-permission.md
---
# 连接权限

数据连接通过权限管理和权限控制，在提高数据使用便利性的同时保护数据的安全性，使系统具有统一数据发布平台的能力，让各业务部门能够对权威、统一的数据实现按需所取。

## 连接管理

数据连接创建者（下文称 owner）创建数据连接后，可以设置连接管理员，让管理者进行数据的进一步下发。

![](/images/data-connection/connection-permission-001.png)

### 管理者受规则约束

连接中有管理者约束设置，表示连接 owner 和管理者是否受连接设置的规则约束，默认情况下管理者受约束，该功能只能由 owner 设置，管理者不能设置。

![](/images/data-connection/connection-permission-002.png)

### 数据连接 owner 和管理者

数据连接 owner 和管理者分工不同。 数据连接 owner 管理整个数据连接，包括创建、编辑、删除连接，设置规则分发连接，设置连接管理者，及管理者约束规则。 连接管理者只是协助 owner 进行数据下发，建立数据使用规则。

## 连接权限

数据连接 owner 和数据连接管理者都可以设置连接规则，对用户设置权限，下面详细的介绍连接权限内容。

* 数据连接内容列表
* 数据预览
* 权限控制

![](/images/data-connection/connection-permission-003.png)

## 数据连接内容列表

为了让用户能够方便、快捷的找到所需要的表，衡石 SENSE 特意添加了按照`全部`、`按已授权`、`按未授权`、`按访问者`四种方式进行搜索的功能。

* 只有 owner(连接的创建者)的搜索框前面有下拉列表，可以通过上述四种方式进行筛选。
  ![](/images/data-connection/connection-permission-004.png)

* 对于授权用户，搜索框前面没有下拉列表，只能从所有已授权表中进行筛选。
  ![](/images/data-connection/connection-permission-005.png)

### 全部

搜索默认从该连接的全部表中进行筛选，下方列出连接中所有目录，展开目录显示连接中所有表。在搜索框中输入想要查找的表的名称即可检索出该表。
![](/images/data-connection/connection-permission-006.png)

### 按已授权

选择`按已授权`后，下方列出所有授权过的目录（若未对目录设置规则，但是该目录下有已授权的表，该目录也会显示）展开目录显示连接中所有授权过的表，已授权的目录或表下方会有绿色的 icon。在搜索框中输入想要查找的已授权表的名称即可检索出该表。
![](/images/data-connection/connection-permission-007.png)

### 按未授权

选择`按未授权`后，下方列出所有未授权的目录（若未对目录设置规则，但是该目录下有未授权的表，该目录也会显示）展开目录显示连接中所有未授权的表。在搜索框中输入想要查找的未授权表的名称即可检索出该表。
![](/images/data-connection/connection-permission-008.png)

### 按访问者

选择`按访问者`后，下方列出该数据连接中所有的目录，展开目录显示连接中所有表。在搜索框内输入想要查找的用户/用户组的名称即可查看该用户/用户组能看到的目录和表。
![](/images/data-connection/connection-permission-009.png)

## 数据预览

用户在数据预览处可以查看所选中表的数据。

### owner 查看数据

数据连接中 owner 可以查看自己创建的数据连接中表的所有数据。

![](/images/data-connection/connection-permission-010.png)

### 授权用户查看数据

授权用户可以看到由数据 owner 设置规则后的数据。查看权限由[授权类型](#授权类型)决定。

## 权限控制

对数据连接进行权限控制能够实现对数据的分发，owner 可以通过添加规则决定让哪些用户访问数据连接中的数据。每条规则由授权用户和授权类型组成。

> \[!TIP] 提示
>
> 1. 只有 owner 可以设置权限控制，其他用户打开数据连接没有权限控制的 tab。
> 2. 可以对连接、目录、表设置一条或多条规则，每条规则只能选择一种[授权类型](#授权类型)。
> 3. 继承规则只上级目录设定的规则，可以选择继承也可以选择不继承。继承规则的详细说明参考[继承关系](#继承关系)

### 授权用户

授权用户可以针对系统中的用户和用户组进行授权。

### 授权类型

授权类型包括查看名称(LS)、查看数据结构(SC)、只读访问(RO)、完全访问(RW)四种类型。数据连接、目录、表都支持上述四种类型。具体授权范围如下。

#### 查看名称(LS)

* 在连接上设置时可以访问该连接下所有目录、表的名称。
* 在目录上设置时可以访问该目录下所有表的名称。
* 在表上设置时可以访问该表的名称。

#### 查看数据结构(SC)

* 在连接上设置时可以访问该连接下所有目录、表的名称以及表的结构。
* 在目录上设置时可以访问该目录下所有表的结构。
* 在表上设置时可以访问该表的结构。

#### 只读访问(RO)

* 在连接上设置时可以访问该连接下所有目录、表的名称，表的结构和数据。
* 在目录上设置时可以访问该目录下所有表的名称、结构和数据。
* 在表上设置时可以访问该表的名称、结构和数据。表的 RO 只读访问与其他授权类型不同，可以设置行、列权限。

行权限设置时可通过简单过滤、表达式过滤、SQL 表达式过滤三种方法进行数据筛选，并指定用户查看筛选的数据。

* 简单过滤
  在简单表达式中可以通过固定值和用户属性来设置行权限控制。当有多个简单过滤条件时，可以设置规则为满足'全部条件'或满足'任一条件'。
  ![](/images/data-connection/connection-permission-011.png)

* 表达式过滤
  通过使用表达式进行权限控制，表达式比简单过滤更加灵活。

  如图所示，设置用户 能看到 `short_name = = '湖北'` 或者 `short_name = '{{$省份简称}}'`的数据。
  ![](/images/data-connection/connection-permission-028.png)

* SQL 表达式过滤
  可以通过 SQL 实现数据过滤，常用于跨表权限控制、复杂场景过滤使用。如图所示，用户查看订单表时，先要看自己在大区负责人表中负责哪些地区，才能查看订单表中对应地区的信息。如果用户在大区负责人表中没有对应的地区信息，那么订单表中就没有数据可以查看。
  ![](/images/data-connection/connection-permission-029.png)

> \[!TIP] 提示
>
> 1. 使用表达式时，请注意字段和用户属性的用法。
> 2. SQL 表达式可实现跨表数据过滤，简单过滤、表达式过滤只能在本表中进行数据过滤。

列权限设置列字段是否对用户可见，创建列权限规则后指定用户不能查看规则中的列字段内容。 如对用户张三设置了列权限规则，则张三在查看该连接时，看不到年份、订单编号、地区、门店等列字段相关信息。
![](/images/data-connection/connection-permission-030.png)

#### 完全访问(RW)

* 在连接上设置时可以访问和更改该连接下所有表的名称、结构和数据。
* 在目录上设置时可以访问和更改该目录下所有表的名称、结构和数据。
* 在表上设置时可以访问和更改该表的名称、结构和数据。

### 添加连接规则

下面演示给连接添加规则以及规则生效后授权用户查看情况。
**第一步：添加规则**

在数据连接选择需要授权的连接，打开右侧的`权限控制`列表，点击`+`添加规则。在规则列表中生成一条空规则，修改规则的名称使其更贴合业务逻辑。
![](/images/data-connection/connection-permission-012.png)

**第二步：选择授权用户以及用户组**

选择本条规则作用的用户/用户组，滚动竖轴的滚动条，点击用户/用户组列表进行添加。
![](/images/data-connection/connection-permission-013.png)

> \[!TIP] 提示
> 如果选择全部用户，可以添加用户组中的 ALL_USERS。

**第三步：选择授权类型**

根据需要给连接添加对应的[授权类型](#授权类型)，这里选择查看名称。

**第四步：保存规则**

点击`保存`，规则设置成功，规则名称后是当前规则所授权的用户/用户组的数量。

![](/images/data-connection/connection-permission-014.png)

**授权用户查看数据**

授权用户在数据连接中可以看到该连接级连接下面的所有目录、表的名称。
![](/images/data-connection/connection-permission-015.png)

> \[!TIP] 提示
>
> 1. 每个规则支持选择一种授权类型。

#### 添加目录规则

下面演示给目录(schame或db)添加规则以及规则生效后授权用户查看情况。
**第一步：添加规则**

在数据连接选择需要授权的目录，打开右侧的`权限控制`列表，点击`+`添加规则。在规则列表中生成一条空规则，修改规则的名称使其更贴合业务逻辑。  ![](/images/data-connection/connection-permission-016.png)

> \[!TIP] 提示
> 继承列表中显示了继承规则，是该目录上一层级的所有规则，默认是继承该规则。也可以选择不继承。

**第二步：选择授权用户以及用户组**

选择本条规则作用的用户/用户组，滚动竖轴的滚动条，点击用户/用户组列表进行添加。

![](/images/data-connection/connection-permission-017.png)

> \[!TIP] 提示
> 如果选择全部用户，可以添加用户组中的 ALL_USERS。

**第三步：选择授权类型**

根据需要选择对应的[授权类型](#授权类型)。这里选择只读访问类型。

![](/images/data-connection/connection-permission-018.png)

**第四步：保存规则**

点击`保存`，规则设置成功，规则名称后面是当前规则内所授权的用户/用户组的数量。

![](/images/data-connection/connection-permission-019.png)

**授权后用户访问**

授权用户可以看到该目录下所有表的名称、结构和数据。
![](/images/data-connection/connection-permission-019-2.png)

#### 添加表规则

下面的示例是给表添加规则以及规则生效后授权用户查看情况。
**第一步：添加规则**

在数据连接选择需要授权的表，打开右侧的`权限控制`列表，点击`+`添加，一条空规则添加成功，修改规则的名称使其更贴合业务逻辑。
![](/images/data-connection/connection-permission-020.png)

> \[!TIP] 提示
> 继承列表中显示了继承规则，是该表上一层级的所有规则，默认是继承该规则，也可以选择不继承。

**第二步：选择授权用户以及用户组**

选择本条规则作用的用户/用户组，滚动竖轴的滚动条，点击用户/用户组列表进行添加。

![](/images/data-connection/connection-permission-021.png)

> \[!TIP] 提示
> 如果选择全部用户，可以添加用户组中的 ALL_USERS。

**第三步：选择授权类型**

根据需要选择对应的[授权类型](#授权类型)。这里选择只读访问类型。

通过简单过滤设置行权限。

![](/images/data-connection/connection-permission-022.png)

**第四步：保存规则**

点击`保存`，规则设置成功，规则名称后的未保存更新为当前规则内所选授权用户用/户的数量。
![](/images/data-connection/connection-permission-023.png)

**授权后用户访问**

选择不同的授权类型，该条规则内的用户访问应用时，在该数据连接内可见的内容分别为：

![](/images/data-connection/connection-permission-024.png)

## 规则之间的关系

### 继承关系

在数据连接权限控制中，继承关系遵循以下规则：

1. 目录会继承所属连接上的规则，该规则在表目录的规则列表中置顶，且只能查看不能修改。
   ![](/images/data-connection/connection-permission-025.png)
2. 表会继承所属目录和连接上的规则，该规则在表的规则列表中置顶，且只能查看不能修改。
   ![](/images/data-connection/connection-permission-026.png)
3. 来自父级节点的继承规则，支持全部继承 和 全部不继承。默认是全部继承且生效。
4. 没有继承的父级节点规则，可以通过勾线重新继承。
5. 继承规则与当前规则同时生效时取并集。

![](/images/data-connection/connection-permission-027.png)

### 权限取并集

目录上和表上的授权类型不一致时，表上的授权类型生效的 2个规则的并集。

* **示例**：目录上为用户 A 设置的授权类型为`(LS)查看名称`，该目录下某一张表为用户 A 设置的授权类型为`(RO)只读访问`，则用户 A 在该表上的实际权限为`(RO)只读访问`。

对于同一个用户，同一个表，如果创建了多条规则，那么最后生效的权限是规则的并集。

* **示例**：对于同一个表，如果在规则1中为用户 A 授权访问区域为“北京市”的数据，在规则2中为用户 A 授权访问区域为“上海市”的数据，最终用户 A 可以访问的是“北京市”和“上海市”的数据。
