博客 / 詳情

返回

日誌脱敏之後,無法根據信息快速定位怎麼辦?

日誌脱敏之殤

小明同學在一家金融公司上班,為了滿足安全監管要求,最近天天忙着做日誌脱敏。

無意間看到了一篇文章金融用户敏感數據如何優雅地實現脱敏? 感覺寫的不錯,用起來也很方便。

不過日誌脱敏之後,新的問題就誕生了:日誌脱敏之後,很多問題無法定位。

比如身份證號日誌中看到的是 3****************8,業務方給一個身份證號也沒法查日誌。這可怎麼辦?

在這裏插入圖片描述

安全與數據唯一性

類似於數據庫中敏感信息的存儲,一般都會有一個哈希值,用來定位數據信息,同時保障安全。

那麼日誌中是否也可以使用類似的方式呢?

説幹就幹,小明在開源項目 sensitive 基礎上,添加了對應的哈希實現。

使用入門

開源地址

https://github.com/houbb/sensitive

使用方式

1)maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>sensitive-core</artifactId>
    <version>1.1.0</version>
</dependency>

2)引導類指定

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'}

這樣就可以通過明文,獲取對應的哈希值,然後搜索日誌了。

新的問題

不過小明還是覺得不是很滿意,因為有很多系統是已經存在的。

如果全部用註解的方式實現,就會很麻煩,也很難推動。

應該怎麼實現呢?

小夥伴們有什麼好的思路?歡迎評論區留言

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.