0

我们有数百万个非常敏感的文档(docx、pfd、xlsx 等)由客户上传到我们的应用程序中。在我们的应用程序中,我们使用 Sphinx 在这些文档中进行全文搜索。流程如下:

  1. 通过应用表单上传
  2. 文档中的纯文本抓取器
  3. 将文档存储到加密的 S3 存储桶
  4. 将抓取的纯文本存储到 MySQL 数据库中
  5. 从 MySQL DB 明文到存储在 SSD 上的 Sphinx 索引的索引器

由于安全和性能问题,我们必须完全重建上述流程。MySQL数据库中的纯文本是这个解决方案中最大的“nono”,但我们必须分析市场上任何可能的解决方案。文件的安全和加密是业务的重中之重。除此之外,Sphinx 本身的问题是每周一次。

任何对文档解决方案中的搜索引擎和全文搜索有经验的人——我很想听听您的意见。

4

1 回答 1

1

特别是 sphinx,有 XMLPipe(或 TSVPipe)索引器方法。这是索引器而不是读取“数据库”的地方,它执行脚本并对输出进行索引。

因此,可以通过脚本下载加密数据、解密并通过管道输出内容。即,解密的数据永远不会直接“存储”。

或者可以在 mysql https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html#function_aes-encrypt中使用本机加密做类似的事情 数据可以在数据库中加密,然后解密'在索引期间即时'。

另请注意,虽然搜索索引实际上并未加密,但它是一个“反向索引”,因此虽然理论上可以重建单词,但它只是原始单词,而不是原始形式的完整文档。如果您愿意牺牲一些结果的准确性,也许可以启用无中断索引。这意味着甚至无法重新构建文件。知道每个文档中的单词,但不知道实际的顺序。

或者可以使用不存储实际单词的 dict=crc,只存储单词的散列版本。这使得重建非常困难(但并非完全不可能)。因为需要计算彩虹表来重建文档。

于 2020-10-12T14:58:17.913 回答