Варианты загрузки документов в Azure для каждого пользователя и сохранения их конфиденциальности - PullRequest
0 голосов
/ 10 октября 2019

Мы создаем мультитенантное приложение в Azure, которое должно разделять данные между пользователями / арендаторами.

Каждый арендатор будет загружать / сохранять различные документы (в основном файлы Excel и CSV), а затем иметь возможность использовать / извлекать их в приложении в качестве входных файлов для ряда расчетов ..

Я представляю себе такую ​​структуру:

+ users/
|-+ {uid}/
| | — profile_picture.jpg
| |-+ input_data/
| | | — {input_data_id}.xlsx

В облачном хранилище, используя правила безопасности Firebase, мы можем защитить тех, кто может выполнять какие операции над объектами, хранящимися по разным путям, с помощью правила, подобного следующему.

rules_version = "2";
service firebase.storage {
  match /b/{bucket}/o {
    match /users/{userId}/input_data/{input_data_id} {
      allow get: if request.auth.uid == userId ||
      allow list, write: if request.auth.uid == userId;
    }
  }
}

Есть ли эквивалентный ресурс в лазури, который может сделать что-то вроде firestore;

  • Соответствие правилам
  • Запись объектов на основе UID.
  • Список объектов на основе UID.
  • Разрешить загрузку объектов на основе UID.

В 2015 году я нашел вопрос / ответ с аналогичной проблемой, и мне было интересно узнать, актуален ли ответ или есть ли лучший вариант

Большинствоэффективный способ управления несколькими хранилищами клиентов в Azure?

1 Ответ

0 голосов
/ 22 октября 2019

Статья , которую вы нашли, все еще применяется. В Azure для таких сценариев нет встроенных правил безопасности, таких как правило Firebase. Так что вам нужно реализовать авторизацию самостоятельно. Основная идея состоит в том, чтобы создать контейнеры BLOB-объектов для каждого арендатора, именем контейнера может быть идентификатор арендатора и создать API посредника для получения файлов от имени пользователей.

Учитывая целевые показатели масштабируемости и производительности хранилища Azure , вы также можете создать пул учетных записей хранения, а затем равномерно распределить данные для каждого клиента по нескольким учетным записям хранения. Но для этого вам также понадобится отдельная таблица для хранения информации о сопоставлении, чтобы API знал, где найти данные.

Структура данных может выглядеть следующим образом:

+ StorageAccount1
 + ContainerTenantID/
 |-+ {uid}/
 | | — profile_picture.jpg
 | |-+ input_data/
 | | | — {input_data_id}.xlsx
 + ContainerTenantID/
 |-+ {uid}/
 | | — profile_picture.jpg
 | |-+ input_data/
 | | | — {input_data_id}.xlsx
+ StorageAccount2
 + ContainerTenantID/
 |-+ {uid}/
 | | — profile_picture.jpg
 | |-+ input_data/
 | | | — {input_data_id}.xlsx

Что касается API брокера, он решает, к каким данным пользователь может получить доступ. Если вы используете Azure AD, он может получить tenantID и UID из маркера входа пользователя. Тогда у него достаточно информации, чтобы решить, какие данные вернуть пользователю.

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