问题描述
我们有数百万个确实敏感文件(docx,pfd,xlsx等)由客户上传到我们的应用程序中。在我们的应用程序中,我们具有Sphinx,可在这些文档中进行全文搜索。流程如下:
由于安全和性能问题,我们必须完全重建上述流程。 MysqL数据库中的纯文本是此解决方案中最大的“麻烦”,但是我们必须分析市场上任何可能的解决方案。文档的安全性和加密是业务的重中之重。此外,Sphinx本身的问题是每周一次。
任何在搜索引擎和文档解决方案中具有全文搜索经验的人-我很想听听您的意见。
解决方法
特别是使用狮身人面像,有XMLPipe(或TSVPipe)索引器方法。在这里,索引器而不是读取“数据库”,而是执行脚本并为输出建立索引。
因此,可以使用一个脚本来下载加密的数据,解密并通过管道输出内容。也就是说,解密后的数据永远不会直接“存储”。
或者可以使用mysql中的本机加密来做类似的事情 https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html#function_aes-encrypt 数据可以在数据库中加密,而在索引编制过程中只是“即时”解密。
还请注意,虽然实际上未对搜索索引进行加密,但它是一个“反向索引”,因此,从理论上说,仅从原始单词而不是原始格式的完整文档就可以重建单词。 如果您愿意在结果上牺牲一些准确性,那么也许可以启用无中断索引。这将意味着甚至无法重新构造文档。知道每个文档中的单词,但不知道实际顺序。
或者可以使用dict = crc,它不存储实际单词,仅存储单词的散列版本。这使得重建非常困难(但并非完全不可能)。正如计算彩虹表以重建文档一样。