安全联合分析TrustDA/MPCSQL
一、什么是联合分析?
功能介绍:在原始数据不可见的前提下,提供SQL模式对多方数据进行联合分析。
二、哪些场景适合用联合分析?
适用场景:适用于双方数据不共享,但有一些统计分析的需求。例如电商平台在媒体平台进行了营销广告投放,投放结束后,电商平台期望能联合两边的数据,进行全链路的营销活动复盘分析,就可以借助联合分析功能实现。
三、字段保护控制
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提供字段级别的访问控制,业务方可根据字段的敏感程度来配置字段的使用范围。
步骤二:
建立MpcPre缓存任务(单次查询/小数据量,可以不需要)
如果数据量级超过百万且需要多次SQL分析,建议使用缓存以提升SQL执行效率。
1、Alice新建MpcPre任务
Alice:在【通用计算/对应项目/任务研发】,新建【TrustDA/MpcPre】任务。
Alice:配置TrustDA/MpcPre任务。
2、审批执行MpcPre任务
Bob:在【通用计算/对应项目/审批流程】,查看并同意待审批任务。
Alice:执行MpcPre任务,进行预计算。
步骤三:
建立MpcSql分析任务,进行统计分析,可以直接从已有任务复制
当前,每个SQL查询语句查询,需要建一个【MpcSql分析】任务进行查询。
1、Alice新建MpcSql任务
Alice:在【通用计算/对应项目/任务研发】,新建【TrustDA/Mpcql】任务。
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语句进行安全检查;
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:在【项目台/对应项目/审批台】,查看并同意待审批任务。
4、执行任务查看结果
Alice执行MpcSql任务,进行统计分析,统计分析结果,在输出表中查看。
当前,暂不支持在【控制台】直接查看输出结果,需要使用INSERT OVERWRITE TABLE 语句将输出结果写在了输出表中,在输出表中查看统计结果。