安全联合分析TrustDA/MPCSQL

更新时间:

一、什么是联合分析?

功能介绍:在原始数据不可见的前提下,提供SQL模式对多方数据进行联合分析。

image.png

二、哪些场景适合用联合分析?

适用场景:适用于双方数据不共享,但有一些统计分析的需求。例如电商平台在媒体平台进行了营销广告投放,投放结束后,电商平台期望能联合两边的数据,进行全链路的营销活动复盘分析,就可以借助联合分析功能实现。

三、字段保护控制

DataTrust提供字段级别的访问控制,业务方可根据字段的敏感程度来配置字段的使用范围,总共有5种字段保护等级。

字段保护等级

字段保护内容

保护程度

不允许使用

不允许用于SQL分析,设置后该字段对合作方不可见

最高

只用于比较/聚合查询

不能作为关联键,不能作为分组键;不能查询明细,能在比较/聚合函数中透出,

次之

用于比较/聚合查询,可做关联键

能作为关联键,不能作为分组键;作为分组键时,可以查询明细,能在比较/聚合函数中透出

次之

用于比较/聚合查询,可做分组键

不能作为关联键,能作为分组键;作为分组字段时能查询明细,能在比较/聚合函数中透出

次之

使用无限制

任意操作;可以任意出现在SELECT的分析中

不保护

四、联合分析当前支持的SQL能力

1、支持SQL算子

实现了对常用算子的覆盖,包括密文下的JOIN(LEFT/RIGHT/FULL/INNER)、GROUP BY、ORDER BY、WHERE密文比较,支持密文聚合函数(SUM/COUNT)等,支持复杂SQL嵌套查询。

2、字段级保护设置

提供了字段级别的访问控制,业务方可根据字段的敏感程度来配置字段的使用范围。

3、大数据场景优化

对大数据场景下的分布式数据分析,进行了优化升级,可支持小时级10亿级数据的多方联合SQL分析,支持ODPS/FLINK计算引擎,支持常用JDBC/文件常用数据源。

五、如何进行联合分析

步骤一:

打开【通用计算-合作数据】设置字段保护等级

DataTrust提供字段级别的访问控制,业务方可根据字段的敏感程度来配置字段的使用范围。

image.pngimage.png

步骤二:

建立MpcPre缓存任务(单次查询/小数据量,可以不需要)

如果数据量级超过百万且需要多次SQL分析,建议使用缓存以提升SQL执行效率。

1、Alice新建MpcPre任务

Alice:在【通用计算/对应项目/任务研发】,新建【TrustDA/MpcPre】任务。

image.pngimage.png

Alice:配置TrustDA/MpcPre任务。

image.png

2、审批执行MpcPre任务

Bob:在【通用计算/对应项目/审批流程】,查看并同意待审批任务。

Alice:执行MpcPre任务,进行预计算。

image.png

步骤三:

建立MpcSql分析任务,进行统计分析,可以直接从已有任务复制

当前,每个SQL查询语句查询,需要建一个【MpcSql分析】任务进行查询。

1、Alice新建MpcSql任务

Alice:在【通用计算/对应项目/任务研发】,新建【TrustDA/Mpcql】任务。

image.png

2、mpcSql脚本任务配置及编写SQL脚本

使用缓存:这里可以选择是否使用缓存,如果使用,则选择步骤二中建好的缓存任务名称,可以加快sql执行效率。

SQL脚本编写:

  • 当前支持join(inner join/full join/left join/right join)、group by 、order by、聚合(sum/count)等;

  • 当前暂不支持在【控制台】直接查看输出结果,需要使用INSERT OVERWRITE TABLE 语句将输出结果写在了输出表中;

  • 可以使用【SQL检查】对当前SQL语句进行安全检查;

image.png
INSERT OVERWRITE TABLE lscc_inner_alice.sj_mpcsql_out PARTITION (job_name = 'pre_groupby_2side_count_having_count_order_test')
SELECT 
 t1.age as col2_string,
 t2.native_country as col3_string,
 count(t1.workclass) as col1_int
FROM 
 lscc_inner_alice.host_train_adult_10 t1 
JOIN
 datatrust_inner_bob.slave_train_adult_10 t2
ON 
 t1.id = t2.id
where t1.age >= 27
GROUP BY 
 t1.age,t2.native_country
order by 
 t1.age DESC

3、Bob审批Alice创建的MpcSql任务

Bob:在【项目台/对应项目/审批台】,查看并同意待审批任务。

image.png

4、执行任务查看结果

Alice执行MpcSql任务,进行统计分析,统计分析结果,在输出表中查看。

当前,暂不支持在【控制台】直接查看输出结果,需要使用INSERT OVERWRITE TABLE 语句将输出结果写在了输出表中,在输出表中查看统计结果。