行级管控

更新时间:2024-11-15 07:43:12

本文为您介绍如何对表中行数据进行管控,以及申请行权限。

应用场景

DMS的行级管控可保护横向数据安全,所有的行通过一个或若干个确定的值(管控字段的取值)进行区分,实现对行数据的管控。

  • 如果您需要使员工仅可查看自己负责地域的数据,不能查看全部区域的数据,可以使用DMS的行级管控功能。

  • 如果您数据库下有多张表,且多张表都需要使用同样的管控值进行行级管控,则可通过一个管控组同时对多张表进行管控。

前提条件

  • 实例的管控模式为安全协同。更多信息,请参见管控模式

  • 实例已开启敏感数据保护。具体操作,请参见开通敏感数据保护

  • 系统角色为DBA、管理员或安全管理员。查看系统角色的操作,请参见查看我的系统角色

  • 数据库为关系型数据库。例如RDS MySQLRDS PostgreSQLPolarDB MySQL等。

    说明

    当前仅支持物理库。

操作步骤

本示例以满足前提条件的poc_prod生产类型数据库举例。

步骤一:添加行级管控

  1. 登录数据管理DMS 5.0

  2. 单击控制台左上角的2023-01-28_15-57-17.png图标,选择全部功能 > 安全与规范(DBS) > 敏感数据管理 > 敏感数据资产

    说明

    若您使用的是非极简模式的控制台,在顶部菜单栏中,选择安全与规范(DBS) > 敏感数据管理 > 敏感数据资产

  3. 单击页面右上角的全域敏感数据列表,进入设置行级管控的页面。

    说明

    您也可以在实例列表区域的已开启页签下,单击目标实例右侧的敏感数据列表,进入设置行级管控的页面。

  4. 添加管控组。

    行级管控页签下,单击添加管控组,并输入管控组名称。

  5. 添加行配置。

    1. 单击添加行配置

    2. 搜索并选择目标数据库。

    3. 选择目标表和需要设置管控的字段。

      说明

      同一个管控组中不可重复定义行级管控表,且一张表仅支持定义一个字段。

    4. 单击添加

  6. 添加管控行值。

    1. 单击管控组名称右侧的详情

    2. 在详情页面,单击添加行值,配置如下信息。

      配置项

      说明

      配置项

      说明

      是否追加

      取值及说明如下:

      • :本次导入将在现有的行值列表上继续新增。

      • :本次导入将会覆盖原来的行值列表。

      行值内容

      增加管控的行值。多行值内容,需要使用英文逗号(,)分隔。

    3. 单击导入

      出现导入行值成功的提示后,表示行值已追加成功。

步骤二:申请行权限

所有用户(包含管理员、DBA)在查询该行的数据前,都需要申请受管控的行权限。

  1. 登录数据管理DMS 5.0

  2. 单击控制台左上角的2023-01-28_15-57-17.png图标,选择全部功能 > 安全与规范(DBS) > 权限中心 > 权限工单

    说明

    若您使用的是非极简模式的控制台,在顶部菜单栏中,选择安全与规范(DBS) > 权限中心 > 权限工单

  3. 权限申请工单列表页面,单击右上角的权限申请 > 行权限

  4. 选中目标行,单击添加,将其移动至确认已选择的库/表/列框中。

  5. 选择权限区域,选择查询权限,再配置期限申请原因等信息。

  6. 配置完成后,单击提交申请。等待审批通过,在SQL窗口查询行级管控数据。

    说明

    提交申请后,请等待审批通过,您可以在工作台的首页,查看权限申请工单的审核进度。

其他操作

  • 删除行级管控组:在行级管控的页签下,删除管控组。删除管控组后,设置的行级管控能力将失效。

  • 编辑行级管控组:在行级管控的页签下,编辑管控组名称及设置的原管控字段等信息。

常见问题

Q:为什么在授予管控行的查询权限后,在SQL窗口执行查询SQL时还会失败?

A:请根据如下步骤进行排查:

  1. 请确保您具有目标数据库、表的查询权限。授权的具体操作,请参见申请行权限

  2. SQL窗口使用包含WHERE条件的SQL语句查询管控的数据行。

    例如,受管控的字段为buyer_name,受管控的行值为name1、name2name3,在已有数据库、表dms_test的查询权限的前提下,通过SQL窗口执行如下SQL,查询受管控的数据行。

    • 查询单个管控值所在的数据行时,可在SQL语句的WHERE条件中使用=IN。示例SQL如下:

      SELECT * FROM dms_test WHERE buyer_name ='name1';
    • 查询多个管控值所在的数据行时,可在WHERE条件中使用IN。示例SQL如下:

      SELECT * FROM dms_test WHERE buyer_name IN ('name1', 'name2','name3');

  • 本页导读 (1)
  • 应用场景
  • 前提条件
  • 操作步骤
  • 步骤一:添加行级管控
  • 步骤二:申请行权限
  • 其他操作
  • 常见问题
  • 相关文档
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等