Делегирование административных прав в Keycloak

Делегирование административных прав в 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: Создание составной роли

  1. Войдите в консоль администратора Keycloak по адресу:
    <domain>/v3/keycloak/admin/Visiology/console/
    где <domain> – домен или IP-адрес сервера платформы.

  2. Перейдите в раздел Роли Realm и нажмите Create role:

    realm-roles.png
  3. Заполните поля:

    • Наименование роли: user-administrator

    • Описание: Администратор пользователей - управление пользователями без полных административных прав

    • Нажмите Сохранить.

Шаг 2: Назначение ролей клиента realm-management

  1. В созданной роли user-administrator перейдите на вкладку Ассоциированные роли:

    associated-roles.png
  2. Нажмите кнопку Assign role и в открывшемся окне выберите Filter by clients:

    filter.png
  3. Найдите клиент realm-management и назначьте следующие роли:

    • manage-users

    • view-users

    • query-groups

      assign.png
  4. Нажмите Assign.

Шаг 3: Назначение роли пользователю

  1. Перейдите в раздел Users и выберите нужного пользователя:

    users.png
  2. Перейдите на вкладку Role mapping и нажмите Assign role:

    role-mapping.png
  3. Измените фильтр Filter by clients на Filter by realm roles и выберите роль user-administrator:

    assign-roles.png
  4. Нажмите Assign.

Шаг 4: Проверка прав

Пользователь с ролью user-administrator теперь может:

  • ✅ Создавать новых пользователей.

  • ✅ Редактировать профили пользователей.

  • ✅ Назначать роли пользователям.

  • ✅ Управлять группами пользователей.

  • ✅ Сбрасывать пароли пользователей.

При этом он не может:

  • ❌ Изменять настройки реалма.

  • ❌ Управлять клиентами.

  • ❌ Изменять системные настройки.

Альтернативный подход: Создание группы администраторов

Преимущества использования групп

  • Упрощенное управление правами для множества пользователей.

  • Наследование ролей членами группы.

  • Возможность создания иерархии групп.

Создание группы

  1. Перейдите в раздел Группы и нажмите Создать группу:

    create-group.png
  2. Укажите имя: User Administrators и нажмите Создать:

    create-group2.png

Назначение ролей группе

  1. Перейдите в созданную группу и щелкните по вкладке Role mapping:

    role-mapping-group.png
  2. Нажмите Assign role и в открывшемся окне назначьте созданную ранее роль user-administrator:

    user-administrator.png

     

  3. Нажмите Assign.

Добавление пользователей в группу

  1. Перейдите в раздел Пользователи и выберите нужного пользователя:

    select-user.png
  2. В открывшемся окне перейдите на вкладку Группы и нажмите кнопку Join Group:

    join-group.png
  3. Выберите группу User Administrators и нажмите Присоединиться:

    join.png

Рекомендации по безопасности

Принцип минимальных привилегий

  • Назначайте только те роли, которые необходимы для выполнения конкретных задач.

  • Регулярно проводите аудит назначенных ролей.

  • Удаляйте неиспользуемые роли и права.

Мониторинг и аудит

  • Включите логирование административных действий.

  • Регулярно проверяйте логи на предмет подозрительной активности.

  • Используйте роль view-events для делегирования аудита.

Разделение обязанностей

  • Не назначайте одному пользователю полный набор административных ролей.

  • Создавайте специализированные роли для конкретных задач.

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

Часто задаваемые вопросы

Вопрос: Можно ли изменить состав ролей в realm-admin?

Ответ: Нет, роль realm-admin является системной составной ролью и автоматически включает все административные роли realm-management. Для кастомизации прав создавайте собственные составные роли.

Вопрос: Как отозвать административные права?

Ответ: Перейдите к пользователю или группе, на вкладке Role mapping найдите назначенную роль и нажмите Unassign.

Вопрос: Можно ли назначить роли временно?

Ответ: Keycloak не поддерживает временные роли из коробки. Для временного доступа создайте процедуру ручного назначения и отзыва ролей.

Вопрос: Как проверить, какие роли назначены пользователю?

Ответ: В профиле пользователя на вкладке Role mapping отображаются все назначенные роли, включая унаследованные от групп.


Смотрите также

Создание, редактирование и удаление пользователей