全部产品
云市场

行级管控

更新时间:2020-04-08 12:10:34

需求背景

针对某些特定的表,不同的人员只能访问不同的数据行记录(如:连锁企业的明细数据,只能查看本人所负责地域数据,不能看全部区域的数据),传统解决方案需要用视图来支持,现在通过DMS行级管控即可实现所有已接入DMS的非NoSQL数据库类型的统一行级权限管控。

首先,DMS在18年开始提供了字段级别的权限管控,通过提升字段为敏感、机密级别,能实现字段的脱敏,这可以理解为对数据表的纵向数据安全保护:

纵向数据保护


让我们再考虑另外一种场景,一个二维数据表,所有的行数据非常敏感,不管是这些行的哪个字段,都需要保护起来,没有权限的用户不能对其数据进行使用(查、改、删);这可以理解为对数据表的横向数据安全保护:

横向数据保护


对数据表的横向数据安全保护,则是行级管控这个模块来负责实现的

行级管控介绍


行级管控旨在对数据表进行横向数据安全保护,所有的行通过一个(或者若干个)确定的值(可枚举)来进行区分:

行级管控示意图2


这些值称之为“管控值”,用户在DMS上访问受管控值对应的行,需要有对应的行权限(有该值的权限),才能进行访问,否则,对这些行的访问将会被拒绝

一个值可能对应到多行,那么如果一个用户具有一个管控值的行权限,则可能对应拥有该表多行数据的访问权限

行级管控示意图3

行权限

行级管控表的管控值,作为访问行的资源,可供用户进行资源权限申请,将行级管控权限定义为“行权限”,收敛到权限体系里面,在这之后,安全协同管控模式下的权限体系可支持库、表、列(字段)、行这几个不同维度的权限管控

单值


“单值”区别于“所有”,用户申请某个行级管控表的行权限时选择单值,则可针对每一个管控值进行单独申请

请注意,一个值可能对应到多行,那么如果一个用户具有一个管控值的行权限,则可能对应拥有该表多行数据的访问权限

所有

“所有”是一种特权类型,用户申请某个行级管控表的行权限时选择“所有”,则具备当前行级管控表的所有行权限,当以后管控值增加或者修改(可以想象成,受管控的行越来越多),该用户对这些行也具备访问权限;且具备所有行权限的用户,可无限制地访问整个行级管控表

管控表和管控字段


需要进行行级管控的表,称之为“行级管控表”,而实现行级管控表的管控值,收敛到一个字段,这个字段称之为“管控字段”

配置组


通过一个配置组收敛具有相同管控值的行级管控表,比如表A和表B,都需要使用同样的管控值来进行行级管控,则可通过一个配置组,对表A和表B进行管理,这个时候管控值只需要配置一份,表A和表B可同时使用

约束和限制

1、仅支持关系型数据库,如MySQL、PolarDB、ADB等,而对于非关系型数据库MongoDB、Redis等则不支持使用
2、只支持物理库,逻辑库暂未开放
3、对行级管控表的SQL查询、订正、删除,筛选条件会做如下限制:

  • 限制用户需要带上受管控字段进行数据筛选
  • 行级管控表的所有行都会纳入管控范围,针对不具备“所有行”权限的用户,对管控字段的筛选操作符(where 管控字段 [筛选操作符] 管控值)仅支持 “=” 和 “in” 两种操作符,即一定要求明确筛选值且筛选值一定要在管控值列表内
  • 针对不具备“所有行”权限的用户,筛选条件会受到一些使用限制,比如OR、XOR、逻辑非等运算操作均无法使用,除非用户具备当前行级管控表的“所有行”权限

操作指南

普通视角

权限申请


经过上面“管理视角”的配置以后,用户即可感知该管控表的使用受阻,举个例子,SQL窗口对该管控表某个管控行进行SELECT,则会遇到如下报错:

权限申请_01

权限申请_02

权限申请_03


若用户需要对这些管控的行进行访问,则可通过 权限申请 -> 行-权限申请,来申请这些行的访问权限

权限申请_04


申请成功以后,SQL窗口重试发起查询,则可通过

权限申请_05


用户可在“我的权限”里面看到自己具备的行权限并自行管理

我的权限


对于行级管控表具备哪些管控行,则可在“SQL窗口”,表详情找到特定的管控表,进行查看:

表详情_行级管控

表详情_管控值

管理视角

管理入口

具备管理员、DBA、安全管理员三者角色任意其一的用户,可在“系统管理”->“安全管理”->“敏感数据管理”的“行级管控”,对行级管控表、管控值进行定义和查看

管理入口

定义行级管控表

我们先新增一个“配置组”,配置组里面,我们选择我们要定义为行级管控的数据表,选择库之后选择到期望的表、最后需要选择一个特定的字段来作为行级管控表的管控字段

定义行级管控表

导入管控值

通过前面新增配置组并配置好行级管控表以后,我们需要为管控表配好需要受保护的管控值,点击“管控值详情”,在面板里面导入管控值:

导入管控值

安全规则设置

1、权限申请 -> 行级权限申请默认审批模板,建议选择为企业内合适的审批流程模板,来控制默认的行级权限申请审批;若默认的行级权限申请模板仍不满足您的需求,则可在“行级权限申请”里面通过DSL自行设置您的审批流程

安全规则设置_01


2、SQLConsole -> “SQL权限规范” 请确认“控制行级权限校验”规则已启用

安全规则设置_02


3、数据导出 -> “预检查校验” 请确认“控制行级权限校验”规则已启用

安全规则设置_03

行权限查看


可分为用户维度和库维度的查看

用户维度


“系统管理” -> “用户管理” 找到特定用户,进行权限查看和管理:

权限查看_用户维度

库维度


“系统管理” -> “实例管理” 找到特定的实例下的库详情,进行权限查看和管理:

权限查看_库维度_01


权限查看_库维度_02