Как реализовать Azure Cognitive Search с пользовательскими зашифрованными данными в Azure Blob Storage - PullRequest
0 голосов
/ 12 апреля 2020

Мое приложение хранит данные для клиентов под одной учетной записью хранилища BLOB-объектов, и каждому клиенту назначается определенный контейнер c.
В этом контейнере данные для указанного клиента c сохраняются в нескольких приложениях большого размера, однако данные шифруются с использованием пользовательских ключей, и каждый клиент имеет свой собственный указанный ключ c.
Указанные пользователем ключи c хранятся в базе данных, и перед записью содержимого в Blob приложение получает ключ из базы данных (на основе клиента) и шифрует данные.
Теперь мне нужно реализовать функцию поиска для данных в хранилище BLOB-объектов (чтобы каждый клиент мог искать свои соответствующие данные), а Azure Когнитивный поиск выглядит так Идеальное решение.
Однако я не могу понять, основываясь на документации, как выполнить поиск по зашифрованным данным. Лучший и наиболее актуальный документ, который я нашел, это это . Но это говорит о Key-Vault.
1. Как мне добиться функциональности поиска по зашифрованным данным (где даже ключ шифрования изменяется в зависимости от клиента), где ключ хранится в базе данных ?
2. Можно ли выполнить поиск с помощью одного Azure Cognitive Search или мне нужно внедрить отдельную службу поиска для каждого клиента?

PS: данные находятся в В формате JSON, до его шифрования и записи в Azure хранилище BLOB-объектов.

1 Ответ

1 голос
/ 13 апреля 2020

Здесь можно рассмотреть несколько возможных вещей.

Нужно ли шифровать данные в покое с помощью указанного ключа клиента в поисковом индексе? Если так, то документ, которым вы поделились, будет лучшим способом сделать это. Это будет означать, что вам понадобится способ сохранить указанные пользователем ключи c в KeyVault, а затем ссылаться на этот ключ для Azure индекса когнитивного поиска (так что вам понадобится индекс для каждого клиента, но можно будет использовать одну службу поиска в целом при условии, что вы не go превышаете ограничения на уровень обслуживания, который вы используете ). Если его не нужно шифровать с помощью ключа клиента в поисковом индексе, а управляемое системой шифрование в порядке, вам это не нужно.

Независимо от ответа на этот вопрос, пытаетесь ли вы использовать индексаторы для индексации данных и хотите использовать предоставленное извлечение json? Если вы хотите использовать индексаторы и предоставленную опцию извлечения json, у нас есть умение предварительного просмотра, которое вы можете использовать, чтобы разрешить это. Шаги будут выглядеть примерно так:

  1. В вашем определении индексатора вам нужно будет установить две вещи (обе задокументированы здесь ):
    1. "allowSkillsetToReadFileData": true
      1. Эта опция позволит нам ссылаться на зашифрованный большой двоичный объект в наборе навыков.
    2. "dataToExtract": "allMetadata"
      1. Эта опция позволит вам обойти обычные извлечение содержимого -skillset, которое в противном случае завершится ошибкой, пока данные все еще зашифрованы.
  2. Создайте набор навыков для индексатора, определенного в # 1, который имеет по крайней мере следующее два навыка (вы можете добавить больше после того, как захотите любую другую функциональность набора навыков):
    1. Пользовательский навык веб-API , который принимает в качестве входных данных объект "/document/file_data", расшифровывает файл с помощью выполнить какой-то внешний поиск ключа клиента для этого документа, а затем возвращает дешифрованные данные в качестве ссылочного объекта файла.
    2. DocumentExtractionSkill (предварительный просмотр), который принимает файл r eference объект, который был возвращен из пользовательского навыка, с "parsingMode", установленным на "json".
      1. Это проанализирует теперь расшифрованный файл JSON, аналогично тому, как он был бы проанализирован, если бы он был дешифрован в исходном хранилище больших двоичных объектов и если вы использовали опцию dataToExtract по умолчанию.
      2. Обратите внимание, что в документации очень специфический c формат ввода требуется для этого навыка, поэтому вам нужно убедиться, что это именно то, что возвращается из вашего определенного пользователем навыка в 2a.

Это немного сложный подход, но DocumentExtractionSkill на самом деле был разработан именно с учетом сценария, который вы описываете, поэтому мы хотели бы услышать отзывы о нем, если он работает у вас или нет.

Если вас не интересует использование индексаторов, вы всегда можете написать рабочий процесс, который сам загружает файл, расшифровывает и анализирует его, а затем отправляет его в Azure Cognitive Search. индекс, используя модель pu sh . С этой опцией вы бы выполняли синтаксический анализ самостоятельно и не получили бы все приятные функции, которые индексаторы предоставляют бесплатно, такие как отслеживание изменений и автоматизация c запланированных запусков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...