Авторизация авторизации CouchDB

В веб-сайте couchdb → технический обзор → безопасность и проверка - http://couchdb.apache.org/docs/overview.html - он пишет, что (при доступе к читателю part) "Чтобы защитить содержимое документа, документы CouchDB могут иметь список читателей. Это необязательный список имен читателей, которым разрешено читать документ. Когда список читателей, защищенные документы доступны только для зарегистрированных пользователей. "I искал, как его использовать, но я ничего не нашел. Так оно фактически используется, и если это как?

Спасибо.

- Мустафа

Ответ 1

Вы правы, это сбивает с толку. Для получения дополнительной информации см. 0.11 "нарушение" .

Контроль чтения на одном документе невозможен; поле readers предназначено для доступа ко всей БД. Для получения дополнительной информации загрузите свою базу данных в Futon и нажмите ссылку Security... вверху.

Причина, по которой контроль чтения невозможен, заключается в том, что представления (map and reduce) могут извлекать информацию из всех документов в базе данных, поэтому, как правило, невозможно запретить пользователям просматривать личные данные в той или иной форме.

Для детального контроля доступа у вас есть два основных варианта:

  • У вас есть приложение между вашими пользователями и БД. 99% веб-приложений, использующих MySQL, делают это уже (например, Ruby on Rails). Храните информацию ACL в БД, и ваше приложение предоставляет/отклоняет доступ на основе ACL.
  • Сохранять выделенную базу данных для каждого пользователя. Возможно, вам придется изменить свою архитектуру, но, возможно, нет. Вы можете использовать репликацию с фильтром для копирования только пользовательских данных в свою базу данных. Затем он читает из своей базы данных и записывает в центральную базу данных.

Ответ 2

  • Войдите в CouchDB как администратор.
  • Откройте конкретную базу данных, которую вы хотите защитить.
  • Нажмите кнопку Безопасность этой конкретной базы данных.
  • Добавьте пользователей в Members имена, которые могут читать. (По крайней мере, добавить имя пользователя admins) как строковый элемент массива.
    Ex. Имена: [ "username1", "username2" ]
  • Нажмите кнопку обновления

Нажмите здесь, чтобы увидеть изображение