当前位置: 首页 > 知识库问答 >
问题:

以有效的方式扫描和查找 Elasticsearch 索引中的敏感数据

淳于禄
2023-03-14

我有什么:用于全文搜索目的的弹性搜索数据库。

我的要求是:在给定的 elasticsearch 索引中,我需要检测一些敏感数据,如 iban no、信用卡号、护照号、社会保障号、地址等,并将其报告给客户。将有复选框作为输入参数。例如,客户可以选择信用卡号和护照号,然后单击检测按钮。之后,系统将开始扫描索引,并报告包括信用卡号和护照号的文件。它的目标是拥有 200 多种敏感数据类型,客户端将能够对这些类型进行多次选择。

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

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

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

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

感谢您的建议。

共有1个答案

赵镜
2023-03-14

>

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

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

  •  类似资料:
    • 我有一个ArrayList,从ArrayList的末尾(即使用add(object)方法)以串行方式(即逐个)填充Integer类型的对象。每次我这样做,ArrayList中的其他对象都会左移一个索引。 在我的代码中,我想在ArrayList中找到一个随机对象的索引。我想避免使用indexOf方法,因为我有一个非常大的ArrayList,循环将花费大量时间。有什么解决办法吗?如何在某些数据结构中保

    • 本文向大家介绍在SQL SERVER中导致索引查找变成索引扫描的问题分析,包括了在SQL SERVER中导致索引查找变成索引扫描的问题分析的使用技巧和注意事项,需要的朋友参考一下 SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方面结合上下文具体场景做了下测试、总结、归纳。 1:隐式转换会导致执行计划从索引查找(

    • 本文向大家介绍Python 实现敏感目录扫描的示例代码,包括了Python 实现敏感目录扫描的示例代码的使用技巧和注意事项,需要的朋友参考一下 01 实现背景 1、PHPdict.txt,一个文本文件,包含可能的敏感目录后缀 2、HackRequests模块,安全测试人员专用的类Requests模块 02 实现目标 利用HackRequests模块,配合敏感目录字典PHPdict.txt,实现一个

    • 问题内容: 有什么方法可以使搜索查询的重音不敏感吗? 列和表的排序规则是utf8_polish_ci,我不想更改它们。 例句:toruń 它找不到“toruń”。我怎样才能做到这一点? 问题答案: 您可以在运行时在sql查询中更改排序规则, 但是请注意,在运行时即时更改排序规则会放弃mysql使用索引的可能性,因此大型表的性能可能很糟糕。 或者,您可以将列复制到另一列,例如,但是更改其排序规则。这

    • 问题内容: 我知道索引 查找 比索引 扫描 更好,但是在SQL Server解释计划中它更可取:索引查找或键查找(在SQL Server 2000中为书签)? 请告诉我,他们没有再次更改SQL Server 2008的名称… 问题答案: 每次索引检索。 查找非常昂贵,因此它涵盖了索引,尤其是添加了INCLUDE子句以使索引更好。 举例来说,假设您只希望一行,那么在查找后进行查找可能比尝试覆盖查询要

    • 问题内容: 我有以下查询 当我运行它并检查实际的执行计划时,我可以看到最昂贵的运算符是聚集索引扫描(索引位于a.pred上) 但是,如果我按以下方式更改查询 消除了索引扫描,并使用了索引查找。 有人可以解释为什么吗?在我看来,这与以下事实有关:变量中的值可以是任何值,因此SQL不知道如何计划执行。 有什么办法可以消除表扫描但仍然可以使用变量?(PS,它将转换为以@StartDate和@EndDat

    • 问题内容: 似乎在elasticsearch中,您将在集合上定义索引,而在关系数据库中,您将在列上定义索引。如果整个集合都已建立索引,为什么需要对其进行定义? 问题答案: 不幸的是,使用了“索引”一词,这意味着ES和关系数据库中的一些事物(在编辑中非常不同),因为它们针对不同的用例进行了优化。 数据库中的“索引”是辅助数据结构,它使查询和查询变得快速,并且它们通常存储的值与表中显示的值完全相同。您

    • DynamoDb文档中指定的查询操作: 查询操作仅搜索主键属性值,并支持对键属性值的比较运算符子集以优化搜索过程。 和扫描操作: 扫描操作扫描整个表。您可以指定要应用于结果的过滤器,以在完成扫描后优化返回给您的值。 这是基于性能和成本考虑的最佳选择。