數據脫敏問題

一、什麼是數據脫敏?

  數據脫敏(Data Masking),又稱數據漂白、數據去隱私化或數據變形。 
   
  百度百科對數據脫敏的定義爲:指對某些敏感信息通過脫敏規則進行數據的變形,實現敏感隱私數據的可靠保護。在涉及客戶安全數據或者一些商業性敏感數據的情況下,在不違反系統規則條件下,對真實數據進行改造並提供測試使用,如身份證號、手機號、卡號、客戶號等個人信息都需要進行數據脫敏。 
   
  生活中不乏數據脫敏的例子,比如我們最常見的火車票、電商收貨人地址都會對敏感信息做處理,甚至女同志較熟悉的美顏、有些視頻中的馬賽克都屬於脫敏。 


二、爲什麼要進行數據脫敏?

  上面說到,在“涉及客戶安全數據或者一些商業性敏感數據的情況下”對數據進行改造,說明我們要進行改造的數據是涉及到用戶或者企業數據的安全,進行數據脫敏其實就是對這些數據進行加密,防止泄露。 
  

  對於脫敏的程度,一般來說只要處理到無法推斷原有的信息,不會造成信息泄露即可,如果修改過多,容易導致丟失數據原有特性。因此,在實際操作中,需要根據實際場景來選擇適當的脫敏規則。改姓名,身份證號,地址,手機號,電話號碼等幾個客戶相關字段。

三、如何實現數據脫敏

  按照脫敏規則,可以分爲可恢復性脫敏和不可恢復性脫敏。可恢復性脫敏就是數據經過脫敏規則的轉化後,還再次可以經過某些處理還原出原來的數據,相反,數據經過不可恢復性脫敏之後,將無法還原到原來的樣子,可以把二者分別看做可逆加密和不可逆加密。

  我們目前遇到的場景是日誌脫敏,即在把日誌中的密碼,甚至姓名、身份證號等信息都進行脫敏處理。 
   
  脫敏前: 
   


  脫敏後: 
   


  如上圖,仔細分析會發現,打日誌之前,獲得脫敏的數據就兩個步驟:【拿到要輸入的數據(user實體)】→【進行序列化】,所以要進行數據脫敏可以考慮在這兩個步驟上進行實現。第一個方法就是在序列化實體之前先把需要脫敏的字段進行處理,之後正常序列化;第二個方法就是在實體序列化的時候,對要脫敏的字段進行處理。
 

四、SQL數據脫敏實現

 

CONCAT()、LEFT()和RIGHT()字符串函數組合使用,請看下面具體實現

  • CONCAT(str1,str2,…):返回結果爲連接參數產生的字符串
  • LEFT(str,len):返回從字符串str 開始的len 最左字符
  • RIGHT(str,len):從字符串str 開始,返回最右len 字符

電話號碼脫敏sql:

SELECT mobilePhone AS 脫敏前電話號碼,CONCAT(LEFT(mobilePhone,3), ‘********’ ) AS 脫敏後電話號碼 
FROM t_s_user

身份證號碼脫敏sql:

SELECT idcard AS 未脫敏身份證, CONCAT(LEFT(idcard,3), ‘****’ ,RIGHT(idcard,4)) AS 脫敏後身份證號 
FROM t_s_user

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章