关于日志:日志脱敏之后无法根据信息快速定位怎么办

46次阅读

共计 1315 个字符,预计需要花费 4 分钟才能阅读完成。

日志脱敏之殇

小明同学在一家金融公司下班,为了满足安全监管要求,最近天天忙着做日志脱敏。

无意间看到了一篇文章金融用户敏感数据如何优雅地实现脱敏?感觉写的不错,用起来也很不便。

不过日志脱敏之后,新的问题就诞生了:日志脱敏之后,很多问题无奈定位。

比方身份证号日志中看到的是 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'}

这样就能够通过明文,获取对应的哈希值,而后搜寻日志了。

新的问题

不过小明还是感觉不是很称心,因为有很多零碎是曾经存在的。

如果全副用注解的形式实现,就会很麻烦,也很难推动。

应该怎么实现呢?

小伙伴们有什么好的思路?欢送评论区留言

正文完
 0