页面树结构
转至元数据结尾
转至元数据起始

为了更好的理解,SQL查询 中如何控制表权限、列权限、行权限、脱敏规则,写了几个示例进行说明。

1、3个选项必须要开启:

## 原生SQL数据集数据权限
## 原生SQL数据集数据权限 ,系统默认值false
RAW_SQL_APPLY_ROW_PERMISSIONS=true

## 原生SQL数据集资源权限
## 原生SQL数据集资源权限,系统默认值false
RAW_SQL_APPLY_ROW_PERMISSIONS_CHECK_TABLE=true


## 原生SQL数据集脱敏规则
## 原生SQL数据集脱敏规则,系统默认值false
RAW_SQL_APPLY_MASKING_RULE=true


2、设置项具体说明:可查看SQL查询/数据集支持权限控制

3、更改了设置项值,需要重新启动服务器才能生效。


为了方便说明示例,先创建一个用户:VerifyUser 密码是1 ,角色:VeriyRole,再给VerifyUser 分配了角色:VeriyRole;如何创建用户、角色可查看:用户管理

设置操作权限:


1 表权限:某个"表"没有查看、引用权限示例

如果登录的用户,表没有加载在 "数据库管理”  中,在SQL查询中执行时也会提示:没有权限。


1、创建了一个演示使用的northwind 库,并通过"数据库管理” ,选择”products“、”categories“、”orders“、”orderdetails“

2、使用admin(有权限的账号,这里为了演示说明用admin) 账号,给”products“设置资源授权;打开资源授权页面可以看到直接从父节点继承了权限,有一个EveryOne的角色,需要把它删除掉,删除操作方式如下:

删除掉的效果,确保VerifyUser 或VeriyRole不在里面,即VerifyUser 、VeriyRole角色对”products“没有引用、查看权限:

3、确认好权限之后,使用VerifyUser 用户登录,并去创建数据模型,添加 SQL查询,在SQL查询中,查询”products“表:

执行、保存时会提示:没有查看权限。

如果用户对表或者字段有 引用 权限,但是没有 查看 权限,如果需要控制不能查看数据,可以开启:
## 原生SQL数据集资源权限
## 原生SQL数据集资源权限,引用表、字段必须有查看权限,系统默认值false
RAW_SQL_APPLY_REFS_REQUIRE_READ_PURVIEW=true

开启之后,”执行时“会抛出异常,但是能正常保存。

原因:是由于产品本身有 引用 权限就能查看数据,该控制项仅仅只是控制数据安全性,用户无法在 SQL查询 中随意输入表、字段 查找没有 查看 权限的数据。


2 列权限:表中字段没有引用、查看权限

1、基于示例1 添加的”categories“表,通过表的设置资源授权,确认VerifyUser 用户否有引用、查看权限:

表有权限之后,再确认”categoryName“字段是否有引用、查看权限,如果有的话要把 VerifyUser 从列表中删除:

2、确认好权限之后,使用 VerifyUser 用户登录,使用去创建数据模型,添加 SQL查询,在SQL查询中查询”categories“表:

执行时:会提示对”categoryName“没有引用权限;但是可以保存成功。

保存成功之后,在数据模型预览或再报表层查看效果:


3 行权限:SQL查询继承源表设置的行权限

1、使用admin(有操作权限的账号即可,这里为了演示说明用admin) 账号登录,基于示例1 添加的”orders“表设置行权限,设置行权限,详情可查看:详情

  设置行权限,这里使用简单模式,使 VerifyUser 用户只能查询 ShipRegion=华南 的数据

2、设置好行权限,使用 VerifyUser 登录系统,使用去创建数据模型,添加 SQL查询,在SQL查询中查询”orders”表

执行成功之后,可以看到VerifyUser 只能查看 华南 的数据:

在报表层也是一样:

4 继承脱敏规则:SQL查询继承源表"字段"设置的脱敏规则

1、使用admin(有操作权限的账号即可,这里为了演示说明用admin) 账号登录,基于示例1 添加的”orderdetails“表创建脱敏规则,脱敏规则创建,详情可查看:详情

  创建脱敏规则,需要选择数据源下面”Quantity“字段,设置脱敏算法为:*;并且应用范围,设置为用户 VerifyUser 适用于此范围,保存。

2、创建好脱敏规则之后,使用 VerifyUser 用户登录,使用去创建数据模型,添加 SQL查询,在SQL查询中查询”orderdetails”表

 执行成功之后,可以看到Quantity字段变成了*,无法查看它真实的数据。






  • 无标签