2015-12-10 3 views
0

Я пытаюсь создать пользователей в MarkLogic, имеющих разрешения на данные базы данных. Я прочитал Security Guide с страницы документации MarkLogic и обнаружил, что вы можете устанавливать разрешения для заданных URI, коллекций или функций.Создайте пользователя, у которого есть разрешение только на данную базу данных

Разрешения на коллекции могут помочь мне с маркировкой данных коллекций из базы данных, доступной только для данного набора пользователей, но все же другие пользователи могут создавать и изменять документы в разных коллекциях (или создавать документы без коллекций).

См., Например,

У меня есть две базы данных:

  • Тестовые
  • TEST2

И два пользователя:

  • UserTest
  • UserTest2

Как я могу установить разрешения, чтобы UserTest имел разрешения читать/обновлять/вставлять/выполнять в базе данных Test и не может изменять или читать что-либо базу данных Test2?

ответ

1

Каждая база данных может быть связана с выделенной базой данных безопасности. То, как вы описываете свой вариант использования («UserTest будет иметь разрешения на чтение/обновление/вставку/выполнение в базе данных Test и не может изменять или читать что-либо базу данных Test2»), вы можете рассмотреть выделенные базы данных безопасности для баз данных Test и Test2 ,

Другим способом было бы использование различных разрешений для ролей для двух баз данных: :. Вы можете установить разрешения на чтение/обновление/вставку/выполнение на уровне документа для данной роли во время вставки или изменить их с помощью xdmp: document-add-permissions() (сохраняет предыдущие разрешения) или xdmp: document-set-permissions() (отменяет предыдущие разрешения) после вставки. Например, у вас может быть роль Test-Reader для тестирования базы данных и роль Test2-Reader для тестовой базы данных2, и убедитесь, что (1) пользователь UserTest имеет роль Test-Reader (но не роль Test2-Reader) и (2), что все документы, вставленные в тестовую базу данных, соединяют возможности чтения с ролью Test-Reader (но не роль Test2-Reader) и т. Д. (То же самое для других возможностей.)

Если управление этим явно звучит как обратите внимание, что разрешения разрешений по умолчанию могут быть объявлены как неявно как для пользователя, так и на уровне ролей.

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

Вот соответствующий раздел разрешений документов из Понимания и использование Руководства по безопасности: https://docs.marklogic.com/guide/security/permissions#id_85471

0

Спецификации пользовательского уровня для базы данных отсутствуют. Но имейте в виду, что база данных недоступна сама по себе - она ​​доступна через приложение (приложения), которое связано с конкретной базой данных. Если вы не позволяете людям запускать eval и позволять им оценивать другую базу данных, то ваше приложение будет содержать людей в указанной базе данных. (Примечание: расширенный HTTP-сервер ML8 немного изменяет это, потому что вы можете переключать базу данных «на лету» на запрос, но правила о том, что они застряли в одной базе данных, все еще стоят).

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

Смежные вопросы