Защита баз данных в стиле документов (MongoDb, CouchDb, RavenDb) для доступа клиента (браузера) - PullRequest
6 голосов
/ 22 июня 2010

Базы данных документов, поддерживающие доступ JSON через HTTP в стиле REST, кажутся идеальными для поддержки приложений, обогащенных AJAX, когда браузер выполняет прямые вызовы базы данных, минуя традиционные компоненты логики веб-сервера / приложения. Примером этого может быть получение пользовательских настроек после аутентификации пользователя. (Домашняя страница BBC может быть хорошим примером этого до сбоя под нагрузкой!)

Проблема с этим сценарием - проблема безопасности - если пользователь проходит проверку подлинности с использованием веб-сервера (например, базовая проверка подлинности форм), как эта идентификационная информация переносится в базу данных документов. Является ли единственным ответом для прокси все запросы к БД через веб-сервер в любом случае - т.е. защищать БД документов, чтобы не было прямого внешнего доступа?

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

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Это, вероятно, отличается в каждой базе данных, которую вы упоминаете.Вот как это работает в CouchDB.

CouchDB позволяет вам управлять пользователями и ролями.

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

Чтобы ограничить круг лиц, которые могут читать документы из базы данных, вы можете отредактировать документ /db_name/_security и перечислить пользователей или роли.

Однако я не думаю, что вы можете сделать доступ для чтения более детализированным (т. Е. Позволить пользователю читать только те документы, которые он создал).

Для этого вам нужно поставить CouchDBза прокси и использовать представления для предоставления документов аутентифицированным пользователям.Вы все еще можете использовать управление пользователями CouchDB таким образом.Прокси-сервер просто скрывает прямой доступ к базе данных.

Для получения более подробной информации см. Обзор безопасности на вики-сайте CouchDB , главу по безопасности в книге Relax иэто короткая заставка .

1 голос
/ 24 июня 2010

Ну, у меня есть только опыт работы с CouchDB, но, тем не менее, я надеюсь, что смогу вам помочь.

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

...