【问题标题】:Scanning and finding sensitive data in an Elasticsearch index in an efficient way以有效的方式扫描和查找 Elasticsearch 索引中的敏感数据
【发布时间】:2021-01-19 18:08:51
【问题描述】:

我所拥有的: 用于全文搜索的弹性搜索数据库。

我的要求是:在给定的elasticsearch索引中,我需要检测一些敏感数据,比如iban no、credit card no、passport no、social security no、地址等,并将它们报告给客户端。将有复选框作为输入参数。例如,客户可以选择信用卡号和护照号,然后点击检测按钮。之后,系统将开始扫描索引,并报告包括信用卡号和护照号在内的文件。它旨在拥有超过 200 种敏感数据类型,并且客户端将能够对这些类型进行多项选择。

我做了什么:我创建了一个 C# 应用程序并使用 Nest 库进行 ES 查询。为了检测每种敏感数据类型,我在我的 C# 应用程序中创建了正则表达式和一些特殊的验证规则,它们适用于手动输入的字符串。

在我的 C# 应用程序中,我使用滚动 API 创建了一个匹配所有查询。当用户点击检测按钮时,我的应用程序正在迭代从滚动 api 返回的所有源记录,并且对于每条记录,应用程序正在根据客户端的选择执行敏感数据查找器代码。

这里的问题是搜索 ES 索引中的所有源记录,提取敏感数据并在大量文档的情况下尽可能快地准备报告。我知道 ES 是为全文搜索而设计的,而不是为扫描整个系统和带来数据而设计的。但是现在所有数据都在elasticsearch中,我需要使用这个db来进行检测操作。

我想知道我是否可以用一种不同的有效方式来做到这一点。这个问题可以通过编写没有 C# 应用程序的弹性搜索插件来解决吗?或者有没有更好的解决方案来扫描 ES 索引中的整个源数据?

感谢您的建议。

【问题讨论】:

    标签: elasticsearch nest elasticsearch-plugin


    【解决方案1】:
    1. 护照号码,其他敏感信息检测算法应该在索引期间运行一次,或者可能作为一个单独的作业异步运行,该作业将使用代表敏感信息存在的标志更新文档。根据标志可以搜索相关文件。

    2. 在这种情况下,搜索时间分析将非常昂贵,应该避免。

    【讨论】:

    • 是的,在索引期间可以检测到敏感数据类型。但是,假设我已经更改或改进了信用卡检测算法。在这种情况下,我必须查询所有文档并再次执行检测器引擎。此外,随着时间的推移,我可以将其他敏感数据类型添加到系统中。虽然我可以构建一个标志机制,但我需要查询和更新整个索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2012-01-31
    • 2019-08-26
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多