Как хранить пользовательские файлы в контейнерах BLOB-объектов - PullRequest
0 голосов
/ 09 апреля 2019

Мы разрабатываем приложение, в котором пользователь может войти и сохранить файлы.Он также может делиться некоторыми файлами с другими пользователями, которым он хочет предоставить доступ.Теперь вопрос заключается в том, как управлять доступом на уровне больших двоичных объектов, специфичным для пользователя.

Позвольте мне объяснить простой сценарий:

В наше приложение входят два пользователя A & B.Я создаю контейнер для каждого пользователя для хранения пользовательских файлов.Теперь пользователь A хочет поделиться некоторыми файлами с пользователем B. Я могу сделать это с токеном SAS, но проблема в том, что если пользователь C получает этот URL, он также может видеть содержимое.

Пожалуйста, дайте знать лучшеспособ справиться с таким сценарием.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Лучшим решением для описанного сценария является использование AAD / Rbac для указания прав доступа только для пользователей A и B.

SAS к сожалению, это не зависит от пользователя, то есть, если кто-то может его заполучить, он может использовать его до тех пор, пока он еще не истек. Единственный слой, который можно добавить для дополнительной безопасности это: Разрешенные IP-адреса для ограничения доступа только пользователю B.

0 голосов
/ 09 апреля 2019

Если оба пользователя A и B связаны с Azure AD, вы можете использовать Azure AD based authentication for Azure Blob and Queue Service.

Я сам не пробовал, но, насколько я понимаю, так и естьВы назначаете Blob Reader Role пользователю и предоставляете ему разрешение на контейнер больших двоичных объектов, и этот пользователь сможет читать большие двоичные объекты из этого контейнера.

Если я правильно понимаю, вы хотите, чтобы пользователь А только обменивался определенными большими двоичными объектами сПользователь B. В этом сценарии вы можете создать еще один контейнер BLOB-объектов, в котором пользователь A будет копировать файлы, которые он / она хочет поделиться с пользователем B, а затем предоставит доступ пользователю B в этом контейнере (при условии, что у пользователя B есть роль читателя BLOB-объектов).

...