联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
9.2 数据脱敏
更新时间:12/1/2022, 4:03:44 AM

StellarDB可以通过配置并且导入规则表来实现对数据的脱敏。

规则表结构

表 2. 规则表结构

图属性名

属性对应的值

用户名

需要配置掩码的图属性

掩码方式

department

营业一部

Tom

phone_number

mark(custom,[4,8])

  • 上表表示,用户Tom访问该图,如果图属性department对应的值是“营业1部”,则对应的phone_number可以全部展示,如果department值是其他值,则以掩码显示;

  • 如果表中第一列的属性在图中不存在,对于用户Tom,phone_number字段正常显示;

  • 如果用户不在规则表中,该用户可以正常访问图中phone_number字段。

配置掩码流程

  1. 创建规则表

    config query.lang sql;
    
    create table xxx(a1 string,a2 string, a3 string,a4 string,a5 string);
    复制
  2. 插入数据

    insert into table xxx values();
    复制
  3. 导入规则

    config query.lang cypher;
    
    LOAD DESENSITIZATION RULES FROM TABLE [db_name].[tbl_name] INTO GRAPH [graph_name];
    复制

参考案例

  1. 在Guardian界面追加使用图谱的用户,给予 GLOBAL 的读权限即可(也可以按需配置指定图的 select 权限)

    permission7
  2. 通过有 admin 权限的用户构建图。 (此处示例图为desens_wiki)

    permission8
  3. 通过有 admin 权限的用户构建脱敏规则表。

    1. 所有的脱敏规则表一共有下面5列(均为 string 类型),需要严格按照顺序定义,列名无限制:

      1. 图属性名(基于脱敏的属性)

      2. 基于脱敏属性的值(属性对应的值)

      3. 用户名

      4. 需要配置掩码的图属性(需要脱敏的属性)

      5. 掩码方式

    2. 掩码方式当前提供两类:

      1. mark(all),对于需要脱敏的属性,将所有的值置为*。

      2. mark(custom,[start_num,end_num]),对于需要脱敏的属性,将以start_num到end_num中间的值置为*。

    3. 这里示例的表为desen_table,所属数据库为desen:

      permission9
      1. 图中h和h1用户,和guardian界面创建的用户对应。

      2. 基于department属性,将h和h1进行分组,h属于department为transwarp的组,h1属于department为abc的组。

      3. 基于deparment属性,有两个掩码方式:

        1. 针对属性为url的掩码方式mark(all),表示对于属于不同department的用户,他们查看到的url属性全为*

        2. 针对属性为url1的掩码方式mark(custom.[0,1]),表示对于属于不同department的用户,他们查看到的url1属性的第0位为*

针对脱敏规则表有两个限制:

限制1:一个用户针对 图属性名 只能有一个 属性对应的值。对应表中则是用户h对department属性只能有一个值transwarp。如果还有用户h对department属性还有另外一个值,那么在执行下面步骤LOAD时会报错。

限制2:针对 图属性名,每个 需要配置掩码的图属性掩码方式 是唯一的。对应表中则是针对department属性,需要脱敏的属性url只有一个规则mark(all),需要脱敏的属性url1只有一个规则mark(custom,[0,1])。同样的,不满足时,在执行下一步时会报错。

  1. 不同用户查询效果。

    1. 用户h查询看到的效果

      permission10
    2. 用户h1查询看到的效果

      permission11
    3. 对于用户h2,因为没有在脱敏规则表中,可以查看到所有的值

      permission12
  2. 如果此时需要将用户h2加入到脱敏体系中,可以将用户根据department属性进行分组。并且切换到TEoC语言,使用load语句重新加载规则。

    permission13
    permission14
  3. 验证修改后的效果:对于用户h2,因为没有在脱敏规则表中,可以查看到所有的值。

    permission15
  4. 查看当前加载了脱敏规则表的图。

    语法规则如下:

    SHOW DESENSITIZATION GRAPHS;
    复制

    该语句调用示例如图:

    permission16
  5. 为指定图删除加载脱敏规则表。

    DROP DESENSITIZATION GRAPH [GRAPH_NAME];
    复制

    该语句调用示例如图:

    permission17

    在这里仅是将图desens_wiki从脱敏图中删除,它会变成普通图,仍然可以正常查询,只不过此时不会有任何脱敏的效果。