Правила контроля доступа позволяют вам ограничивать доступ к объектам и операциям в зависимости от ваших бизнес-процессов.
Например, вы можете ограничить пользователей в изменении статусов задач, которые не включены в процесс (редактирование доступно только ответственному).
Проверка по правилам ACL выполняется с помощью комбинации трех полей:
- Роли
- Условия
- Скрипт
Если поле Роли правила контроля доступа пустое, следующим шагом будет проверка условия, если какое-либо конкретное условие было указано. Если поле Условия пустое, тогда проверяется поле Скрипт, предназначенное для проверки конкретных условий и атрибутов.
Схема ниже показывает процесс проверки по правилам контроля доступа:
Создание правила контроля доступа
Требуемая роль: security_admin.
Повышение роли до security_admin позволяет создавать или выполнять любые другие операции с правилами контроля доступа.
Чтобы создать правило контроля доступа, выполните следующие шаги:
- Перейдите в Безопасность → Контроль доступа (ACL).
- Нажмите Создать и заполните поля.
- Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
Поля формы Контроль доступа
Поле | Обязательно | Описание | ||||
---|---|---|---|---|---|---|
Наименование | Да | Поле доступно только для чтения и заполняется автоматически системой после сохранения записи. Слово в квадратных скобках указывает на операцию. Имя после первой точки указывает на защищенную таблицу и колонку (если она указан в поле Колонка): [Delete].sys_history [Read].sys_history.created_by Это поле поддерживает подстановочный знак звездочки (*) вместо имени записи, таблицы или поля, что позволяет выбирать все объекты, соответствующие типу записи, всем таблицам или всем полям.
| ||||
Операция | Нет | Выберите операцию для защиты. Доступные варианты:
Одно правило контроля доступа может защитить только одну операцию. Чтобы защитить более одной операции, создайте для каждой их них отдельное правило контроля доступа. | ||||
Активен | Нет | Установите флажок, чтобы активировать правило контроля доступа. | ||||
Игнорируется админом | Нет | Установите флажок, чтобы разрешить системным администраторам (пользователям с ролью 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