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