大資料發展速度飛快,大資料的價值也有目共睹,在大資料技術領域,對於分析效能,實時性等方面都有了很大的突破,但資料安全問題在資料業務建立初期很難被重視,而資料規模壯大後才開始重視,以致大多數企業大資料平臺安全管控能力普遍缺失。。現今資料安全問題頻發,而且一旦發生就會對公司造成很嚴重的利益甚至聲譽損害。
資料安全引發的問題代價極高,後果嚴重,而我們又不能保證伺服器永遠不會被攻擊,所以,及時止損才是關鍵,大資料脫敏正是這關鍵的一個環節。有了資料脫敏,就可以隨時保護使用者隱私,防止重要資訊洩露,即使伺服器被攻擊或有內鬼,也不擔心敏感資料被帶走。看來既要防外賊又要防內鬼,任重道遠啊…
所以資料脫敏是大資料處理鏈路中重要的一環,建立大資料脫敏體系平臺迫在眉睫。
資料脫敏定義資料脫敏(Data Masking),又稱資料漂白、資料去隱私化或資料變形。對敏感資訊透過脫敏規則進行資料的變形,模糊化,偽裝從而實現敏感隱私資料 的可靠保護。資料脫敏後,就可以在開發、測試和其它非生產環境以及外包環境中安全地使用脫敏後的真實資料集。
目標針對大資料敏感資料資訊,設計並落實敏感資料安全解決方案,實現敏感資料的模糊化,確保敏感資料資訊保安可靠透過大資料平臺安全方案的建設,填補大資料平臺數據安全防護方面的空缺,有效降低大資料安全管控方面的風險發生資料洩露時風險可控可管控的資料脫敏平臺,結合使用者認證和許可權管理以及隱私資料級別實現基於審批模式的資料訪問資料分析與資料脫敏是矛盾的,要做到同時兼顧資料安全和資料使用,保證資料安全的同時最大化資料的分析價值做到資料審計,發生資料洩露時方便快速定位洩露原因難點海量存量資料已經形成主要涉及系統和數倉兩個層面,應用多,應用環境複雜主動發現敏感資料困難原則脫敏通常多數情況是不可逆的,但也有要求可以恢復原始資料的場景脫敏後資料通常應具有原資料的特徵,適用於開發和測試環境,而不是無意義的字串,比如銀行卡號前四位表示銀行名稱脫敏後這四位也保持不變;資料要求高時,可能要做到脫敏後資料與原始資料頻率分佈一致,欄位唯一性等資料 關聯關係要保留 , 業務規則關聯性保證 ,如主鍵外來鍵資料脫敏後在另一個表仍然能關聯到,如賬戶類資料往往會貫穿主體的所有關係和行為資訊需要特別注意保證所有相關主體資訊的一致性所有可能生成敏感資料的非敏感欄位同樣需要脫敏,要面對根據非敏感欄位能推匯出敏感資訊的場景脫敏過程自動化可重複,脫敏結果穩定準確,多次脫敏後資料始終一致資料脫敏流程分為 敏感資料發現 -> 敏感資料梳理 -> 脫敏方案制定 -> 脫敏任務執行
敏感資料發現敏感資料發現分為人工和自動兩種,一般是以自動為主結合人工輔助。人工可以指定資料脫敏規則、敏感資料特徵和不同資料的脫敏策略。自動識別是根據人工指定的敏感資料特徵,藉助敏感資料資訊庫和分詞系統自動識別敏感資訊,相對於人工方式,自動識別可以減少工作量和防止疏漏。敏感資料發現是一個閉環過程,不斷最佳化和完善敏感資料資訊庫。
敏感資料梳理在敏感資料發現的基礎上,梳理敏感資料列,敏感資料關聯關係,不同型別資料的不同脫敏方式,保證清晰的脫敏後關聯關係。
敏感資訊欄位的名稱、敏感級別、欄位型別、欄位長度、賦值規範等內容在這一過程中明確,用於下面脫敏策略制定的依據。
脫敏方案制定針對不同業務的資料脫敏需求,在已有脫敏演算法基礎上定製脫敏策略。該步主要透過脫敏策略複用不同脫敏演算法實現。
脫敏任務執行安排脫敏任務,定時跑批,並行處理,斷點續延,容錯…
脫敏演算法有幾種通用演算法,也有要根據業務需求和資料來定製的脫敏演算法如k-匿名,L-多樣性,資料抑制,資料擾動,差分隱私等…
脫敏規則分為 可恢復 和 不可恢復 兩種型別的脫敏規則
目標:建立資料脫敏規則演算法庫
替代用偽裝資料完全替換源資料中的敏感資料,替代是最常用的資料脫敏方法
具體操作:
常數替代(所有敏感資料都替換為唯一的常數值)查表替代(從中間表中隨機或按照特定演算法選擇資料進行替代,中間表的設計非常關鍵)引數化替代(以敏感資料作為輸入,透過特定函式形成新的替代資料)具體使用哪種操作取決於效率、業務需求等因素間的平衡特點:能夠徹底的脫敏單類資料,但也會使相關欄位失去業務含義隨機變換對待脫敏資料透過隨機函式調整,是一種常用脫敏方法
隨機函式邏輯:
數值型別隨機增減百分比日期型別隨機增加天數String型別數字變隨機數字,字母變隨機字母特點:能保持資料特徵和業務含義例子:abc123 -> drh428混洗對敏感欄位資料跨行隨機互換來破壞原有資料實現脫敏
特點:保證了欄位的資料範圍,資料特徵和業務含義,但犧牲了安全性,有被還原的可能
例子:20201024 -> 20180112
加密加密待脫敏的資料,使用方透過不同的金鑰來解密得到原始資料,使用較少
特點:不保證資料特徵和業務含義,存在安全隱患如金鑰洩露和加密強度不夠,耗費叢集算力
例子:abc -> TH3Wwi2wif51ga
遮擋對敏感資料用*或x等字元遮擋從而加密資料,是常用脫敏方式
特點:保持資料特徵格式,脫敏效果好
例子:18612346666 -> 186xxxx66xx
Hash對映將資料對映為Hash值
特點:不能保證資料特徵和業務含義,可以將長度不一的資料變為相同長度
例子:zwdwf -> 710057965
偏移類似於加鹽,對資料增加一個固定的偏移量
特點:隱藏數值的部分特徵
例子:253 -> 1253
截斷只保留資料的某幾位,其餘位截斷
例子:0421-88888 -> 0421
唯一值對映將資料對映為唯一的一個值,透過對映表找回原有的值
區域性混淆前幾位不變,後面位置資料混淆
脫敏環境資料脫敏環境細分為生產環境和非生產環境(開發、測試、預釋出、外包、資料分析等)
根據脫敏環境的具體場景將脫敏分為:
靜態資料脫敏SDM(Static Data Masking)一般用在非生產環境,資料是從生產環境經過脫敏後再在非生產環境使用。解決的問題:測試環境開發庫需要生產庫的資料量和資料格式方便排查問題或進行分析,但又不能將敏感資料放在非生產環境的場景動態資料脫敏DDM(Dynamic Data Masking)一般同在生產環境,訪問敏感資料時進行動態脫敏。解決的問題:生產環境根據不同場景不同使用者對敏感資料採用不同脫敏級別和脫敏演算法進行脫敏大資料脫敏技術方案先上一個總體的腦圖: 資料脫敏腦圖XMIND
批次資料脫敏先將資料同步到資料倉庫的一箇中間表,然後透過一些自定義的脫敏函式udf進行資料脫敏,然後將未脫敏的中間表刪除或透過許可權管控起來即可。對於存量資料也是經過UDF處理後得到脫敏資料。手機號脫敏UDF示例:package top.shmily.qjj; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.UDF; // 上傳udf jar到叢集 hdfs dfs -put udf-1.0-SNAPSHOT-jar-with-dependencies.jar /tmp/udf_path/ // 修改檔案許可權 hdfs dfs -chmod -R 777 hdfs:///tmp/udf_path/ // 註冊udf函式 create function tmp.pul as 'top.shmily.qjj.PhoneUnlookUdf' using jar 'hdfs:///tmp/udf_path/udf-1.0-SNAPSHOT-jar-with-dependencies.jar public class PhoneUnlookUdf extends UDF { //重寫evaluate方法 public String evaluate(String phone){ if (phone.length() == 11){ String res = phone.substring(0, 3) + "****" + phone.substring(7, phone.length()); return res; } else { return phone; } } }使用ApacheRanger進行數倉Hive表資料進行脫敏Apache Ranger對Hive資料支援兩種脫敏方式:行過濾(Row Filter)和列遮蔽(Column Masking)。它可對Select結果進行行列級別資料脫敏,從而達到對使用者遮蔽敏感資訊的目的。脫敏更多的是用到Ranger的列遮蔽,可用不同策略對不同列脫敏,列遮蔽支援的策略:Redact策略:用x遮蔽所有字母字元,用n遮蔽所有數字字元。Partial mask-show last 4 策略:僅顯示最後四個字元,其他用x代替。Partial mask-show first 4 策略:僅顯示前四個字元,其他用x代替。Hash策略:用值的雜湊值替換原值。Nullify策略:用NULL值替換原值。Unmasked策略:原樣顯示。Date-show only year策略:僅顯示日期字串的年份部分,並將月份和日期預設為01/01。Custom策略:可使用任何有效Hive UDF(返回與被遮蔽的列中的資料型別相同的資料型別)來自定義策略。但Ranger對系統各個元件依賴較嚴格,版本有差異都會編譯失敗,可以參考Ranger的Plugin中許可權相關實現類的實現方法,利用Ranger的思想自己編寫許可權控制和脫敏邏輯。使用 Apache ShardingSphere 實現資料脫敏Apache ShardingSphere是一套開源的分散式資料庫中介軟體解決方案由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(規劃中)這3款相互獨立,卻又能夠混合部署配合使用的產品組成。它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全相容JDBC和各種ORM框架。資料脫敏模組屬於ShardingSphere分散式資料治理這一核心功能下的子功能模組。它透過對使用者輸入的SQL進行解析,並依據使用者提供的脫敏配置對SQL進行改寫,從而實現對原文資料進行加密,並將原文資料(可選)及密文資料同時儲存到底層資料庫。在使用者查詢資料時,它又從資料庫中取出密文資料,並對其解密,最終將解密後的原始資料返回給使用者。Apache ShardingSphere分散式資料庫中介軟體自動化&透明化了資料脫敏過程,讓使用者無需關注資料脫敏的實現細節,像使用普通資料那樣使用脫敏資料。此外,無論是已線上業務進行脫敏改造,還是新上線業務使用脫敏功能,ShardingSphere都可以提供一套相對完善的解決方案。具體可參考 詳細文件 和 官網 。修改ThriftServer原始碼,在ThriftServer端使用Antlr4解析SQL,匹配脫敏規則庫後針對敏感欄位自動套用UDF並提交執行。(JDBC端修改不知道是不是也可行,感覺ThriftServer原始碼改起來更簡單點)實時資料脫敏實時資料結合歷史資料透過中介軟體進入Flink或Storm程式,這時只有實時資料,不適用基於全量資料的脫敏演算法,所以結合歷史資料和相應演算法進行實時脫敏。資料安全審計資料安全審計,目前業界常用的就是ELK(Es+LogStash+Kibana),下面是用於大資料審計的流程