# Редактор политик

Доступ пользователей к **Webim** реализован при помощи подхода [Attribute-based access control (ABAC)](https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%BE%D0%B2), базируемом на атрибутах действий, объектов и т.п. Разграничение прав доступа в **Webim** происходит на основе вычисления политик и правил с определённым набором условий для проверки атрибутов. Таким образом, доступы пользователя не привязаны просто к одной из существующих в системе ролей, а могут настраиваться гибко.

Ниже описаны примеры работы с политиками в **Редакторе политик**. Теоретические основы работы с политиками описаны в соответствующих статьях ([Базовые понятия](https://webim.ru/kb/for-admins/access-control-system/base.html), [Выражения](https://webim.ru/kb/for-admins/access-control-system/expressions.html)).

Подробности создания, редактирования и удаления ролей описаны в [этой статье](https://webim.ru/kb/for-admins/add-delete-roles.html).

!!! Warning "Внимание!"
    Работа с ролями доступна только для клиентов, подключивших [соответствующую тарифную опцию](https://webim.ru/price/).

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

Для того, чтобы настроить политику для роли, в **Панели управления Webim** перейдите на страницу **Управление политиками**. В дереве с корневой группой политик правой кнопкой мыши кликните на роль, для которой хотите добавить политику, и выберите **Добавить политику** или **Добавить группу политик** – в зависимости от желаемого уровня. В данном примере добавим сначала группу политик.

![Добавление группы политик](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-context-menu-policy-set.webp){ style="width: 350px; max-width: 100%" }

При помощи контекстного меню можно также поменять положение группы политик относительно других групп – поднять выше или опустить ниже, отключить или удалить группу политик или политику.

### Добавление группы политик для роли

Для примера добавим для роли *Кастомная роль* с идентификатором `customrole` группу политик. Через контекстное меню группы политик **Разрешения сотрудников по ролям** добавляем вложенную группу политик. Заполняем поля, как показано ниже, и нажимаем **Сохранить**.

![Добавление группы в редакторе политик](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-add-customrole-group.webp){ style="width: 1350px; max-width: 100%" }

Через контекстное меню можно поднять группу политик так, чтобы новая группа политик была выше по отношению к группе политик *Оператор*.

![Перемещённая группа политик](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-customrole-group-moved-up.webp){ style="width: 1350px; max-width: 100%" }

!!! Note "N.B."
    Поскольку группа политик **Разрешения сотрудников по ролям**, согласно своему алгоритму комбинирования, учитывает лишь первый применимый элемент, а группа политик **Оператор** подходит для любого сотрудника, решение любого элемента ниже группы политик **Оператор** фактически учитываться не будет.

Теперь есть контейнер, все элементы внутри которого, согласно назначению, будут применяться только к сотрудникам с ролью *Кастомная роль*. Опционально можно сразу включить новую группу политик через контекстное меню, но делать это рекомендуется уже после того, как будет настроен минимально необходимый набор прав. И до того момента сотрудник с ролью, для которой не настроены права, будет считаться обычным оператором.

!!! Note "N.B."
    Все новые элементы создаются по умолчанию неактивными. Это значит, что они не участвуют в принятии решений о доступе.

### Настройка доступа к списку сотрудников

В группу политик **Кастомная роль** добавляем политику **Сотрудники**. Для удобства можем считать, что это нечто наподобие папки, в которой будут содержаться все связанные с действиями над сотрудниками правила доступа. Дополнительные фильтры в назначении в данном случае не требуются.

![Добавление политики Сотрудники](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-add-agents-policy.webp){ style="width: 1350px; max-width: 100%" }

Для доступа к некой сущности в системе предполагается наличие прав:

  1. На доступ к UI и необходимым для его работы API.

  1. На непосредственное действие над сущностью: чтение, редактирование и т. п.

Для начала добавим доступ к UI и API. Это можно рассматривать как доступ к самому списку. Для этого в политику **Сотрудники** добавим новое правило **Доступ к списку**.

![Добавление нового правила Доступ к списку](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-access-to-agents-list.webp){ style="width: 1350px; max-width: 100%" }

Если все добавленные элементы дерева включены, то сейчас у оператора с ролью *Кастомная роль* будет отображаться пустой список сотрудников. Чтобы в нем отображались сотрудники, необходимо разрешить чтение данных о других сотрудниках. Для этого создадим и настроим новое правило **Чтение данных о сотрудниках** в политике **Сотрудники**.

![Добавление нового правила Чтение данных о сотрудниках](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-read-agent-info.webp){ style="width: 1350px; max-width: 100%" }

### Настройка доступа к профилю

У сотрудника с ролью *Кастомная роль* может быть необходимость обновить свой пароль. Для этого требуются разрешения:

  1. Доступ к API списка сотрудников и к UI профиля

  1. Чтение и обновление данных о себе

!!! Note "N.B."
    Для настройки доступа к сотрудникам уже добавлялось разрешение на доступ к API списка сотрудников. В целом, для доступа к разным функциям может требоваться одно и то же разрешение. В рамках данного руководства рассматривается вариант структуры дерева политик, при котором каждая политика описывает все необходимые для функции разрешения. Соответственно, отключение политики **Сотрудники** не будет влиять на политику **Профиль**.

Добавим политику **Профиль** для связанных с профилем правил доступа.

![Добавление политики Профиль](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-profile-policy.webp){ style="width: 1350px; max-width: 100%" }

Добавим правило на доступ к API сотрудников и UI профиля.

![Добавление правила в политику Профиль](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-add-access-to-profile-rule.webp){ style="width: 1350px; max-width: 100%" }

И разрешение на чтение и обновление данных о себе. В данном случае, кроме обычных условий вроде `субъект = сотрудник` необходимо дополнительное условие `субъект = объект`, которое делает правило применимым только в случае, когда сотрудник выполняет действие над самим собой.

![Добавление разрешения на чтение и обновление данных о себе](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-add-edit-profile-rule.webp){ style="width: 1350px; max-width: 100%" }

### Настройка доступа к чату

Для чата требуются следующие разрешения:

  1. Доступ к UI **РМО**

  1. Видимость секций (вроде *Ожидают ответа*, *В диалоге с Вами* и т.п.)

Создадим политику **Чат**.

![Добавление политики Чат](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-add-chat-policy.webp){ style="width: 1350px; max-width: 100%" }

Создадим правило, разрешающее доступ к UI **РМО**.

![Добавление правила Доступ к РМО](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-add-access-to-chat-rule.webp){ style="width: 1350px; max-width: 100%" }

И правило, разрешающее чтение секций. Рекомендуется ограничить доступные секции до необходимого минимума. В данном случае минимумом будут секции:

  * *Ожидают ответа* (`queue`)

  * *В диалоге с Вами* (`in_chat`)

  * *Офлайн-обращения* (`offline_queue`)

  * *Последние диалоги* (`closed_chats`)

  * *В диалоге с другими* (`in_chat_with_others`)

![Добавление правила Доступные секции](https://webim.ru/kb/img/for-admins/service-pages/policies-editor/policies-add-access-to-sections-rule.webp){ style="width: 1350px; max-width: 100%" }

Теперь, после включения созданной политики и правил, у сотрудника с ролью *Кастомная роль* появляется возможность общения с посетителями.

---

Источник: https://webim.ru/kb/for-admins/service-pages/policies-editor.html
