Правила контроля доступа позволяют вам ограничивать доступ к объектам и операциям в зависимости от ваших бизнес-процессов.

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

Проверка по правилам ACL выполняется с помощью комбинации трех полей:

  1. Роли
  2. Условия
  3. Скрипт

Если поле Роли правила контроля доступа пустое, следующим шагом будет проверка условия, если какое-либо конкретное условие было указано. Если поле Условия пустое, тогда проверяется поле Скрипт, предназначенное для проверки конкретных условий и атрибутов.

Схема ниже показывает процесс проверки по правилам контроля доступа:

Создание правила контроля доступа


Требуемая роль: security_admin.

Повышение роли до security_admin позволяет создавать или выполнять любые другие операции с правилами контроля доступа.

Чтобы создать правило контроля доступа, выполните следующие шаги:

  1. Перейдите в Безопасность → Контроль доступа (ACL).
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Контроль доступа

ПолеОбязательноОписание
НаименованиеДа

Поле доступно только для чтения и заполняется автоматически системой после сохранения записи.

Слово в квадратных скобках указывает на операцию. Имя после первой точки указывает на защищенную таблицу и колонку (если она указан в поле Колонка):

[Delete].sys_history

[Read].sys_history.created_by

Это поле поддерживает подстановочный знак звездочки (*) вместо имени записи, таблицы или поля, что позволяет выбирать все объекты, соответствующие типу записи, всем таблицам или всем полям.

Хорошо

problem.*

*.task

Плохоpro*
ОперацияНет

Выберите операцию для защиты. Доступные варианты:

  • создание
  • чтение
  • запись
  • удаление

Одно правило контроля доступа может защитить только одну операцию. Чтобы защитить более одной операции, создайте для каждой их них отдельное правило контроля доступа. 

АктивенНетУстановите флажок, чтобы активировать правило контроля доступа.
Игнорируется админомНет

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

Снимите флажок, чтобы проверять таких пользователей на соответствие правилу. Определите условия в конструкторе условий или в поле Скрипт, чтобы создать проверку на доступ, которым пользователи администраторы должны соответствовать для получения доступа.

Для всех таблицНет

Установите этот флажок, чтобы защитить все таблицы в системе.

ТаблицаДа

Укажите таблицу для защиты.

Одно правило контроля доступа может защитить только одну таблицу. Чтобы защитить несколько таблиц, создайте для каждой из них отельное правило контроля доступа.

Для всех полейНетУстановите этот флажок, чтобы защитить все поля в таблице.
КолонкаНет

Укажите колонку для защиты.

Одно правило контроля доступа может защитить только одну колонку. Чтобы защитить несколько колонок, создайте для каждой из них отельное правило контроля доступа.

ОписаниеНетДобавьте описание правила контроля доступа.
РолиНет

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

Вы можете выбрать несколько ролей.

Роли добавляются из словаря Роли (sys_role).

УсловиеНетИспользуйте конструктор условий для создания фильтров.
СкриптНет

Введите скрипт, который задает условия для выполнения. Результатом выполнения скрипта является переменная answer, которая равна true или false.

Если скрипт не добавлен или переменной answer не присвоено значение, значение переменной по умолчанию – true.

При передаче в переменную answer любого значения не типа Boolean, оно неявно приведется в Boolean. 

Пример
answer = current.sys_id;
// если запись уже существует - true, если записи еще нет (null) - false


Вариант использования


Кейс 1

Компания должна скрывать следующую информацию о сотрудниках:

    • Мобильный телефон
    • Роли пользователя

Доступ к такой информации должен быть только у пользователей с ролями user_manager и admin и у самих сотрудников. Сотрудник не может просматривать телефон и роли других сотрудников.

Для этого вам нужно настроить два правила контроля доступа:

Правило контроля доступа №1 дает доступ к полю Мобильный телефон владельцу записи:

ПолеЗначение
Операциячтение
Игнорируется админомtrue
ТаблицаСотрудники
КолонкаМобильный телефон
Условие

ID равно javascript: return ss.getUserID();

Создано правило: [Read].employee.mobile_phone

Правило контроля доступа №2 дает доступ к полю Мобильный телефон пользователям с ролью user_manager:

ПолеЗначение
Операциячтение
Игнорируется админомtrue
ТаблицаСотрудники
КолонкаМобильный телефон
Ролиuser_manager

Создано правило: [Read].employee.mobile_phone

Результат:

На двух скриншотах ниже показан список Сотрудники с правилами контроля доступа №1 и №2.

Список записей, показываемых владельцу записи без роли user_manager (Степан Петров):

Список записей, отображаемых пользователю с ролью user_manager:

Кейс 2:

Вам нужно разрешить доступ на редактирование только к одному полю в таблице Запросы (itsm_request), но создание правил контроля доступа для каждого поля затратно по времени и неэффективно.

Для этих целей вам нужно создать всего 2 правила:

    • [Write].itsm_request.additional_comments – дает доступ к редактированию поля Дополнительные комментарии.
    • [Write].itsm_request.* – ограничивает доступ ко всем полям пользователям без роли ITSM agent. Ограничение работает для каждого поля, для которого не создано иного правила контроля доступа.

Рассмотрим разницу между ними.

Так как в этом правиле не указываются роли и условия, оно является разрешающим правилом контроля доступа.

[Write].itsm_request.additional_comments

ПолеЗначение
Операциязапись
Игнорируется админомtrue
ТаблицаЗапросы
Для всех полейfalse
КолонкаДополнительные комментарии

Это правило разрешает доступ на редактирование всех полей в таблице Запросы для пользователей с ролью ITSM_agent. Для пользователей без этой роли все поля таблицы Запросы недоступны для редактирования.

[Write].itsm_request.*

ПолеЗначение
Операциязапись
Игнорируется админомtrue
ТаблицаЗапросы
Для всех полейtrue
РолиITSM_agent

Эти правила контроля доступа гарантируют, что заявитель (или любой другой пользователь, который не является агентом) не сможет редактировать поля записи. Только пользователи с ролью ITSM_agent и admin могут это делать. В то же время заявитель может оставлять комментарии для связи с назначенным пользователем или группой.

Другими словами, правило контроля доступа, помеченное знаком звездочки (*), ограничивает работу со всеми полями, кроме тех, которые имеют отдельные правила доступа.

  • No labels