Архитектурные решения для системы, включающей мобильное приложение с базой данных в облаке и различными уровнями ограничений пользователей - PullRequest
0 голосов
/ 02 мая 2020

Я хочу разработать приложение, которое будет использоваться довольно небольшим количеством людей и которое должно хранить и вызывать данные из облачной базы данных. Пользователи должны иметь различные уровни доступа, чтобы некоторые могли создавать что-то, некоторые просто читали, другие модифицировали, некоторые могли делать что-либо еще и т.д. Как и в случае с файловой системой.

В настоящее время я рассматриваю Azure (очень плохо знакомый с этим) и думаю, какие компоненты будут задействованы в проекте. Очевидно, что мобильное приложение (Xamarin.Forms) будет фронтэндом. Какая-то БД Космос или другая база данных в облаке. Хранилище больших двоичных объектов также для мультимедийных файлов, созданных пользователями. Но мой главный вопрос заключается в том, как реализовать контроль над тем, что пользователь может делать, какие действия с какими данными.

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

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

Единственный другой способ, которым я вижу, - это иметь какой-то средний слой, все еще на заднем конце, но непосредственно перед базой данных. Однако это также кажется неуклюжим, и я также не знаю, как его реализовать «в облаке».

Каковы будут мои реальные варианты?

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

Вот почему это вопрос " Архитектурные решения ", а не "как сделать я даю разрешения на чтение пользователю X моей базы данных Y ".

Ответом может быть" База данных X "имеет то, что вы хотите. Или, что наименее благоприятно: «Нет способа выгрузить это в БД. Вам придется хранить все данные отдельно, чтобы пользователи могли работать только со своим набором данных, а затем сопоставлять данные в бэкэнде». Или что-то среднее между ними, возможно.

1 Ответ

0 голосов
/ 07 мая 2020

Я не разбираюсь в Azure или любом другом, но каждая СУБД будет иметь учетные записи пользователей, которые предоставляют различные разрешения, например, для Apache Derby , MySQL , et c.

Я бы никогда не реализовал аутентификацию на стороне клиента.

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