Делегирование административных прав в Keycloak
Введение
Данная инструкция поможет администраторам предоставить отдельным сотрудникам (например, руководителям отделов или локальным администраторам) права на управление пользователями и их ролями без предоставления полных прав супер-администратора Keycloak.
Клиент realm-management
Назначение
Клиент realm-management — это специальный системный клиент в Keycloak, который предоставляет роли для гранулярного управления правами в рамках реалма Visiology. Этот клиент является инструментом для делегирования административных полномочий без предоставления полного доступа к системе.
Ключевые характеристики
Системный клиент – клиент создается автоматически при при создании реалма.
Гибкое управление доступом – предоставляет возможность назначения узконаправленных прав, ограничивая полный административный доступ.
Повышенная безопасность – сокращает риск возникновения угроз безопасности благодаря минимальному объему предоставленных привилегий.
Административные роли realm-management
Полный список ролей
create-client - создание клиентов.
impersonation - возможность войти в систему от имени другого пользователя.
manage-authorization - управление политиками авторизации.
manage-clients - управление клиентами.
manage-events - управление событиями и аудитом.
manage-identity-providers - управление провайдерами идентификации.
manage-realm - управление настройками реалма.
manage-users - управление пользователями.
query-clients - просмотр списка клиентов.
query-groups - просмотр групп.
query-realms - просмотр реалмов.
query-users - просмотр пользователей.
view-authorization - просмотр политик авторизации.
view-clients - просмотр клиентов (включает query-clients).
view-events - просмотр событий.
view-identity-providers - просмотр провайдеров идентификации.
view-realm - просмотр настроек реалма.
view-users - просмотр пользователей (включает query-groups и query-users).
realm-admin - полные административные права (составная роль, включает все вышеперечисленные).
Роль realm-admin
Важно!
Роль realm-admin предоставляет полный административный доступ к реалму и включает в себя все остальные роли realm-management. Эта роль должна использоваться с особой осторожностью и назначаться только доверенным администраторам.
Практические сценарии делегирования
Сценарий 1: Администратор пользователей
Задача: Предоставить сотруднику права на управление пользователями без доступа к настройкам системы.
Необходимые роли:
manage-users- для создания, редактирования и удаления пользователей.view-users- для просмотра списка пользователей.query-groups- для работы с группами (включается в view-users).
Сценарий 2: Менеджер групп и ролей
Задача: Предоставить права на управление группами пользователей и назначение ролей.
Необходимые роли:
manage-users- для назначения ролей пользователям.view-users- для просмотра пользователей.query-groups- для работы с группами.
Сценарий 3: Администратор клиентов
Задача: Предоставить права на управление клиентскими приложениями.
Необходимые роли:
manage-clients- для управления клиентами.view-clients- для просмотра клиентов.query-clients- для поиска клиентов (включается в view-clients).
Сценарий 4: Аудитор системы
Задача: Предоставить права только на просмотр для аудита.
Необходимые роли:
view-users- просмотр пользователей.view-clients- просмотр клиентов.view-events- просмотр событий.view-realm- просмотр настроек реалма.
Пошаговое руководство: Создание роли "Администратор пользователей"
Шаг 1: Создание составной роли
Войдите в консоль администратора Keycloak по адресу:
<domain>/v3/keycloak/admin/Visiology/console/
где<domain>– домен или IP-адрес сервера платформы.Перейдите в раздел Роли Realm и нажмите Create role:
Заполните поля:
Наименование роли:
user-administratorОписание:
Администратор пользователей - управление пользователями без полных административных правНажмите Сохранить.
Шаг 2: Назначение ролей клиента realm-management
В созданной роли
user-administratorперейдите на вкладку Ассоциированные роли:Нажмите кнопку Assign role и в открывшемся окне выберите Filter by clients:
Найдите клиент realm-management и назначьте следующие роли:
manage-usersview-usersquery-groups
Нажмите Assign.
Шаг 3: Назначение роли пользователю
Перейдите в раздел Users и выберите нужного пользователя:
Перейдите на вкладку Role mapping и нажмите Assign role:
Измените фильтр Filter by clients на Filter by realm roles и выберите роль
user-administrator:Нажмите Assign.
Шаг 4: Проверка прав
Пользователь с ролью user-administrator теперь может:
✅ Создавать новых пользователей.
✅ Редактировать профили пользователей.
✅ Назначать роли пользователям.
✅ Управлять группами пользователей.
✅ Сбрасывать пароли пользователей.
При этом он не может:
❌ Изменять настройки реалма.
❌ Управлять клиентами.
❌ Изменять системные настройки.
Альтернативный подход: Создание группы администраторов
Преимущества использования групп
Упрощенное управление правами для множества пользователей.
Наследование ролей членами группы.
Возможность создания иерархии групп.
Создание группы
Перейдите в раздел Группы и нажмите Создать группу:
Укажите имя:
User Administratorsи нажмите Создать:
Назначение ролей группе
Перейдите в созданную группу и щелкните по вкладке Role mapping:
Нажмите Assign role и в открывшемся окне назначьте созданную ранее роль
user-administrator:Нажмите Assign.
Добавление пользователей в группу
Перейдите в раздел Пользователи и выберите нужного пользователя:
В открывшемся окне перейдите на вкладку Группы и нажмите кнопку Join Group:
Выберите группу
User Administratorsи нажмите Присоединиться:
Рекомендации по безопасности
Принцип минимальных привилегий
Назначайте только те роли, которые необходимы для выполнения конкретных задач.
Регулярно проводите аудит назначенных ролей.
Удаляйте неиспользуемые роли и права.
Мониторинг и аудит
Включите логирование административных действий.
Регулярно проверяйте логи на предмет подозрительной активности.
Используйте роль
view-eventsдля делегирования аудита.
Разделение обязанностей
Не назначайте одному пользователю полный набор административных ролей.
Создавайте специализированные роли для конкретных задач.
Используйте временные роли для краткосрочных задач.
Часто задаваемые вопросы
Вопрос: Можно ли изменить состав ролей в realm-admin?
Ответ: Нет, роль realm-admin является системной составной ролью и автоматически включает все административные роли realm-management. Для кастомизации прав создавайте собственные составные роли.
Вопрос: Как отозвать административные права?
Ответ: Перейдите к пользователю или группе, на вкладке Role mapping найдите назначенную роль и нажмите Unassign.
Вопрос: Можно ли назначить роли временно?
Ответ: Keycloak не поддерживает временные роли из коробки. Для временного доступа создайте процедуру ручного назначения и отзыва ролей.
Вопрос: Как проверить, какие роли назначены пользователю?
Ответ: В профиле пользователя на вкладке Role mapping отображаются все назначенные роли, включая унаследованные от групп.
Смотрите также
На этой странице
Нужна дополнительная помощь?