【问题标题】:How to implement Azure Cognitive Search with custom encrypted data in Azure Blob Storage如何在 Azure Blob 存储中使用自定义加密数据实现 Azure 认知搜索
【发布时间】:2020-07-25 00:11:26
【问题描述】:

我的应用程序在一个 Blob 存储帐户下为客户存储数据,并且为每个客户分配了一个特定的容器。
在容器下,特定客户的数据保存在多个 Append Blob 中,但是,数据使用自定义密钥加密,每个客户都有自己的特定密钥。
客户特定的密钥保存在数据库中,在将内容写入 Blob 之前,应用程序从数据库(基于客户)获取密钥,并对数据进行加密。
现在我必须对 Blob 存储中的数据实施搜索功能(以便每个客户都可以搜索他们的相关数据),Azure 认知搜索似乎是一个完美的解决方案。
但是,我无法根据文档了解如何实现对自定义加密数据的搜索。我找到的最好和最相关的文件是this。但是关于 Key-Vault 的讨论。
1. 我怎样才能实现对加密数据的搜索功能(甚至加密密钥也会根据客户而变化),密钥保存在数据库?
2. 是否可以使用一个 Azure 认知搜索来实现搜索,还是我需要为每个客户实施单独的搜索服务?

P.S:数据在加密并写入 Azure Blob 存储之前是 JSON 格式。

【问题讨论】:

    标签: azure-cognitive-search azure-search-.net-sdk


    【解决方案1】:

    编辑:我们现在有 a new tutorial article 一步一步地介绍这个场景,很想听听这是否有助于更轻松地解决问题。

    原始回复:

    这里有几个可能需要考虑的事情。

    是否需要使用搜索索引中指定的客户密钥对数据进行静态加密?如果是这样,您共享的文档将是做到这一点的最佳方式。这意味着您需要一种将客户特定密钥存储在 KeyVault 中的方法,然后根据 Azure 认知搜索索引引用该密钥(因此您需要为每个客户创建一个索引,但如果您不这样做,则可以使用一个整体的搜索服务过去the limits for the service tier you are using)。如果不需要使用搜索索引中的客户密钥进行加密,并且系统管理的加密很好,则不需要。

    不管该问题的答案如何,您是否尝试使用索引器来索引数据,并希望利用提供的 json 提取? 如果您想使用索引器和提供的 json 提取选项,我们有一个预览技能,您可以使用它来帮助实现这一点。步骤如下所示:

    1. 在您的索引器定义中,您需要设置两件事(均为documented here):
      1. "allowSkillsetToReadFileData": true
        1. 此选项将允许我们引用技能集中的加密 blob。
      2. "dataToExtract": "allMetadata"
        1. 此选项可让您绕过正常的预技能内容提取,否则在数据仍处于加密状态时提取会失败。
    2. 为#1 中定义的索引器创建一个至少具有以下两项技能的技能组(如果您想要任何其他技能组功能,可以在之后添加更多技能):
      1. A custom web api skill"/document/file_data" 对象作为输入,通过对该文档的客户密钥进行某种外部查找来解密文件,然后将解密的数据作为文件引用对象返回。
      2. A DocumentExtractionSkill(当前预览版)接收从自定义技能返回的文件引用对象,"parsingMode" 设置为 "json"
        1. 这将解析现在解密的 JSON 文件,类似于在原始 blob 存储中解密它并且使用默认 dataToExtract 选项时的解析方式。
        2. 请注意,在文档中,此技能需要非常具体的输入格式,因此您需要确保这正是 2a 中自定义技能返回的内容。

    这是一种有点复杂的方法,但 DocumentExtractionSkill 实际上是根据您所描述的场景设计的,因此我们很乐意听取有关它是否适合您的反馈。

    如果您不关心使用索引器,您始终可以自己编写一个工作流来下载文件、解密和解析它,然后使用the push model 将其发送到 Azure 认知搜索索引。使用此选项,您将不得不自己进行解析,而不会获得索引器免费提供的所有不错的功能,例如更改跟踪和自动计划运行。

    【讨论】:

    • 我一直在使用这项技能来(我希望)从 HTML 文件中提取文本......但是 DocumentExtractionSkill 将不仅从 HTML 文件中提取的信息很少,而且还有其他文件类型。是否有 DocumentExtractorSkill 将如何处理 HTML 文件的示例?我是 AI Pipeline 的新手,并且已经获得了至少输入和输出参数的 AI 教程,并扩展了 /Document/Extracted_text ...但到目前为止我看不到包含在该路径中的结果.
    猜你喜欢
    • 2016-08-14
    • 2018-07-06
    • 2019-12-18
    • 1970-01-01
    • 2020-06-17
    • 2015-12-01
    • 2018-01-01
    • 2020-04-03
    • 2020-10-04
    相关资源
    最近更新 更多