Разделение пользовательских данных DocumentDb
Я тестирую недавно выпущенную DocumentDb и не могу найти никакой документации, указывающей наилучшую практику о том, как выполнить разделение пользовательских данных.
Я предполагаю, что грубый дизайн будет:
- Аутентифицировать пользователя и создать новый / получить существующий идентификатор пользователя
- При вставке документа введите идентификатор пользователя в документ
- Запрос на чтение документа / коллекции документов, где идентификатор пользователя документа = идентификатор текущего пользователя
Я создаю приложение AngularJs и в настоящее время использую базу данных Azure Sql в сочетании с мобильными службами Azure.
Мобильные сервисы обрабатывают аутентификацию пользователя, а также сегрегацию пользовательских данных на стороне сервера с использованием функций JavaScript сценариев данных:
например
function insert(item, user, request) {
item.userId = user.userId;
request.execute();
}
Любые предложения о том, что будет техника для безопасного разделения пользовательских данных от AngularJS с использованием DocumentDB?
1 ответ
Ваш подход звучит разумно для меня - при условии, что логика, упомянутая в вашем грубом дизайне, имеет место в вашем бэкэнд-сервисе.
Как правило, я бы относился к DocumentDB так же, как к любому другому хранилищу данных. Ваш клиент (AngularJS) делает звонки в вашу бэкэнд-службу, а не звонит напрямую в ваше хранилище данных. Ваш сервер проверяет запрос клиента (т. Е. Утверждает, что пользователь прошел проверку подлинности и может касаться определенного фрагмента данных), прежде чем делегировать какую-либо работу вашему хранилищу данных.
Если требуется прямой доступ к базе данных с клиента - вы можете проверить пользователей и разрешения DocumentDB. Для реализации многопользовательского режима для вашего приложения вы можете создавать пользователей в DocumentDB, которые соответствуют вашим реальным пользователям или владельцам вашего приложения. Затем вы можете создать разрешения для данного пользователя, которые соответствуют управлению доступом к различным коллекциям, документам, вложениям и т. Д. На вашем клиенте вы можете подключаться к базе данных, используя ключ ресурса пользователя, а не ключи администратора вашего DocumetnDB.
Прочтите этот пост в блоге о пользователях / разрешениях DocumentDB: http://blogs.msdn.com/b/cloud_solution_architect/archive/2014/12/09/permissions-in-azure-documentdb.aspx