安全聯(lián)合分析TrustDA/MPCSQL
一、什么是聯(lián)合分析?
功能介紹:在原始數(shù)據(jù)不可見的前提下,提供SQL模式對(duì)多方數(shù)據(jù)進(jìn)行聯(lián)合分析。
二、哪些場(chǎng)景適合用聯(lián)合分析?
適用場(chǎng)景:適用于雙方數(shù)據(jù)不共享,但有一些統(tǒng)計(jì)分析的需求。例如電商平臺(tái)在媒體平臺(tái)進(jìn)行了營(yíng)銷廣告投放,投放結(jié)束后,電商平臺(tái)期望能聯(lián)合兩邊的數(shù)據(jù),進(jìn)行全鏈路的營(yíng)銷活動(dòng)復(fù)盤分析,就可以借助聯(lián)合分析功能實(shí)現(xiàn)。
三、字段保護(hù)控制
DataTrust提供字段級(jí)別的訪問(wèn)控制,業(yè)務(wù)方可根據(jù)字段的敏感程度來(lái)配置字段的使用范圍,總共有5種字段保護(hù)等級(jí)。
字段保護(hù)等級(jí) | 字段保護(hù)內(nèi)容 | 保護(hù)程度 |
不允許使用 | 不允許用于SQL分析,設(shè)置后該字段對(duì)合作方不可見 | 最高 |
只用于比較/聚合查詢 | 不能作為關(guān)聯(lián)鍵,不能作為分組鍵;不能查詢明細(xì),能在比較/聚合函數(shù)中透出, | 次之 |
用于比較/聚合查詢,可做關(guān)聯(lián)鍵 | 能作為關(guān)聯(lián)鍵,不能作為分組鍵;作為分組鍵時(shí),可以查詢明細(xì),能在比較/聚合函數(shù)中透出 | 次之 |
用于比較/聚合查詢,可做分組鍵 | 不能作為關(guān)聯(lián)鍵,能作為分組鍵;作為分組字段時(shí)能查詢明細(xì),能在比較/聚合函數(shù)中透出 | 次之 |
使用無(wú)限制 | 任意操作;可以任意出現(xiàn)在SELECT的分析中 | 不保護(hù) |
四、聯(lián)合分析當(dāng)前支持的SQL能力
1、支持SQL算子
實(shí)現(xiàn)了對(duì)常用算子的覆蓋,包括密文下的JOIN(LEFT/RIGHT/FULL/INNER)、GROUP BY、ORDER BY、WHERE密文比較,支持密文聚合函數(shù)(SUM/COUNT)等,支持復(fù)雜SQL嵌套查詢。
2、字段級(jí)保護(hù)設(shè)置
提供了字段級(jí)別的訪問(wèn)控制,業(yè)務(wù)方可根據(jù)字段的敏感程度來(lái)配置字段的使用范圍。
3、大數(shù)據(jù)場(chǎng)景優(yōu)化
對(duì)大數(shù)據(jù)場(chǎng)景下的分布式數(shù)據(jù)分析,進(jìn)行了優(yōu)化升級(jí),可支持小時(shí)級(jí)10億級(jí)數(shù)據(jù)的多方聯(lián)合SQL分析,支持ODPS/FLINK計(jì)算引擎,支持常用JDBC/文件常用數(shù)據(jù)源。
五、如何進(jìn)行聯(lián)合分析
步驟一:
打開【通用計(jì)算-合作數(shù)據(jù)】設(shè)置字段保護(hù)等級(jí)
DataTrust提供字段級(jí)別的訪問(wèn)控制,業(yè)務(wù)方可根據(jù)字段的敏感程度來(lái)配置字段的使用范圍。
步驟二:
建立MpcPre緩存任務(wù)(單次查詢/小數(shù)據(jù)量,可以不需要)
如果數(shù)據(jù)量級(jí)超過(guò)百萬(wàn)且需要多次SQL分析,建議使用緩存以提升SQL執(zhí)行效率。
1、Alice新建MpcPre任務(wù)
Alice:在【通用計(jì)算/對(duì)應(yīng)項(xiàng)目/任務(wù)研發(fā)】,新建【TrustDA/MpcPre】任務(wù)。
Alice:配置TrustDA/MpcPre任務(wù)。
2、審批執(zhí)行MpcPre任務(wù)
Bob:在【通用計(jì)算/對(duì)應(yīng)項(xiàng)目/審批流程】,查看并同意待審批任務(wù)。
Alice:執(zhí)行MpcPre任務(wù),進(jìn)行預(yù)計(jì)算。
步驟三:
建立MpcSql分析任務(wù),進(jìn)行統(tǒng)計(jì)分析,可以直接從已有任務(wù)復(fù)制
當(dāng)前,每個(gè)SQL查詢語(yǔ)句查詢,需要建一個(gè)【MpcSql分析】任務(wù)進(jìn)行查詢。
1、Alice新建MpcSql任務(wù)
Alice:在【通用計(jì)算/對(duì)應(yīng)項(xiàng)目/任務(wù)研發(fā)】,新建【TrustDA/Mpcql】任務(wù)。
2、mpcSql腳本任務(wù)配置及編寫SQL腳本
使用緩存:這里可以選擇是否使用緩存,如果使用,則選擇步驟二中建好的緩存任務(wù)名稱,可以加快sql執(zhí)行效率。
SQL腳本編寫:
當(dāng)前支持join(inner join/full join/left join/right join)、group by 、order by、聚合(sum/count)等;
當(dāng)前暫不支持在【控制臺(tái)】直接查看輸出結(jié)果,需要使用INSERT OVERWRITE TABLE 語(yǔ)句將輸出結(jié)果寫在了輸出表中;
可以使用【SQL檢查】對(duì)當(dāng)前SQL語(yǔ)句進(jìn)行安全檢查;
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創(chuàng)建的MpcSql任務(wù)
Bob:在【項(xiàng)目臺(tái)/對(duì)應(yīng)項(xiàng)目/審批臺(tái)】,查看并同意待審批任務(wù)。
4、執(zhí)行任務(wù)查看結(jié)果
Alice執(zhí)行MpcSql任務(wù),進(jìn)行統(tǒng)計(jì)分析,統(tǒng)計(jì)分析結(jié)果,在輸出表中查看。
當(dāng)前,暫不支持在【控制臺(tái)】直接查看輸出結(jié)果,需要使用INSERT OVERWRITE TABLE 語(yǔ)句將輸出結(jié)果寫在了輸出表中,在輸出表中查看統(tǒng)計(jì)結(jié)果。