Политики

В прикладном решении доступны две модели политик: API (проверка прав на уровне вызова HTTP-запросов) и DATA (проверка прав на уровне конкретных объектов внутри LDM.Box).

Разделы Политики API и Политики DATA позволяют управлять политиками, по которым производится расчет прав доступа. В LDM.Box действуют разрешительная и запретительная модели.

Настраивание политик доступа не является обязательным этапом, для работы прикладного решения достаточно настроить разрешения. В разделе Права доступа можно настроить доступ к конкретным ролям, классам папок и/или документов.

Создание политики

Для создания политики необходимо выполнить следующие действия:

  1. В разделе Политики API/Политики DATA нажать кнопку img.

    Форма создания политики содержит блоки Общие и Условия.

    img

  2. В поле Сервис выбрать нужный сервис.

  3. В поле Описание добавить описание политики.
  4. В блоке Условия добавить условия политики.

    В поле Субъект необходимо вручную прописать правило для ролей или логинов пользователей, которым в рамках данной политики будет разрешен доступ. Пример заполнения поля: "usertest" in (r.sub.roles), которое является условием, при котором роль «Пользователь» должна присутствовать в списке его ролей «subject roles». Список ролей пользователя прикладное решение получает из токена. Рекомендуется создавать отдельные политики для каждой роли/логина пользователей.

    В поле Маска пути требуется указать правило для объекта. Для типа модели DATA правило может включать в себя условия, распространяющиеся, например, на класс объекта, его атрибуты или создателя объекта.

    Для предоставления права на обращение к REST API в данном поле необходимо указать внутренний эндпоинт, по которому будет выполняться запрос. Допускается наименование сервиса заменять символом , например, «//api/v1/preview». В таком случае принадлежность к сервису прикладным решением будет определяться исходя из значения в поле Сервис. Для предоставления доступа ко всем эндпоинтам сервиса поле Маска пути можно заполнить значением «/*».

    В поле Метод прописать все необходимые действия. Таких действий может быть несколько, они указываются в скобках и разделяются логическим элементом |. Пример заполнения поля для типа модели DATA: «(create)|(update)|(delete)». Для предоставления права на обращение к REST API в данном поле необходимо указать единичный метод (например, «GET») или перечислить методы, разделяя их логическим элементом |. Например, «(POST)|(GET)». Для всех моделей можно использовать значение «.*», которое служит обозначением всех возможных действий или методов. Это подстановочный знак, который позволяет определить общие правила без указания конкретных значений.

    В поле Эффект указать значение «allow» или «deny». Указывая, например, значение «allow», будет действовать разрешительная политика, где запрещено все, кроме того, что было разрешено посредством создания политики. При значении «deny» действует запретительная политика.

  5. Создаваемую политику можно сразу активировать, включив тумблер Активность. Политика начнет действовать только после ее активации.

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

  6. Нажать кнопку img.

Карточка политики будет создана.

img

Примеры политик DATA и API согласно правам доступа приведены в таблице .

Примеры использования политик DATA и API

Сервис Пример использования Описание
Политики DATA
dh-documents-service p = "box-edit" in (r.sub.roles), r.obj.className == "ldmbox_doc", .*, allow Предоставляет роли «box-edit» полный доступ к документам класса «ldmbox_doc»
dh-facade-service p = ("box-read" in r.sub.roles) ||("box-edit" in r.sub.roles), r.obj.code != "", read, allow Предоставляет ролям «box-read» и «box-edit» право на чтение любых объектов, у которых заполнено поле «code»
dh-folders-service p = ("box-read" in r.sub.roles) ||("box-edit" in r.sub.roles), r.obj.className == "ldmbox_folder", .*, allow Предоставляет ролям «box-read» и «box-edit» полный доступ к папкам класса «ldmbox_folder»
dh-documents-service p = "box-read" in (r.sub.roles), r.obj.className == "ldmbox_doc", create, change_folder_links , allow Предоставляет роли «box-read» разрешения создавать и менять расположение для документов класса «ldmbox_doc»
dh-documents-service p = "box-read" in (r.sub.roles), (r.obj.className == "ldmbox_doc") && (r.obj.createdBy == r.sub.login), .*, allow Предоставляет роли «box-read» полный доступ к своим документам класса «ldmbox_doc»
Политики API
dh-facade-service p = "box-read" in (r.sub.roles), /, ., allow Предоставляет роли «box-read» доступ ко всем методам сервиса
dh-facade-service p = "box-edit" in (r.sub.roles), /, ., allow Предоставляет роли «box-edit» доступ ко всем методам сервиса
dh-folders-service p = ("box-edit" in r.sub.roles) ||("box-read" in r.sub.roles), /, ., allow Предоставляет ролям «box-edit» и «box-read» доступ ко всем методам сервиса
ldm-user-settings-service p = ("box-edit" in r.sub.roles) ||("box-read" in r.sub.roles), /, ., allow Предоставляет ролям «box-edit» и «box-read» доступ ко всем методам сервиса
ldm-preview-service p = ("box-edit" in r.sub.roles) ||("box-read" in r.sub.roles), /, ., allow Предоставляет ролям «box-edit» и «box-read» доступ ко всем методам сервиса
dh-files-service p = ("box-edit" in r.sub.roles) ||("box-read" in r.sub.roles), /, ., allow Предоставляет ролям «box-edit» и «box-read» доступ ко всем методам сервиса
dh-accessrights-service p = ("box-edit" in r.sub.roles) ||("box-read" in r.sub.roles), /, ., allow Предоставляет ролям «box-edit» и «box-read» доступ ко всем методам сервиса
dh-documents-service p = ("box-edit" in r.sub.roles) ||("box-read" in r.sub.roles), /, ., allow Предоставляет ролям «box-edit» и «box-read» доступ ко всем методам сервиса

Важно! Удаление политик доступа может заблокировать работу пользователей без возможности быстро восстановить доступ.

Для поиска политик для конкретных ролей можно применить сортировку в разделе Политики API/Политики DATA по столбцу (применение сортировки в интерфейсе прикладного решения описано в документе Руководство пользователя LDM.Box).

Изменение и удаление политики доступа

Для изменения политики доступа необходимо выполнить следующие действия:

  1. В разделе Политики API/Политики DATA открыть нужную политику двойным нажатием ЛКМ на ее строке.

  2. В открывшейся карточке внести изменения в поля.

    Доступна смена сервиса в поле Сервис, изменение описания политики, а также ее параметров в блоке Условия.

    Также политику можно активировать или деактивировать переключением тумблера Активно.

  3. После внесения необходимых изменений нажать кнопку img.

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

Для удаления ранее созданной политики доступа необходимо в разделе Политики API/Политики DATA открыть нужную политику двойным нажатием ЛКМ на ее строке, в открывшейся карточке нажать кнопку img и подтвердить действие в открывшемся окне.

Также доступно удаление сразу нескольких политик доступа. Для этого необходимо в разделе Политики API/Политики DATA отметить чекбоксами несколько политик, нажать кнопку img на панели инструментов, после чего подтвердить действие в открывшемся окне.

Появится уведомление, информирующее об успешном удалении политики доступа.