Ranger支持对Hive数据的脱敏处理(Data Masking),它对select的返回结果进行脱敏处理,对用户屏蔽敏感信息。

背景信息

该功能只针对HiveServer2的场景(例如,beeline/jdbc/Hue等途径执行的select),对于使用Hive Client(例如hive -e 'select xxxx')不支持。

Hive组件配置Ranger

请参见文档: Hive配置

配置Data Mask Policy

在Ranger UI的emr-hive的service页面可以对用户访问Hive数据进行脱敏处理:
  • 支持多种脱敏处理方式,例如显示开始的4个字符/显示最后的4个字符/Hash处理等。
  • 配置Mask Policy时不支持通配符,例如policy中table/column不能配置*。
  • 每个policy只能配置一个列的mask策略,多个列需要配置各自的mask policy。

配置Policy流程如下所示:

  1. 单击已创建的emr-hive
    权限配置示例
  2. 单击上方的Masking
    配置Policy
  3. 单击右上角的Add New Policy
  4. 配置相关参数。
    edit_ploicy
    参数 说明
    Policy Name Policy的名称。可自定义,例如test_mask。
    database 添加Hive中的数据库,例如:testdb1。
    table 添加表,例如:testtb1。
    Hive Column 可添加列名。例如a。
    Access Types 选择授予的权限。
    Select Masking Option 选择脱敏方式。
  5. 单击add

测试数据脱敏

  • 场景:

    用户 test在select表testdb1.testtbl中列a的数据时,只显示最开始的4个字符。

  • 流程:
    1. 配置policy

      在上节的最后一个截图,其实就是配置了该场景的一个policy,可参考上图(其中脱敏方式选择了show first 4)。

    2. 脱敏验证

      test用户使用beeline连接HiveServer2,执行select a from testdb1.testtbl

      脱敏验证

      如上图所示,test用户执行select命令后,列a显示的数据只有前面4个字符是正常显示,后面字符全部用x来脱敏处理。