Управление группами пользователей
1. Описание
1.1. Ролевая модель и назначение прав
В Cloudlink используется ролевая модель доступа (RBAC). Роли создаются в Control Panel (Панель управления) и представляют собой набор правил.
Каждое правило состоит из следующих компонентов: service:identifier:access_type
где:
-
service— сервис, к которому применяется доступ -
identifier— идентификатор ресурса (проект, объект, организация) -
access_type— тип доступа (read, write, manage, delete и др.).
Роль может включать в себя несколько правил, а пользователю может быть назначено несколько ролей. Доступ пользователя формируется на основе входящих в них правил.
Роли можно назначать напрямую пользователям, однако при большом количестве учетных записей рекомендуется использовать группы.
1.2. Группы пользователей: создание и управление
Группы используются для упрощения администрирования. Роли назначаются группе, и все ее участники автоматически наследуют соответствующие права.
Группы могут быть созданы в сервисах:
-
Keycloak;
-
Portal Manager.
Группы из Keycloak:
-
Имеют заполненное поле
keycloak_idв Portal Manager. -
Состав участников и название групп редактируются только в Keycloak.
-
В Portal Manager доступны только для просмотра состава.
-
Разрешено изменять только список назначенных ролей (
role_names). -
Могут быть включены в локальные группы Portal Manager.
-
Синхронизируются через RabbitMQ.
Локальные группы Portal Manager:
-
Не имеют
keycloak_id. -
Полностью управляются из Portal Manager.
-
C этими группами пользователей доступны операции: создание, переименование, добавление и удаление пользователей, удаление группы, назначение ролей.
Рекомендуется именовать группы в соответствии с их функциональной ролью, например: devops, editors, admins, billing-managers. В рамках организации следует придерживаться единого правила наименования.
2. Интеграция и синхронизация
Keycloak является центральной системой управления пользователями и группами.
При изменениях в Keycloak (создание группы, изменение состава, удаление пользователя и т.д.) формируются события, которые отправляются в RabbitMQ. Portal Manager получает эти события и обновляет локальные данные.
Поддерживается интеграция с Active Directory (AD):
-
В AD создаются группы.
-
В Keycloak настраивается LDAP/AD-плагин (адрес AD, учетные данные, список групп).
-
Выполняется импорт групп в Keycloak.
-
Далее группы синхронизируются в Portal Manager через RabbitMQ.
Цепочка передачи изменений:
Управление составом таких групп выполняется в AD.
3. Принудительная синхронизация и отображение групп
Метод синхронизации также выполняется автоматически в фоновом режиме (раз в час). При необходимости его можно запустить вручную через IAM API:
POST /v1/groups/sync-with-keycloak
Метод:
-
получает список групп из Keycloak;
-
сравнивает их с данными Portal Manager;
-
выявляет расхождения;
-
синхронизирует группы и их участников.
Метод рекомендуется использовать как дополнительный механизм синхронизации при необходимости.
В Portal Manager группы доступны на вкладке Группы в верхнем меню. На странице доступны следующие действия:
-
просмотр списка групп;
-
просмотр состава участников;
-
назначение ролей;
-
создание и удаление локальных групп.
4. Управление группами пользователей
Группы в Keycloak позволяют задавать общие атрибуты для пользователей. Пользователь может состоять в нескольких группах и наследовать их атрибуты.
Управление группами выполняется в разделе Группы. Группы имеют иерархическую структуру: у группы может быть несколько подгрупп, но только один родитель.
В списке отображаются только группы верхнего уровня. Чтобы просмотреть или изменить дочерние группы, выберите родительскую группу и откройте вкладку Child groups. В дополнительном меню дочерних групп доступны те же операции, что и для родительских групп.
4.1. Создание группы
-
В боковой панели выберите раздел Группы.
-
Нажмите Создать группу.
-
Введите название группы.
-
Нажмите Создать.
4.2. Создание дочерней группы
Для создания дочерней группы выполните следующие действия:
-
В боковой панели выберите раздел Группы.
-
Выберите ранее созданную группу и в строке с ней нажмите на меню ︙, а затем выберите Create child group.
-
Введите название дочерней группы и нажмите Создать.
4.3. Добавление пользователей в группы
Для добавления пользователей в группу выполните следующие действия:
-
В боковой панели выберите раздел Группы.
-
Нажмите на название нужной группы.
-
Перейдите на вкладку Members.
-
Нажмите Add member.
-
Отметьте пользователей, которых необходимо добавить в группу и нажмите Добавить.
-
Нажмите Добавить.
4.4. Синхронизация групп в Keycloak
После настройки провайдера LDAP синхронизируются только пользователи. Для получения групп из служб каталогов, необходимо в настройке соответствующего провайдера добавить сопоставление с группами. Для этого:
-
Аутентифицируйтесь на портале Keycloak с учетной записью с правами администратора.
-
Выберите нужное пространство (realm).
-
Перейдите в раздел Федерация пользователей (User Federation).
-
Нажмите на название нужного провайдера.
-
Перейдите на вкладку Mappers.
-
Нажмите Add mapper.
-
Введите следующие данные:
-
Name — произвольное имя сопоставления.
-
Mapper type —
group-ldap-mapper. -
LDAP Groups DN — DN, с которого Keycloak будет искать группы в LDAP.
-
-
При необходимости измените дополнительные параметры:
-
Group Name LDAP Attribute — атрибут LDAP, используемый как имя группы.
-
Group Object Classes — классы объектов групп (например:
groupOfNames,groupOfUniqueNames,posixGroup). -
Preserve Group Inheritance — сохраняет иерархию групп из LDAP в Keycloak. Если при синхронизации возникает ошибка
unknown error, отключите параметр. -
Ignore Missing Groups — если включено, группы, отсутствующие в LDAP, не будут удаляться из Keycloak.
-
Membership LDAP Attribute — атрибут LDAP, содержащий список пользователей группы (например
member,uniqueMember). -
Membership Attribute Type — способ указания пользователя в группе:
-
DN— используется полный DN пользователя -
UID— используется идентификатор пользователя
-
-
Membership User LDAP Attribute — атрибут пользователя для сопоставления членства в группах.
-
LDAP Filter — фильтр LDAP для ограничения поиска групп.
-
Mode — режим синхронизации:
-
READ_ONLY— Keycloak только читает группы из LDAP -
LDAP_ONLY— группы используются напрямую из LDAP -
IMPORT— группы импортируются в базу Keycloak
-
-
User Groups Retrieve Strategy — способ получения групп пользователя. Выберите один из способов:
-
LOAD_GROUPS_BY_MEMBER_ATTRIBUTE -
GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE -
LOAD_GROUPS_BY_MEMBER_ATTRIBUTE_RECURSIVELY
-
-
Member-Of LDAP Attribute — атрибут пользователя LDAP со списком групп (например
memberOf). -
Mapped Group Attributes — атрибуты групп LDAP, которые нужно синхронизировать в Keycloak.
-
-
-
Нажмите Save для сохранения конфигурации.
Чтобы запустить синхронизацию групп:
-
Перейдите на вкладку Mappers и откройте созданный mapper.
-
В списке Actions выберите Sync LDAP groups to Keycloak.
После синхронизации проверьте группы в разделе Группы.