Безопасная архитектура CouchDB - PullRequest
1 голос
/ 19 октября 2011

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

С учетом этой схемы, как я могу защитить как локальные, так и центральные базы данных?

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

Конечно, более важным аспектом является защита центральной базы данных, потому что все локальное может быть и будет взломано в конечном итоге, но центральная (или удаленная) база данных должна быть более безопасной. Я читал, что люди предлагают разместить CouchDB за прокси, но как процесс репликации может проходить аутентификацию от имени пользователя?

Спасибо, Идо.

1 Ответ

4 голосов
/ 19 октября 2011

Не думаю, что могу дать какой-то умный совет, касающийся дивана, так как все вопросы касаются общих проблем безопасности, но вот они:

  • Для начала убедитесь, что связь между узлами зашифрована . CouchDB изначально поддерживает SSL начиная с версии 1.1, поэтому для более ранних версий вам придется оставить его позади какого-либо прокси-сервера, который будет обрабатывать SSL (nginx, apache mod_proxy, varnish) или ограничивать доступ через VPN.

  • Проверка ролей и прав доступа пользователя . Запретить все, что не должно быть разрешено. Требуются действительные пользователи и т.д ...

  • Убедитесь, что если кто-то аутентифицирован, это не значит, что вы можете ему доверять . Убедитесь, что вы тщательно проверили все данные - используйте функции validate_doc_update свободно. Убедитесь, что все имеют доступ к данным, к которым у них есть доступ. Опять аутентификация не означает авторизацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...