HetuEngine 自定义动态脱敏函数及可算不可见特性样例
【摘要】 HetuEngine新特性:自定义动态脱敏函数和可算不可见
步骤1、登录FusionInsight Manger后点击集群->HetuEngine服务
步骤2、概览页点击Web UI进入HetuEngine原生页面
步骤3、在“计算实例”页签,在待操作的实例所属租户所在行的“操作”列单击“配置”,在“自定义配置”单击“增加”添加如下参数:
hetu.dynamic.masked.enabled:true点击确认
步骤4、参考《MapReduce Service 3.3.0-ESL 产品文档 02》开发和应用HetuEngine UDF章节,开发样例如下:步骤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";
步骤6、登录FusionInsight Manager后选择Ranger服务,点击Ranger Web UI进入ranger配置页面
在Service Manager页面选择HetuEngine进行配置在HetuEngine Policies页面点击Masking进行脱敏策略配置
点击Add New Policy按钮添加策略
完成如下策略信息配置,其中自定义策略配置规则示例如下:select example.namespace01.strEncrypt(name,'xxx');
未开启特性字符串自定义函数通过默认策略处理:
开启特性后字符串自定义函数通过自定义策略处理:多表复杂业务场景测试:
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)