HetuEngine 自定义动态脱敏函数及可算不可见特性样例

举报
yd_225397023 发表于 2025/04/26 15:35:32 2025/04/26
【摘要】 HetuEngine新特性:自定义动态脱敏函数和可算不可见

步骤1、登录FusionInsight Manger后点击集群->HetuEngine服务001.png


步骤2、概览页点击Web UI进入HetuEngine原生页面

002.png

步骤3、在“计算实例”页签,在待操作的实例所属租户所在行的“操作”列单击“配置”,在“自定义配置”单击“增加”添加如下参数:

hetu.dynamic.masked.enabled:true003.png点击确认

步骤4、参考《MapReduce Service 3.3.0-ESL 产品文档 02》开发和应用HetuEngine UDF章节,开发样例如下:004.png步骤5、自定义函数注册及功能验证

    1.	使用PuTTY工具登录HDFS服务客户端所在节点,切换到客户端安装目录,例如“/opt/client”。
    cd /opt/client
    2.执行以下命令配置环境变量。
    source bigdata_env
    3.如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。	kinit HetuEngine用户
    根据回显提示输入密码。
    4.执行如下命令创建目录,并将已准备好相应的UDF函数包上传到目录路径。
    hdfs dfs -mkdir /custom/udf/huawei/
    hdfs dfs -put /data/xql/HetuExample-1.0-SNAPSHOT.jar /custom/udf/huawei/
    5.修改UDF函数包权限。
    hdfs dfs -chmod 644 /custom/udf/huawei/HetuExample-1.0-SNAPSHOT.jar
    6. 进入HetuEngine客户端
    hetu-cli --tenant TE_TEST --catalog hive --schema default
    7. 执行如下命令创建HetuEngine UDF函数并验证成功
    CREATE FUNCTION example.namespace01.numEncrypt (
    num integer,
    rand integer
    )
    RETURNS varchar
    LANGUAGE JAVA
    DETERMINISTIC
    SYMBOL "com.huawei.udf.BasicEncrypt"
    URI "hdfs://hacluster/custom/udf/huawei/HetuExample-1.0-SNAPSHOT.jar";
    CREATE FUNCTION example.namespace01.strEncrypt (
    num varchar,
    rand varchar
    )
    RETURNS varchar
    LANGUAGE JAVA
    DETERMINISTIC
    SYMBOL "com.huawei.udf.BasicEncrypt"
    URI "hdfs://hacluster/custom/udf/huawei/HetuExample-1.0-SNAPSHOT.jar";

    005.png

    步骤6、登录FusionInsight Manager后选择Ranger服务,点击Ranger Web UI进入ranger配置页面

    006.png

    Service Manager页面选择HetuEngine进行配置007.pngHetuEngine Policies页面点击Masking进行脱敏策略配置008.png点击Add New Policy按钮添加策略009.png

    完成如下策略信息配置,其中自定义策略配置规则示例如下:select example.namespace01.strEncrypt(name,'xxx');010.png

    未开启特性字符串自定义函数通过默认策略处理:

    011.png

    开启特性后字符串自定义函数通过自定义策略处理:012.png多表复杂业务场景测试:

      create table hive.default.person_info (id int,name string,cid int,addr string,email string);
      create table hive.default.class_info (cid int,cname string, addr string);
      create table mrs_xn_hive.default.shop_info (sid int,uname string,pid int, stime date);
      create table mrs_xn_hive.default.product_info (pid int,pname string,price int);
      
      insert into hive.default.person_info values (1001,'zhangsan',201,'City A','1001@mail.com'),(1001,'lisi',201,'City B','1002@mail.com'),(1003,'wangwu',201,'City A','1003@mail.com');
      insert into hive.default.class_info values (201,'C201','City A'),(202,'C202','City B');
      insert into mrs_xn_hive.default.shop_info values (3001,'zhangsan',401,'2022-01-01'),(3002,'lisi',402,'2022-02-01'),(3003,'lisi',403,'2022-03-01');
      insert into mrs_xn_hive.default.product_info values (401,'pen',10),(402,'pencial',5),(403,'apple',5);
      
      select * from hive.default.person_info;
      select * from hive.default.class_info;
      select * from mrs_xn_hive.default.shop_info;
      select * from mrs_xn_hive.default.product_info;

      验证点:

      • 跨域跨源多表脱敏字段关联场景

      - 脱敏字段脱敏策略相同场景(此处脱敏策略都是拼接或增加相同值)

      select
      t1.*,
      t3.*
      from hive.default.person_info t1
      left join
      mrs_xn_hive.default.shop_info t3
      on t1.name=t3.uname;

      - 脱敏字段脱敏策略不同场景(此处脱敏策略都是拼接或增加不同值)

      select
      t1.*,
      t2.*
      from hive.default.person_info t1
      left join
      hive.default.class_info t2
      on t1.cid=t2.cid;
      • 脱敏字段分组聚合场景
      select
      t3.uname,
      sum(t4.price)
      from mrs_xn_hive.default.shop_info t3
      left join
      mrs_xn_hive.default.product_info t4
      on t3.pid=t4.pid
      group by t3.uname;
      • 脱敏字段条件过滤场景
      select * from hive.default.person_info where name='zhangsan';
      select * from hive.default.person_info where name='zhangsan' and cid=201;
      select * from hive.default.person_info where name like 'zhang%';
      select * from hive.default.class_info where cid in (select cid from hive.default.person_info where name='zhangsan');
      • 综合场景测试:
      select t1.name,t2.cname,t1.addr,t3.stime,t4.pname,t4.price
      from hive.default.person_info t1
      left join hive.default.class_info t2
      on t1.cid=t2.cid
      left join mrs_xn_hive.default.shop_info t3
      on t1.name=t3.uname
      left join mrs_xn_hive.default.product_info t4
      on t3.pid=t4.pid;
      【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
      • 点赞
      • 收藏
      • 关注作者

      评论(0

      0/1000
      抱歉,系统识别当前为高风险访问,暂不支持该操作

      全部回复

      上滑加载中

      设置昵称

      在此一键设置昵称,即可参与社区互动!

      *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

      *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。