CouchDB имеет механизм для предотвращения несанкционированной записи.
Можно ли также предотвратить несанкционированное чтение?
CouchDB имеет механизм для предотвращения несанкционированной записи.
Можно ли также предотвратить несанкционированное чтение?
Да, CouchDB может предотвратить несанкционированное чтение. К сожалению, это немного менее прямолинейно.
Представьте себе секретное приложение для аукционов. Вы предлагаете 20 долларов США, и я предлагаю 10 долларов США; каждая заявка в документе кушетки. Диван позволяет нам читать наши собственные тендерные документы, но нет других. Однако есть отображение с уменьшением масштаба, показывающее среднее значение. Я загружаю представление и вижу, что средний показатель составляет 15 долларов США, поэтому я пришел к выводу, что ваша ставка составляет 20 долларов США, и я нарушил правила безопасности. В представлении "Вид" могут протекать некоторые или все данные документа. Невозможно обеспечить безопасность на уровне документа. Вот почему доступ на чтение находится на уровне базы данных.
Я знаю, это отстой. Но это единственный правильный, масштабируемый ответ.
Это часть причины, по которой философия Couch заключается в создании множества баз данных, даже одного (или более!) на пользователя. Разрешение на чтение базы данных устанавливается в значении readers
объекта базы данных _security
. (Обратите внимание, что поле читателей было переименовано в члены в соединительной линии CouchDB, поскольку оно также указывает, кто может писать в БД.)
Техника работает следующим образом:
_security
.validate_doc_update
.)?filter=my_filter_function
.Конечно, это все для чистого приложения Couch, где пользователи напрямую обращаются к Couch. Если у вас есть средний уровень (MVC-контроллер или просто обратный HTTP-прокси), тогда вы можете применять там политику между пользователем и кушеткой. Но будьте осторожны. Например, функция _show
или правило _rewrite
могут позволить пользователю загружать представление или документ, несмотря на вашу политику.
Удачи!