Защищая базы данных стиля документа (MongoDb, CouchDb, RavenDb) для клиента (браузер) доступ

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

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

Это, кажется, имеет большую часть смысла, и самое легкое должно реализовать, но я задавался вопросом, был ли у кого-либо там опыт и / или совет относительно использования документа dbs в разнородной среде?

6
задан Community 22 September 2017 в 18:01
поделиться

2 ответа

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

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

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

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

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

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

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

1
ответ дан 17 December 2019 в 20:28
поделиться

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

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

1
ответ дан 17 December 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: