背景與目標(biāo)
在數(shù)據(jù)倉庫建設(shè)過程中,數(shù)據(jù)安全扮演著重要角色,因?yàn)殡[私或敏感數(shù)據(jù)的泄露,會(huì)對(duì)數(shù)據(jù)主體(客戶,員工和公司)的財(cái)產(chǎn)、名譽(yù)、人身安全、以及合法利益造成嚴(yán)重?fù)p害。因此我們需要嚴(yán)格控制對(duì)倉庫中的數(shù)據(jù)訪問,即什么樣的人員或者需求才可以訪問到相關(guān)的數(shù)據(jù)。這就要求對(duì)數(shù)據(jù)本身的敏感程度進(jìn)行安全級(jí)別劃分。數(shù)據(jù)有了安全等級(jí)的劃分,才能更好管理對(duì)數(shù)據(jù)訪問控制,以此來保護(hù)好數(shù)據(jù)安全。舉個(gè)例子簡單的說明下,例如我們倉庫中有一張關(guān)于注冊(cè)用戶的基本信息表User,其中有手機(jī)號(hào)mobile,昵稱username兩個(gè)字段。我們?cè)趧澐謹(jǐn)?shù)據(jù)安全層級(jí)的時(shí),將用戶mobile的安全等級(jí)劃分為L2要高于username的等級(jí)L1,并規(guī)定只有訪問權(quán)限達(dá)到L2的運(yùn)營部門才能訪問mobile字段。這樣在公司各個(gè)部門需要訪問注冊(cè)用戶基本信息表User時(shí),我們只需檢查訪問者是否來自運(yùn)營部門,如果是運(yùn)營部可以訪問mobile,如果不是只能訪問username信息了。這樣就有效的防止用戶手機(jī)號(hào)被不相關(guān)工作人員泄露出去,同時(shí)也不影響查詢用戶username的需求。但是往往在實(shí)際生產(chǎn)過程中,應(yīng)用場景會(huì)更加復(fù)雜,僅靠類似這樣的訪問控制,滿足不了生產(chǎn)的需要,還需要結(jié)合其它的途徑,而數(shù)據(jù)脫敏就是一種有效的方式,既能滿足日常生產(chǎn)的需要,又能保護(hù)數(shù)據(jù)安全。數(shù)據(jù)脫敏,具體指對(duì)某些敏感信息通過脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù)。這樣可以使數(shù)據(jù)本身的安全等級(jí)降級(jí),就可以在開發(fā)、測(cè)試和其它非生產(chǎn)環(huán)境以及外包或云計(jì)算環(huán)境中安全地使用脫敏后的真實(shí)數(shù)據(jù)集。借助數(shù)據(jù)脫敏技術(shù),屏蔽敏感信息,并使屏蔽的信息保留其原始數(shù)據(jù)格式和屬性,以確保應(yīng)用程序可在使用脫敏數(shù)據(jù)的開發(fā)與測(cè)試過程中正常運(yùn)行。
敏感數(shù)據(jù)梳理
在數(shù)據(jù)脫敏進(jìn)行之前,我們首先要確定哪些數(shù)據(jù)要作為脫敏的目標(biāo)。我們根據(jù)美團(tuán)特有的業(yè)務(wù)場景和數(shù)據(jù)安全級(jí)別劃分(絕密、高保密、保密、可公開,四個(gè)級(jí)別), 主要從“高保密”等級(jí)的敏感數(shù)據(jù),開始進(jìn)行梳理。這里我們把敏感數(shù)據(jù)分成四個(gè)維度進(jìn)行梳理,用戶、商家、終端、公司。
- 從用戶維度進(jìn)行梳理可能有這些敏感字段如下:手機(jī)號(hào)碼、郵件地址、賬號(hào)、地址、固定電話號(hào)碼等信息(此外個(gè)人隱私數(shù)據(jù)相關(guān)還有如:種族、政治觀點(diǎn)、宗教信仰、基因等)
- 從商家維度進(jìn)行梳理:合同簽訂人,合同簽訂人電話等(不排除全局敏感數(shù)據(jù):如商家團(tuán)購品類等)
- 從用戶終端維度進(jìn)行梳理:能夠可能標(biāo)識(shí)終端的唯一性字段,如設(shè)備id。
- 從公司角度進(jìn)行梳理:交易金額、代金卷密碼、充值碼等
確定脫敏處理方法
梳理出了敏感數(shù)據(jù)字段,我們接下來的工作就是如何根據(jù)特定的應(yīng)用場景對(duì)敏感字段實(shí)施具體的脫敏處理方法。常見的處理方法如下幾種有:
- 替換:如統(tǒng)一將女性用戶名替換為F,這種方法更像“障眼法”,對(duì)內(nèi)部人員可以完全保持信息完整性,但易破解。
- 重排:序號(hào)12345重排為54321,按照一定的順序進(jìn)行打亂,很像“替換”, 可以在需要時(shí)方便還原信息,但同樣易破解。
- 加密:編號(hào)12345加密為23456,安全程度取決于采用哪種加密算法,一般根據(jù)實(shí)際情況而定。
- 截?cái)啵?3811001111截?cái)酁?38,舍棄必要信息來保證數(shù)據(jù)的模糊性,是比較常用的脫敏方法,但往往對(duì)生產(chǎn)不夠友好。
- 掩碼: 123456 -> 1xxxx6,保留了部分信息,并且保證了信息的長度不變性,對(duì)信息持有者更易辨別, 如火車票上得身份信息。
- 日期偏移取整:20130520 12:30:45 -> 20130520 12:00:00,舍棄精度來保證原始數(shù)據(jù)的安全性,一般此種方法可以保護(hù)數(shù)據(jù)的時(shí)間分布密度。
但不管哪種手段都要基于不同的應(yīng)用場景,遵循下面兩個(gè)原則:
1.remain meaningful for application logic(盡可能的為脫敏后的應(yīng)用,保留脫敏前的有意義信息)
2.sufficiently treated to avoid reverse engineer(最大程度上防止黑客進(jìn)行破解)
以這次脫敏一個(gè)需求為例:美團(tuán)一般的業(yè)務(wù)場景是這樣的,用戶在網(wǎng)站上付款一筆團(tuán)購單之后,我們會(huì)將團(tuán)購密碼,發(fā)到用戶對(duì)應(yīng)的手機(jī)號(hào)上。這個(gè)過程中,從用戶的角度來看團(tuán)購密碼在未被用戶消費(fèi)之前,對(duì)用戶來說是要保密的,不能被公開的,其次美團(tuán)用戶的手機(jī)號(hào)也是要保密的,因?yàn)楣_之后可能被推送一些垃圾信息,或者更嚴(yán)重的危害。從公司內(nèi)部數(shù)據(jù)分析人員來看,他們有時(shí)雖然沒有權(quán)限知道用戶團(tuán)購密碼,但是他們想分析公司發(fā)送的團(tuán)購密碼數(shù)量情況,這是安全允許;再有數(shù)據(jù)分析人員雖然沒有權(quán)限知道用戶具體的手機(jī)號(hào)碼,但是他們需要統(tǒng)計(jì)美團(tuán)用戶手機(jī)的地區(qū)分布情況,或者運(yùn)營商分布差異,進(jìn)而為更上層的決策提供支持。根據(jù)這樣的需求,我們可以對(duì)團(tuán)購密碼做加密處理保證其唯一性,也保留其原有的數(shù)據(jù)格式,在保密的同時(shí)不影響數(shù)據(jù)分析的需求。同樣,我們將用戶的手機(jī)號(hào)碼的前7位,關(guān)于運(yùn)營商和地區(qū)位置信息保留,后四位進(jìn)行模糊化處理。這樣同樣也達(dá)到了保護(hù)和不影響統(tǒng)計(jì)的需求。
因此從實(shí)際出發(fā)遵循上面的兩個(gè)處理原則,第一階段我們?cè)诿撁艄ぞ呒校_定了如下4種基本類型的脫敏方案(對(duì)應(yīng)4個(gè)udf):
字段名稱 | 脫敏方法 | 舉例 | 脫敏原則 |
---|---|---|---|
電話號(hào)碼(moblie) | 掩碼 | 13812345678-> 13812340000 | 防止號(hào)碼泄露,但保留運(yùn)營商和地區(qū)信息 (唯一性,由前端綁定或者注冊(cè)時(shí)約束) |
郵件(email) | 截?cái)? 加密 | hxs@163.com -> 6225888e3a1d4a139f5f5db98d846102b2cd0d@163.com | 保留郵件域信息 |
團(tuán)購密碼(code) | 加密 | 4023926843399219 -> 1298078978 | 加密后在一定精度上保持唯一性,并與數(shù)據(jù)類型一致 |
設(shè)備號(hào)(deviceid) | 加密 | ffbacff42826302d9e832b7e907a212a -> b9c2a61972a19bf21b06b0ddb8ba642d | 加密后保持唯一性 |
確定實(shí)施范圍與步驟
通過上面字段的梳理和脫敏方案的制定,我們對(duì)美團(tuán)數(shù)據(jù)倉庫中涉及到得敏感字段的表進(jìn)行脫敏處理。在數(shù)據(jù)倉庫分層理論中,數(shù)據(jù)脫敏往往發(fā)生在上層,最直接的是在對(duì)外開放這一層面上。在實(shí)際應(yīng)用中,我們既要參考分層理論,又要從美團(tuán)現(xiàn)有數(shù)據(jù)倉庫生產(chǎn)環(huán)境的體系出發(fā),主要在數(shù)據(jù)維度層(dim),以及基礎(chǔ)服務(wù)數(shù)據(jù)層(fact)上實(shí)施脫敏。這樣,我們可以在下游相關(guān)數(shù)據(jù)報(bào)表以及衍生數(shù)據(jù)層的開發(fā)過程中使用脫敏后的數(shù)據(jù),從而避免出現(xiàn)數(shù)據(jù)安全問題。確認(rèn)處理的表和字段后,我們還要確保相關(guān)上下游流程的正常運(yùn)行, 以及未脫敏的敏感信息的正常產(chǎn)出與存儲(chǔ)(通過更嚴(yán)格的安全審核來進(jìn)行訪問)。以用戶信息表user為例,脫敏步驟如下:
1.首先生產(chǎn)一份ndm_user未脫敏數(shù)據(jù),用于未脫敏數(shù)據(jù)的正常產(chǎn)出。
2.對(duì)下游涉及的所有依賴user生產(chǎn)流程進(jìn)行修改,來確保脫敏后的正常運(yùn)行,這里主要是確認(rèn)數(shù)據(jù)格式,以及數(shù)據(jù)源的工作。
3.根據(jù)對(duì)應(yīng)的脫敏方法對(duì)user表中對(duì)應(yīng)的字段進(jìn)行脫敏處理。
總結(jié)
通過上面的幾個(gè)步驟的實(shí)施,我們完成了第一階段的數(shù)據(jù)脫敏工作。在數(shù)據(jù)脫敏方案設(shè)計(jì)與實(shí)施過程中, 我們覺得更重要的還是從特定的應(yīng)用場景出發(fā)進(jìn)行整體設(shè)計(jì),兼顧了數(shù)據(jù)倉庫建設(shè)這一重要考量維度。數(shù)據(jù)脫敏實(shí)施為公司數(shù)據(jù)安全的推進(jìn),提供了有力支持。當(dāng)然,我們第一階段脫敏的工具集還相對(duì)較少,需要補(bǔ)充。 脫敏的技術(shù)架構(gòu)還有待完善和更加自動(dòng)化。本文關(guān)于數(shù)據(jù)安全和數(shù)據(jù)訪問隔離的控制闡述較少,希望通過以后的生產(chǎn)實(shí)踐,繼續(xù)為大家介紹。
參考文獻(xiàn)如下:
https://tech.meituan.com/data-mask.html
http://en.wikipedia.org/wiki/Data_masking
http://www.prnews.cn/press_release/51034.htm