ITBear旗下自媒體矩陣:

火山引擎開源基于差分隱私的SQL代理工具Jeddak-DPSQL

   時(shí)間:2023-05-31 17:36:15 來源:互聯(lián)網(wǎng)編輯:茹茹 發(fā)表評(píng)論無障礙通道

近日,火山引擎安全研究團(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 查詢方式來執(zhí)行計(jì)算邏輯,且查詢邏輯往往較為復(fù)雜,因此對(duì)差分隱私的應(yīng)用提出了以下要求:

零改造、零感知:最大程度避免影響業(yè)務(wù)現(xiàn)有查詢方式,最好做到業(yè)務(wù)零感知、零改造;

良好、靈活的適配性:能夠適配不同數(shù)據(jù)引擎的查詢語法,以及能夠處理包含多層嵌套、多重計(jì)算、多表連接等情形的復(fù)雜 SQL 語句;

安全性與可用性平衡:能夠根據(jù)業(yè)務(wù)數(shù)據(jù)質(zhì)量要求,計(jì)算合理的隱私預(yù)算,在安全性和數(shù)據(jù)可用性之間保持平衡;

為更好解決數(shù)據(jù)安全和隱私合規(guī)治理相關(guā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 來引入差分隱私能力,接入成本較高。其中OpenDP產(chǎn)品限定了輸入 SQL 的方言,僅支持 SQL 92標(biāo)準(zhǔn),難以在 Hive、ClickHouse 等主流數(shù)倉引擎中透明應(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)品通常是通過數(shù)據(jù)庫引擎使用面向?qū)崟r(shí)分析的 clickhouse,計(jì)算邏輯用SQL查詢的方式執(zhí)行,因此考慮結(jié)合差分隱私技術(shù)提供隱私保護(hù)的SQL查詢能力。

基于上述挑戰(zhàn),火山引擎安全研究團(tuán)隊(duì)自主研發(fā)了Jeddak-DPSQL ,希望能夠?yàn)橥瑯用媾R該類問題的企業(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ù)分析師無感的情況下,對(duì) SQL 語句進(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查詢語句,對(duì)該語句進(jìn)行解析和重寫,以便于計(jì)算隱私噪聲(如將AVG計(jì)算改為SUM/COUNT);

●然后,核心服務(wù)調(diào)用元數(shù)據(jù)管理服務(wù),計(jì)算重寫后的SQL查詢所對(duì)應(yīng)的數(shù)據(jù)表敏感度,同時(shí)在數(shù)據(jù)庫上執(zhí)行重寫后的SQL查詢,得到原始的查詢結(jié)果;

●最后,核心服務(wù)調(diào)用隱私預(yù)算管理服務(wù)得到為該查詢分配的隱私預(yù)算,并結(jié)合敏感度在原始的查詢結(jié)果中添加噪聲并返回。

圖片1.jpg

2、 Jeddak-DPSQL解決的問題

案例背景

假設(shè)有一個(gè)數(shù)據(jù)庫 business,存儲(chǔ)用戶消費(fèi)數(shù)據(jù),使用 clickhouse 引擎,其中一個(gè)表 user 存儲(chǔ)用戶信息,表中存在以下列:uid,name,age,sex,city,代表用戶id、姓名、年齡、性別、城市。

查詢需求

假設(shè)要查詢用戶數(shù)量和平均年齡的城市分布,使用 SQL 語句 1:

1.jpg

風(fēng)險(xiǎn)

如果不應(yīng)用隱私保護(hù)技術(shù),可能面臨差分攻擊的風(fēng)險(xiǎn),比如攻擊者通過某渠道得知張三的 uid 為 803719,構(gòu)造下面的 SQL 語句 2:

#FormatImgID_2#

通過執(zhí)行上面的 SQL語句1 和 SQL 語句2,可分別得到兩個(gè)查詢結(jié)果:

圖片2.jpg

那么就可以通過比較兩次查詢結(jié)果得知張三所在的城市是北京,年齡大約 61 歲(120008*49.3276 = 5919706.62,120007*49.3275 = 5919645.29,5919706.62 - 5919645.29 約等于 61)

以上是一個(gè)簡(jiǎn)單的例子,現(xiàn)實(shí)場(chǎng)景中,攻擊者可能通過背景知識(shí)構(gòu)造更多樣、更復(fù)雜的查詢語句達(dá)到竊取隱私的目的。

因此,在上述SQL查詢場(chǎng)景下,可以通過接入Jeddak-DPSQL對(duì)SQL進(jìn)行分析和重寫,最終執(zhí)行重寫后的SQL能夠保證返回給使用者的數(shù)據(jù)滿足差分隱私要求,進(jìn)而達(dá)到對(duì)個(gè)人隱私保護(hù)的效果。

3、 Jeddak-DPSQL在火山引擎的應(yīng)用驗(yàn)證

1.Jeddak-DPSQL已接入火山引擎的增長(zhǎng)分析(finder)、A/B 測(cè)試等產(chǎn)品,間接服務(wù)300+外部客戶,日均處理查詢請(qǐng)求 200+。Jeddak-DPSQL服務(wù)不僅幫助業(yè)務(wù)滿足了隱私保護(hù)和業(yè)務(wù)合規(guī)的需求,同時(shí)也成為創(chuàng)新型隱私計(jì)算技術(shù)應(yīng)用的典范案例。

2.開放隱私計(jì)算OpenMPC對(duì)外公布了“隱私計(jì)算2021年度優(yōu)秀應(yīng)用案例TOP10”。火山引擎云安全憑借“融合差分隱私的火山引擎DPSQL服務(wù)”案例,成功入選TOP10。

二、如何使用Jeddak-DPSQL

GitHub 開源項(xiàng)目地址:https://github.com/bytedance/Jeddak-DPSQL

1. 下載

#FormatImgID_4#

2. 快速部署

完成Jeddak-DPSQL下載后,按照README中的部署引導(dǎo)部分完成服務(wù)部署,整個(gè)部署過程包括以下步驟:

●服務(wù)依賴包安裝:進(jìn)入項(xiàng)目根目錄,使用pip install -r requirements.txt安裝服務(wù)所需完整pip包

●metaData存儲(chǔ)準(zhǔn)備:在使用DPSQL時(shí),需要維護(hù)源數(shù)據(jù)表的metaData信息,為后續(xù)加噪計(jì)算敏感度作準(zhǔn)備。Jeddak-DPSQL使用Mysql對(duì)相應(yīng)元數(shù)據(jù)信息進(jìn)行存儲(chǔ),因此需要用戶提前在自己的Mysql數(shù)據(jù)庫中創(chuàng)建相應(yīng)的表

●隱私預(yù)算消耗存儲(chǔ)準(zhǔn)備:使用Jeddak-DPSQL系統(tǒng)過程,可以記錄對(duì)表級(jí)別的數(shù)據(jù)查詢時(shí)的隱私預(yù)算消耗。主要通過Mysql進(jìn)行記錄,因此需要用戶提前在自己的Mysql數(shù)據(jù)庫中創(chuàng)建相應(yīng)的表

●數(shù)據(jù)庫連接配置:Jeddak-DPSQL中使用數(shù)據(jù)庫主要有Mysql和Redis,因此需要對(duì)這兩個(gè)數(shù)據(jù)庫連接地址進(jìn)行配置

●服務(wù)啟動(dòng):完成上述配置后可以在項(xiàng)目根目錄運(yùn)行bootstrap.sh腳本啟動(dòng)服務(wù)

3. 正式使用

完成Jeddak-DPSQL部署后,按照README中的快速開始部分可以進(jìn)行功能體驗(yàn),整個(gè)過程如下:

●選擇要測(cè)試的數(shù)據(jù)源(Hive或ClickHouse),導(dǎo)入要進(jìn)行查詢測(cè)試的原始數(shù)據(jù)集

●初始化metadata和隱私預(yù)算

○生成 metadata

啟動(dòng)dpsql服務(wù)后, 調(diào)用接口 /api/v1/metadata/generate,生成metadata,可參考:

4.jpg

○確認(rèn)metadata 生成完成

調(diào)用 /api/v1/metadata/get 接口,確認(rèn) metadata 生成完成

5.jpg

●調(diào)用隱私保護(hù)查詢接口,獲得經(jīng)過差分隱私保護(hù)的查詢結(jié)果

6.jpg

更多接口使用方式可以參考項(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)。(作者:崔世高)

舉報(bào) 0 收藏 0 打賞 0評(píng)論 0
 
 
更多>同類資訊
全站最新
熱門內(nèi)容
網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系方式  |  版權(quán)聲明  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報(bào)  |  開放轉(zhuǎn)載  |  滾動(dòng)資訊  |  English Version