Я хочу разработать приложение, которое будет использоваться довольно небольшим количеством людей и которое должно хранить и вызывать данные из облачной базы данных. Пользователи должны иметь различные уровни доступа, чтобы некоторые могли создавать что-то, некоторые просто читали, другие модифицировали, некоторые могли делать что-либо еще и т.д. Как и в случае с файловой системой.
В настоящее время я рассматриваю Azure (очень плохо знакомый с этим) и думаю, какие компоненты будут задействованы в проекте. Очевидно, что мобильное приложение (Xamarin.Forms) будет фронтэндом. Какая-то БД Космос или другая база данных в облаке. Хранилище больших двоичных объектов также для мультимедийных файлов, созданных пользователями. Но мой главный вопрос заключается в том, как реализовать контроль над тем, что пользователь может делать, какие действия с какими данными.
Простой способ состоит в том, чтобы сделать это в самом приложении, но это противоречит интуитивно понятным и представляет угрозу безопасности. Несмотря на то, что это внутреннее приложение, используемое людьми из одной и той же или родственных организаций, оно действительно звучит плохо.
Наилучшим вариантом будет, если оно обрабатывается самой базой данных, но я не знаю о существовании такого механизма. Надеюсь, это действительно существует, и кто-то укажет мне правильное направление.
Единственный другой способ, которым я вижу, - это иметь какой-то средний слой, все еще на заднем конце, но непосредственно перед базой данных. Однако это также кажется неуклюжим, и я также не знаю, как его реализовать «в облаке».
Каковы будут мои реальные варианты?
Чтобы уточнить, речь идет о назначении разрешений на основе определенных столбцы таблицы, например, а не о наличии разных таблиц с разными пользователями, которые совместно используют части данных.
Вот почему это вопрос " Архитектурные решения ", а не "как сделать я даю разрешения на чтение пользователю X моей базы данных Y ".
Ответом может быть" База данных X "имеет то, что вы хотите. Или, что наименее благоприятно: «Нет способа выгрузить это в БД. Вам придется хранить все данные отдельно, чтобы пользователи могли работать только со своим набором данных, а затем сопоставлять данные в бэкэнде». Или что-то среднее между ними, возможно.