在數據倉庫建設過程當中,數據安全扮演着重要角色,由於隱私或敏感數據的泄露,會對數據主體(客戶,員工和公司)的財產、名譽、人身安全、以及合法利益形成嚴重損害。所以咱們須要嚴格控制對倉庫中的數據訪問,即什麼樣的人員或者需求才能夠訪問到相關的數據。這就要求對數據自己的敏感程度進行安全級別劃分。數據有了安全等級的劃分,才能更好管理對數據訪問控制,以此來保護好數據安全。前端
舉個例子簡單的說明下,例如咱們倉庫中有一張關於註冊用戶的基本信息表User,其中有手機號mobile,暱稱username兩個字段。咱們在劃分數據安全層級的時,將用戶mobile的安全等級劃分爲L2要高於username的等級L1,並規定只有訪問權限達到L2的運營部門才能訪問mobile字段。這樣在公司各個部門須要訪問註冊用戶基本信息表User時,咱們只需檢查訪問者是否來自運營部門,若是是運營部能夠訪問mobile,若是不是隻能訪問username信息了。這樣就有效的防止用戶手機號被不相關工做人員泄露出去,同時也不影響查詢用戶username的需求。算法
可是每每在實際生產過程當中,應用場景會更加複雜,僅靠相似這樣的訪問控制,知足不了生產的須要,還須要結合其它的途徑,而數據脫敏就是一種有效的方式,既能知足平常生產的須要,又能保護數據安全。安全
數據脫敏,具體指對某些敏感信息經過脫敏規則進行數據的變形,實現敏感隱私數據的可靠保護。這樣可使數據自己的安全等級降級,就能夠在開發、測試和其它非生產環境以及外包或雲計算環境中安全地使用脫敏後的真實數據集。藉助數據脫敏技術,屏蔽敏感信息,並使屏蔽的信息保留其原始數據格式和屬性,以確保應用程序可在使用脫敏數據的開發與測試過程當中正常運行。架構
在數據脫敏進行以前,咱們首先要肯定哪些數據要做爲脫敏的目標。咱們根據美團特有的業務場景和數據安全級別劃分(絕密、高保密、保密、可公開,四個級別), 主要從「高保密」等級的敏感數據,開始進行梳理。app
這裏咱們把敏感數據分紅四個維度進行梳理,用戶、商家、終端、公司。工具
梳理出了敏感數據字段,咱們接下來的工做就是如何根據特定的應用場景對敏感字段實施具體的脫敏處理方法。測試
常見的處理方法以下幾種有:網站
但無論哪一種手段都要基於不一樣的應用場景,遵循下面兩個原則:雲計算
1.remain meaningful for application logic(儘量的爲脫敏後的應用,保留脫敏前的有意義信息) 2.sufficiently treated to avoid reverse engineer(最大程度上防止黑客進行破解)加密
以此次脫敏一個需求爲例:
美團通常的業務場景是這樣的,用戶在網站上付款一筆團購單以後,咱們會將團購密碼,發到用戶對應的手機號上。這個過程當中,從用戶的角度來看團購密碼在未被用戶消費以前,對用戶來講是要保密的,不能被公開的,其次美團用戶的手機號也是要保密的,由於公開以後可能被推送一些垃圾信息,或者更嚴重的危害。從公司內部數據分析人員來看,他們有時雖然沒有權限知道用戶團購密碼,可是他們想分析公司發送的團購密碼數量狀況,這是安全容許;再有數據分析人員雖然沒有權限知道用戶具體的手機號碼,可是他們須要統計美團用戶手機的地區分佈狀況,或者運營商分佈差別,進而爲更上層的決策提供支持。
根據這樣的需求,咱們能夠對團購密碼作加密處理保證其惟一性,也保留其原有的數據格式,在保密的同時不影響數據分析的需求。一樣,咱們將用戶的手機號碼的前7位,關於運營商和地區位置信息保留,後四位進行模糊化處理。這樣一樣也達到了保護和不影響統計的需求。
所以從實際出發遵循上面的兩個處理原則,第一階段咱們在脫敏工具集中,肯定了以下4種基本類型的脫敏方案(對應4個udf):
字段名稱 | 方案 | 舉例 | 原則 |
---|---|---|---|
電話號碼(moblie) | 掩碼 | 13812345678-> 13812340000 | 防止號碼泄露,但保留運營商和地區信息 (惟一性,由前端綁定或者註冊時約束) |
郵件(email) | 截斷+ 加密 | hxs@163.com -> 6225888e3a1d4a139f5f5db98d846102b2cd0d@163.com | 保留郵件域信息 |
團購密碼(code) | 加密 | 4023926843399219 -> 1298078978 | 加密後在必定精度上保持惟一性,並與數據類型一致 |
設備號(deviceid) | 加密 | ffbacff42826302d9e832b7e907a212a -> b9c2a61972a19bf21b06b0ddb8ba642d | 加密後保持惟一性 |
經過上面字段的梳理和脫敏方案的制定,咱們對美團數據倉庫中涉及到得敏感字段的表進行脫敏處理。在數據倉庫分層理論中,數據脫敏每每發生在上層,最直接的是在對外開放這一層面上。在實際應用中,咱們既要參考分層理論,又要從美團現有數據倉庫生產環境的體系出發,主要在數據維度層(dim),以及基礎服務數據層(fact)上實施脫敏。這樣,咱們能夠在下游相關數據報表以及衍生數據層的開發過程當中使用脫敏後的數據,從而避免出現數據安全問題。
確認處理的表和字段後,咱們還要確保相關上下游流程的正常運行, 以及未脫敏的敏感信息的正常產出與存儲(經過更嚴格的安全審覈來進行訪問)。
以用戶信息表user爲例,脫敏步驟以下:
1.首先生產一份ndm_user未脫敏數據,用於未脫敏數據的正常產出。 2.對下游涉及的全部依賴user生產流程進行修改,來確保脫敏後的正常運行,這裏主要是確認數據格式,以及數據源的工做。 3.根據對應的脫敏方法對user表中對應的字段進行脫敏處理。
經過上面的幾個步驟的實施,咱們完成了第一階段的數據脫敏工做。在數據脫敏方案設計與實施過程當中, 咱們以爲更重要的仍是從特定的應用場景出發進行總體設計,兼顧了數據倉庫建設這一重要考量維度。數據脫敏實施爲公司數據安全的推動,提供了有力支持。固然,咱們第一階段脫敏的工具集還相對較少,須要補充。 脫敏的技術架構還有待完善和更加自動化。
本文關於數據安全和數據訪問隔離的控制闡述較少,但願經過之後的生產實踐,繼續爲你們介紹。