Управление ролями и пользователями
Общее описание
Аутентификация и авторизация пользователей в ESB реализована с использованием платформы для идентификации и управления доступом Keycloak, где конфигурируются все роли и учетные записи пользователей ESB.
Интегрированные программные компоненты, обеспечивающие контроль доступа, включают:
- Клиентское приложение – UI Frontend + Nginx
- Бэкенд-сервис – UI Backend
- Провайдер идентификации – Keycloak
Вы можете выполнять все стандартные операции с пользователями, ролями, группами, сессиями и т.д. стандартными методами платформы Keycloak.
Все операции с пользователями, ролями и группами ESB выполняются в пространстве realm с названием esb.
Realm в Keycloak - это изолированное пространство, в котором конфигурируются пользователи, клиентские приложения, роли и группы. Это позволяет разделять зоны аутентификации и авторизации. Realm пространство master в Keycloak является системным, оно предназначено только для администрирования Keycloak.
В данном разделе представлено краткое описание возможностей интерфейса Keycloak применительно к настройкам безопасности ESB. Полная документация платформы Keycloak опубликована на официальном сайте www.keycloak.org.
Регистрация пользователя
Для того чтобы зарегистрировать пользователя ESB в Keycloak, необходимо выполнить действия, описанные ниже.
Настройки в ESB
- Создать в интерфейсе ESB домены, к которым пользователь должен иметь доступ, или убедиться в том, что они есть. При создании в ESB домена автоматически создается группа в Keycloak, в которую можно будет добавить пользователя.
Настройки в Keycloak
- Зарегистрировать пользователя. Подробная информация приведена в разделе Пользователи ESB в Keycloak.
- Добавить пользователя в группы, соответствующие доменам, с которыми пользователь будет работать.
- Назначить пользователю роли. Подробная информация приведена в разделе Роли ESB в Keycloak.
Настройки компонентов
Переменные окружения
Для правильной работы необходимо сконфигурировать следующие переменные окружения:
- AUTHORIZATION_TOKEN_TTL_SECONDS – время жизни токена, который сохраняется в кеш. Значение по умолчанию – 300.
- AUTHORIZATION_INTERNAL_TOKEN_KEY_WORD – проверочная строка, с помощью которой проверяется токен.
- AUTHORIZATION_INTROSPECTION_ENDPOINT – путь до Keycloak для проверки токена, т.е. keycloak_introspection_endpoint.
- AUTHORIZATION_USER_INFO_ENDPOINT – путь до Keycloak для перенаправления на профиль пользователя, т.е. keycloak_userinfo_endpoint.
- AUTHORIZATION_END_SESSION_ENDPOINT – путь до Keycloak для завершения сессии, т.е. keycloak_end_session_endpoint.
- KEYCLOAK_BASE_URL – путь установки Keycloak.
- REALM – имя пространства realm для Keycloak. Значение по умолчанию: esb.
- CLIENT_ID – идентификатор клиента для Keycloak. Значение по умолчанию: ui-backend-admin.
- CLIENT_SECRET – клиентский секрет для доступа в Keycloak.
Настройки сервера Nginx
- Все запросы к внутренним API выполняются с проверкой прав доступа роли (realm_role) и доступности домена (принадлежности пользователя к определенной группе в Keycloak).
- На стороне Nginx дополнительно настроены следующие конечные точки:
- URL {/auth/login} - переход на {realm_authorization_endpoint}`
- URL {/api/auth/token} - переход на {realm_token_endpoint}
- URL {/auth/userinfo} - переход на {realm_userinfo_endpoint}
- URL {/auth/logout} - переход на {realm_end_session_endpoint}
- URl {/auth/admin-console} - переход на KEYCLOAK_BASE_URL/admin/REALM/console
Настройки Keycloak
В Keycloak создаются следующие сущности:
- Новое пространство realm: esb
Настройки realm пространства вы можете просматривать на странице Настройки realm в интерфейсе Keycloak. - В пространстве realm создаются роли:
- Admin – для администраторов
- Editor – для пользователей с правами редактирования
- Viewer – для пользователей с правами только на просмотр.
- Клиенты realm - приложения, которые будут обращаться к Keycloak, например, frontend-public, esb-backend.
Вход администратора в систему
Вход администратора в Keycloak осуществляется по имени и паролю в форме авторизации. Чтобы войти в Keycloak, нажмите в форме входа ссылку Консоль администратора.

Форма авторизации пользователя
На экране отобразится форма авторизации администратора.

Форма авторизации администратора
После успешной авторизации администратора выполняется переход в Keycloak.
На странице Управление realm выберите esb, щелкнув по названию.

Выбор пространства realm
Переход к информации о пользователе из приложения ESB
Вы можете перейти в профиль авторизованного пользователя ESB в Keycloak прямо из приложения ESB. Для этого нажмите кнопку Профиль, расположенную на карточке профиля в правом верхнем углу экрана приложения. Просмотр информации собственного профиля доступен любому пользователю ESB. При наличии соответствующих прав доступа к профилю пользователь может редактировать свои данные.
Роли ESB в Keycloak
Роли, зарегистрированные для ESB, отображаются В Keycloak на странице Роли realm.

Роли ESB в Keycloak
В realm пространстве esb для управлением доступом к приложению ESB предназначены три предсозданные роли:
- Admin – присвоены все права доступа
- Editor – присвоены права на просмотр/редактирование/ограниченное удаление
- Viewer – присвоены права только на просмотр.
Помимо этих ролей, в пространстве realm существуют системные роли, которые предназначены для работы внутренних сервисов Keycloak - аутентификация, конфигруирование параметров профиля и т.д.
Эти роли назначаются в Keycloak автоматически.
Важно!
Системные роли нельзя назначать пользователям ESB. Они назначаются автоматически и их нельзя использовать при настройке профилей пользователей.
Системные роли Keycloak:
- default-roles-esb - роль служит контейнером для ролей по умолчанию как realm, так и клиента. Эту роль нельзя удалить.
- offline_access - роль для предоставления автономных токенов
- uma_authorization - роль для авторизации, управления доступом к ресурсам.
Пользователи ESB в Keycloak
Пользователи ESB регистрируются администратором в Keycloak на странице Пользователи.

Пользователи ESB
Чтобы просмотреть или отредактировать роль, щелкните мышью на ее имени.
Чтобы создать новую учетную запись, нажмите Добавить пользователя.

Создание пользователя в Keycloak
Имя пользователя Username всегда сохранятся строчными буквами независимо от регистра на котором оно введено. После сохранения учетной записи пользователя этот параметр становится нередактируемым. Другие параметры можно изменять в режиме редактирования, но имя пользователя останется неизменным.
Вы можете присоединить пользователя к группам с помощью кнопки Присоединиться к группам. Группы в Keycloak соответствуют доменам в ESB – при создании домена в ESB автоматически создается соответствующая группа в Keycloak. Во всплывающем окне вы можете выбрать нужные домены из тех, к которым пользователь должен иметь доступ.
Важно!
При переименовании или удалении группы в Keycloak внесенные изменения не переносятся в ESB. Внесение таких изменений в настройки Keycloak может привести к потере доступа пользователей к существующим доменам.

Выбор групп для пользователя (доменов)
Если вы не выберете ни одной группы, то пользователь будет иметь доступ ко всем доменам.
После сохранения пользователя вы можете присвоить ему роли в системе на вкладке Сопоставление ролей в профиле пользователя. Роль default-roles-esb присваивается новому пользователю автоматически.

Назначение ролей пользователю ESB
Доступ ролей к функциям ESB
Доступ пользователей к определяется принадлежностью пользователя к группам в Keycloak. У администратора есть доступ ко всем доменам.
Таблица составлена с учетом того, что пользователь имеет доступ к домену и, соответственно, к потокам, размещенным в этом домене.
Доступные функции
| Функция / Роль | Viewer (просмотр) | Editor (редактор) | Admin (администратор) |
|---|---|---|---|
| Управление доменами и потоками | |||
| Просмотр таблицы доменов и потоков | Доступно | Доступно | Доступно |
| Поиск в таблице доменов и потоков | Доступно | Доступно | Доступно |
| Создание домена | Недоступно | Недоступно | Доступно |
| Создание потока | Недоступно | Доступно | Доступно |
| Редактирование домена | Недоступно | Недоступно | Доступно |
| Редактирование потока | Недоступно | Доступно | Доступно |
| Удаление домена | Недоступно | Недоступно | Доступно |
| Удаление потока | Недоступно | Недоступно | Доступно |
| Редактор потоков | |||
| Открытие редактора для просмотра потока | Доступно | Доступно | Доступно |
| Просмотр палитры | Доступно | Доступно | Доступно |
| Поиск в палитре | Доступно | Доступно | Доступно |
| Переключение код\схема | Доступно | Доступно | Доступно |
| Переключение масштабирования и центровки | Доступно | Доступно | Доступно |
| Просмотр деталей добавленного блока | Доступно | Доступно | Доступно |
| Добавление блока из палитры | Недоступно | Доступно | Доступно |
| Перетаскивание блока в области редактора | Недоступно | Доступно | Доступно |
| Изменение свойств блока (в т.ч. переименование) | Недоступно | Доступно | Доступно |
| Удаление блока из области редактора | Недоступно | Доступно | Доступно |
| Активация потока | Недоступно | Доступно | Доступно |
| Откат изменений | Недоступно | Доступно | Доступно |
| Деактивация потока | Недоступно | Доступно | Доступно |
| Создание системы (для подключения) | Недоступно | Доступно | Доступно |
| Выбор системы (для подключения) | Недоступно | Доступно | Доступно |
| Создание подключения | Недоступно | Доступно | Доступно |
| Выбор подключения | Недоступно | Доступно | Доступно |
| Управление версиями | |||
| Просмотр списка версий | Доступно | Доступно | Доступно |
| Сохранение версии | Недоступно | Доступно | Доступно |
| Сравнение версий | Доступно | Доступно | Доступно |
| Удаление версий | Недоступно | Недоступно | Доступно |
| Открытие версии из списка в редакторе | Доступно | Доступно | Доступно |
| Управление файлами | |||
| Просмотр деталей добавленных файлов | Доступно | Доступно | Доступно |
| Скачивание файла через браузер | Недоступно | Доступно | Доступно |
| Добавление файлов | Недоступно | Доступно | Доступно |
| Редактирование файлов | Недоступно | Доступно | Доступно |
| Удаление файлов | Недоступно | Недоступно | Доступно |
| Управление соединениями | |||
| Просмотр деталей добавленных систем и соединений | Недоступно | Доступно | Доступно |
| Просмотр конфиденциальных параметров систем и соединений | Недоступно | Доступно | Доступно |
| Список доменов, в которых доступна система и соединение | Доступно Примечание: В списке отображаются только те домены, к которым настроен доступ в Keycloak | Доступно Примечание: В списке отображаются только те домены, к которым настроен доступ в Keycloak | Доступно |
| Добавление систем и соединений | Недоступно | Доступно | Доступно |
| Редактирование систем и соединений | Недоступно | Недоступно | Доступно |
| Удаление систем и соединений | Недоступно | Недоступно | Доступно |