Защита баз данных в стиле документов (MongoDB, CouchDB, Ravendb) для клиента (браузер) Access
Вопрос
Базы данных документов, которые поддерживают JSON в стиле REST над доступом к HTTP, кажутся идеальными для поддержки приложений, богатых AJAX, где браузер делает прямые вызовы в базу данных, обходя традиционные компоненты логики веб-сервера / приложений. Примером этого может быть получение пользовательских предпочтений, как только пользователь будет аутентифицирован. (Домашняя страница BBC может быть хорошим примером этого, перед сбоем под нагрузкой!)
Проблема с этим сценарием является проблемой безопасности - если пользователь аутентифицируется с помощью веб-сервера (например, базовые формы аутентификации), как эта идентичность переносится на документ DB. Является ли единственным ответом на прокси все запросы на БД через веб-сервер в любом случае - то есть закрепите документ DB, чтобы нет прямого внешнего доступа?
Похоже, это наиболее имеет смысл, и это легче всего реализовать, но мне было интересно, был ли кто -то там опыт и / или советы по использованию DB DBS в гетерогенной среде?
Решение
Это, вероятно, отличается в каждой учетной записи базы данных. Вот как это работает в Couchdb.
CouchDB позволяет управлять пользователями и ролями.
Вы можете использовать validate_doc_update
Функция в ваших проектных документах, чтобы ограничить создание / обновление документов. Например, вы можете написать проверку, которая отрицает обновление документа никому, кроме его автора.
Чтобы ограничить, кто может читать документы из базы данных, вы можете редактировать /db_name/_security
Документ и список пользователей или ролей.
Тем не менее, я не думаю, что вы можете сделать доступ для чтения больше гранулирования (то есть позволяют пользователю читать только документы, которые они создали).
Чтобы достичь этого, вы должны поставить CouchDB за прокси и использовать представления, чтобы обслуживать документы для аутентифицированных пользователей. Таким образом, вы все еще можете использовать управление пользователями CouchDB. Прокси только скрывает прямой доступ к базе данных.
Для получения более подробной информации проверьте Обзор безопасности на CouchDB Wiki, то Глава безопасности книги Relax и это Короткий скринкасть.
Другие советы
Ну, у меня есть только опыт работы с Couchdb, но надеюсь, что смогу помочь вам, тем не менее.
CouchDB имеет встроенный процесс проверки, вы пишете правила валидации в JavaScript и имейте доступ к группе, в которой есть текущий пользователь. Все это обрабатывается сам CouchDB в основном, вам не нужно заботиться о том, как вы попадаете в систему для входа в систему.