日志脫敏之殤
小明同學(xué)在一家金融公司上班,為了滿足安全監(jiān)管要求,最近天天忙著做日志脫敏。
無意間看到了一篇文章金融用戶敏感數(shù)據(jù)如何優(yōu)雅地實現(xiàn)脫敏? 感覺寫的不錯,用起來也很方便。
不過日志脫敏之后,新的問題就誕生了:日志脫敏之后,很多問題無法定位。
比如身份證號日志中看到的是 3****************8,業(yè)務(wù)方給一個身份證號也沒法查日志。這可怎么辦?
安全與數(shù)據(jù)唯一性
類似于數(shù)據(jù)庫中敏感信息的存儲,一般都會有一個哈希值,用來定位數(shù)據(jù)信息,同時保障安全。
那么日志中是否也可以使用類似的方式呢?
說干就干,小明在開源項目 sensitive[1] 基礎(chǔ)上,添加了對應(yīng)的哈希實現(xiàn)。
使用入門
開源地址
https://Github.com/houbb/sensitive
使用方式
1)maven 引入
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>sensitive-core</artifactId>
<version>1.1.0</version>
</dependency>
2)引導(dǎo)類指定
SensitiveBs.newInstance()
.hash(Hashes.md5())
將哈希策略指定為 md5
3)功能測試
final SensitiveBs sensitiveBs = SensitiveBs.newInstance()
.hash(Hashes.md5());
User sensitiveUser = sensitiveBs.desCopy(user);
String sensitiveJson = sensitiveBs.desJson(user);
Assert.assertEquals(sensitiveStr, sensitiveUser.toString());
Assert.assertEquals(originalStr, user.toString());
Assert.assertEquals(expectJson, sensitiveJson);
可以把如下的對象
User{username='脫敏君', idCard='123456190001011234', password='1234567', emAIl='12345@qq.com', phone='18888888888'}
直接脫敏為:
User{username='脫**|00871641C1724BB717DD01E7E5F7D98A', idCard='123456**********34|1421E4C0F5BF57D3CC557CFC3D667C4E', password='null', email='12******.com|6EAA6A25C8D832B63429C1BEF149109C', phone='1888****888|5425DE6EC14A0722EC09A6C2E72AAE18'}
這樣就可以通過明文,獲取對應(yīng)的哈希值,然后搜索日志了。
新的問題
不過小明還是覺得不是很滿意,因為有很多系統(tǒng)是已經(jīng)存在的。
如果全部用注解的方式實現(xiàn),就會很麻煩,也很難推動。
應(yīng)該怎么實現(xiàn)呢?
小伙伴們有什么好的思路?歡迎評論區(qū)留言
References
[1] sensitive: https://github.com/houbb/sensitive