小白談資料脫敏

2021-09-22 23:56:47 字數 3819 閱讀 2556

資料脫敏是指對某些敏感資訊通過脫敏規則進行資料的變形,實現敏感隱私資料的可靠保護。在涉及客戶安全資料或者一些商業性敏感資料的情況下,在不違反系統規則條件下,對真實資料進行改造並提供測試使用,如身份證號、手機號、卡號、客戶姓名、客戶位址、等個人敏感資訊都需要通過脫敏規則進行資料的變形,實現敏感隱私資料的可靠保護。這樣就可以在開發、測試和其他非生產環境以及外包環境中可以安全的使用脫敏後的真實資料集。

1、火車票:

在進行資料脫敏之前我們應該要確定公司的哪些資料(哪些表、哪些字段)要作為脫敏的目標,下面從使用者、公司、賣家反面分析:

2、賣家:名字、手機號碼、身份證號碼、固定**等

3、公司:交易金額、優惠券碼、充值碼等

確定好了公司的哪些資料要作為脫敏目標後,我們就需要制定脫敏的規則(具體的實施方法)。

常見方法:

1、替換:如統一將女性使用者名稱替換為f,這種方法更像「障眼法」,對內部人員可以完全保持資訊完整性,但易破解。

2、重排:序號12345 重排為 54321,按照一定的順序進行打亂,很像「替換」, 可以在需要時方便還原資訊,但同樣易破解。

3、加密:編號 12345 加密為 23456,安全程度取決於採用哪種加密演算法,一般根據實際情況而定。

4、截斷:13811001111 截斷為 138,捨棄必要資訊來保證資料的模糊性,是比較常用的脫敏方法,但往往對生產不夠友好。(丟失欄位的長度)

5、掩碼: 123456 -> 1***x6,保留了部分資訊,並且保證了資訊的長度不變性,對資訊持有者更易辨別, 如火車票上得身份資訊。(常用方法)

6、日期偏移取整:20130520 12:30:45 -> 20130520 12:00:00,捨棄精度來保證原始資料的安全性,一般此種方法可以保護資料的時間分布密度。

目前我的脫敏規則想法是:

1、【中文姓名】只顯示第乙個漢字,其他隱藏為2個星號,比如:李**

2、【身份證號】顯示最後四位,其他隱藏。共計18位或者15位,比如:*************1234

3、【固定**】 顯示後四位,其他隱藏,比如:*******3241

4、【手機號碼】前三位,後四位,其他隱藏,比如:135****6810

7、【銀行卡號】前六位,後四位,其他用星號隱藏每位1個星號,比如:6222600**********1234

8、【密碼】密碼的全部字元都用代替,比如:*

根據以上規則進行資料脫敏!

具體思路目前是這樣的:

從原資料來源查詢到的生產資料 ——> 資料脫敏 ——> 更新到目標資料來源。

原資料來源、目標資料來源、需要脫敏的表、欄位等都放在配置檔案中,做到可擴充套件性!

根據以上規則已經寫好了乙份簡單的脫敏規則工具類。

/**

* 資料脫敏工具類

* created by zhisheng_tian on 2017/10/25.

*/public class desensitizedutils

string name = stringutils.left(fullname, 1);

return stringutils.rightpad(name, stringutils.length(fullname), "*");

}/**

* 【身份證號】顯示最後四位,其他隱藏。共計18位或者15位,比如:*************1234

** @param id

* @return

*/public static string idcardnum(string id)

string num = stringutils.right(id, 4);

return stringutils.leftpad(num, stringutils.length(id), "*");

}/**

* 【固定**】 顯示後四位,其他隱藏,比如:*******3241

** @param num

* @return

*/public static string fixedphone(string num)

return stringutils.leftpad(stringutils.right(num, 4), stringutils.length(num), "*");

}/**

* 【手機號碼】前三位,後四位,其他隱藏,比如:135****6810

** @param num

* @return

*/public static string mobilephone(string num)

return stringutils.left(num, 3).concat(stringutils.removestart(stringutils.leftpad(stringutils.right(num, 4), stringutils.length(num), "*"), "***"));

}/**

** @param address

* @param sensitivesize 敏感首席資訊官度

* @return

*/public static string address(string address, int sensitivesize)

int length = stringutils.length(address);

return stringutils.rightpad(stringutils.left(address, length - sensitivesize), length, "*");

}/**

** @param email

* @return

*/public static string email(string email)

int index = stringutils.indexof(email, "@");

if (index <= 1)

return email;

else

return stringutils.rightpad(stringutils.left(email, 1), index, "*").concat(stringutils.mid(email, index, stringutils.length(email)));

}/**

* 【銀行卡號】前六位,後四位,其他用星號隱藏每位1個星號,比如:6222600**********1234

** @param cardnum

* @return

*/public static string bankcard(string cardnum)

return stringutils.left(cardnum, 6).concat(stringutils.removestart(stringutils.leftpad(stringutils.right(cardnum, 4), stringutils.length(cardnum), "*"), "******"));

}/**

* 【密碼】密碼的全部字元都用*代替,比如:******

** @param password

* @return

*/public static string password(string password)

string pwd = stringutils.left(password, 0);

return stringutils.rightpad(pwd, stringutils.length(password), "*");}}

資料脫敏技術

敏感資料 如信用卡號碼 個人識別資訊 如社會安全號碼 醫療診斷和甚至非個人的敏感資料 例如公司財務資訊和智財權 的 是由於企業員工和外部人士濫用職權或工作失誤所致。資料脫敏技術的目是通過從客戶端隱藏敏感資料,以防止這些資料的濫用。技術 商提供了多種資料脫敏技術,例如用相似的字元替代一些字段 用遮蔽字...

資料脫敏問題

上面說到,在 涉及客戶安全資料或者一些商業性敏感資料的情況下 對資料進行改造,說明我們要進行改造的資料是涉及到使用者或者企業資料的安全,進行資料脫敏其實就是對這些資料進行加密,防止洩露。對於脫敏的程度,一般來說只要處理到無法推斷原有的資訊,不會造成資訊洩露即可,如果修改過多,容易導致丟失資料原有特性...

Oracle資料脫敏

簡介 所有涉及客戶資訊 姓名 聯絡 電子郵件位址 住址 收件位址 身份證號 護照號 信用卡號 的系統均不得在開發資料庫 測試資料庫中保留真實資料,均要進行資料脫敏。下邊直接進入正題,oracle資料處理 1.手機號脫敏 update table set 列 case when 列 is notnul...