近日,火山引擎安全研究團(tuán)隊(duì)對(duì)外開源了Jeddak-DPSQL(項(xiàng)目地址:https://github.com/bytedance/Jeddak-DPSQL),這是基于差分隱私的SQL代理工具,適用于數(shù)據(jù)管理者可信的場(chǎng)景模式,以中間件的形式接收SQL統(tǒng)計(jì)查詢請(qǐng)求,返回滿足差分隱私的查詢結(jié)果。
【資料圖】
據(jù)悉,火山引擎對(duì)于用戶敏感數(shù)據(jù)尤為重視,在火山引擎提供的數(shù)據(jù)分析產(chǎn)品中,廣泛采用差分隱私技術(shù)對(duì)用戶敏感信息進(jìn)行保護(hù)。此類數(shù)據(jù)產(chǎn)品通常構(gòu)建于 ClickHouse 等數(shù)據(jù)引擎之上,以 SQL 查詢方式來(lái)執(zhí)行計(jì)算邏輯,且查詢邏輯往往較為復(fù)雜,因此對(duì)差分隱私的應(yīng)用提出了以下要求:
零改造、零感知:最大程度避免影響業(yè)務(wù)現(xiàn)有查詢方式,最好做到業(yè)務(wù)零感知、零改造;
良好、靈活的適配性:能夠適配不同數(shù)據(jù)引擎的查詢語(yǔ)法,以及能夠處理包含多層嵌套、多重計(jì)算、多表連接等情形的復(fù)雜 SQL 語(yǔ)句;
安全性與可用性平衡:能夠根據(jù)業(yè)務(wù)數(shù)據(jù)質(zhì)量要求,計(jì)算合理的隱私預(yù)算,在安全性和數(shù)據(jù)可用性之間保持平衡;
為更好解決數(shù)據(jù)安全和隱私合規(guī)治理相關(guān)問(wèn)題,火山引擎安全研究團(tuán)隊(duì)進(jìn)行了產(chǎn)品調(diào)研,目前市面上在SQL查詢場(chǎng)景下加入差分隱私能力的產(chǎn)品,發(fā)現(xiàn)這些產(chǎn)品大多都沒有提供SQL 的自動(dòng)化分析能力,需主動(dòng)調(diào)用 API 或是在 SQL 中調(diào)用 UDF 來(lái)引入差分隱私能力,接入成本較高。其中OpenDP產(chǎn)品限定了輸入 SQL 的方言,僅支持 SQL 92標(biāo)準(zhǔn),難以在 Hive、ClickHouse 等主流數(shù)倉(cāng)引擎中透明應(yīng)用。
同時(shí),火山引擎安全研究團(tuán)隊(duì)也注意到云服務(wù)廠商在To B場(chǎng)景下會(huì)提供多款數(shù)據(jù)分析產(chǎn)品,部分產(chǎn)品的模式面臨泄漏用戶隱私、法律合規(guī)的風(fēng)險(xiǎn),該類產(chǎn)品通常是通過(guò)數(shù)據(jù)庫(kù)引擎使用面向?qū)崟r(shí)分析的 clickhouse,計(jì)算邏輯用SQL查詢的方式執(zhí)行,因此考慮結(jié)合差分隱私技術(shù)提供隱私保護(hù)的SQL查詢能力。
基于上述挑戰(zhàn),火山引擎安全研究團(tuán)隊(duì)自主研發(fā)了Jeddak-DPSQL ,希望能夠?yàn)橥瑯用媾R該類問(wèn)題的企業(yè)和個(gè)人提供一定參考和幫助,同時(shí)也希望能夠有更多的外部開發(fā)者能夠一起對(duì)該開源項(xiàng)目進(jìn)行共建,完善 Jeddak-DPSQL 產(chǎn)品功能,共同構(gòu)建更完備的應(yīng)用生態(tài)。
據(jù)了解,Jeddak-DPSQL 能夠兼容多種數(shù)據(jù)引擎和SQL方言,內(nèi)嵌多種差分噪聲擾動(dòng)算法,具備隱私預(yù)算管理能力,并且能夠與底層數(shù)據(jù)引擎結(jié)合,在數(shù)據(jù)分析師無(wú)感的情況下,對(duì) SQL 語(yǔ)句進(jìn)行自動(dòng)化分析和結(jié)果加噪處理。同時(shí),Jeddak-DPSQL 已經(jīng)在抖音集團(tuán)相關(guān)業(yè)務(wù)中得到了普遍應(yīng)用與驗(yàn)證。
一、全面了解 Jeddak-DPSQL
1、 Jeddak-DPSQL介紹
Jeddak-DPSQL采用中心化差分隱私(Centralized Differential Privacy,簡(jiǎn)稱CDP,適用于數(shù)據(jù)管理者可信的場(chǎng)景)模式,以中間件的形式接收SQL統(tǒng)計(jì)查詢請(qǐng)求,返回滿足差分隱私的查詢結(jié)果。一個(gè)典型的查詢請(qǐng)求處理流程如下:
●首先,核心服務(wù)接受客戶提交的SQL查詢語(yǔ)句,對(duì)該語(yǔ)句進(jìn)行解析和重寫,以便于計(jì)算隱私噪聲(如將AVG計(jì)算改為SUM/COUNT);
●然后,核心服務(wù)調(diào)用元數(shù)據(jù)管理服務(wù),計(jì)算重寫后的SQL查詢所對(duì)應(yīng)的數(shù)據(jù)表敏感度,同時(shí)在數(shù)據(jù)庫(kù)上執(zhí)行重寫后的SQL查詢,得到原始的查詢結(jié)果;
●最后,核心服務(wù)調(diào)用隱私預(yù)算管理服務(wù)得到為該查詢分配的隱私預(yù)算,并結(jié)合敏感度在原始的查詢結(jié)果中添加噪聲并返回。
更多接口使用方式可以參考項(xiàng)目README中的API Documentation部分。
三、后續(xù)計(jì)劃
火山引擎安全研究部門相關(guān)負(fù)責(zé)人表示,Jeddak-DPSQL會(huì)長(zhǎng)期維護(hù),歡迎大家使用。他也指出,近期開源的Jeddak-DPSQL是首個(gè)版本,因此還存在很多不完善的地方,也希望有更多的外部開發(fā)者能夠一起對(duì)該開源項(xiàng)目進(jìn)行共建,完善產(chǎn)品功能,構(gòu)建更完備的應(yīng)用生態(tài)。(作者:蔡德道)