Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Управление группами пользователей

1. Описание

1.1. Ролевая модель и назначение прав

В Cloudlink используется ролевая модель доступа (RBAC). Роли создаются в Control Panel (Панель управления) и представляют собой набор правил.

Каждое правило состоит из следующих компонентов: service:identifier:access_type

где:

  • service — сервис, к которому применяется доступ

  • identifier — идентификатор ресурса (проект, объект, организация)

  • access_type — тип доступа (read, write, manage, delete и др.).

    keycloak groups overview

Роль может включать в себя несколько правил, а пользователю может быть назначено несколько ролей. Доступ пользователя формируется на основе входящих в них правил.

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

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):

  1. В AD создаются группы.

  2. В Keycloak настраивается LDAP/AD-плагин (адрес AD, учетные данные, список групп).

  3. Выполняется импорт групп в Keycloak.

  4. Далее группы синхронизируются в Portal Manager через RabbitMQ.

Цепочка передачи изменений:

schm group management

Управление составом таких групп выполняется в AD.

3. Принудительная синхронизация и отображение групп

Метод синхронизации также выполняется автоматически в фоновом режиме (раз в час). При необходимости его можно запустить вручную через IAM API:

POST /v1/groups/sync-with-keycloak

Метод:

  • получает список групп из Keycloak;

  • сравнивает их с данными Portal Manager;

  • выявляет расхождения;

  • синхронизирует группы и их участников.

Метод рекомендуется использовать как дополнительный механизм синхронизации при необходимости.

В Portal Manager группы доступны на вкладке Группы в верхнем меню. На странице доступны следующие действия:

  • просмотр списка групп;

  • просмотр состава участников;

  • назначение ролей;

  • создание и удаление локальных групп.

keycloak groups portal manager

4. Управление группами пользователей

Группы в Keycloak позволяют задавать общие атрибуты для пользователей. Пользователь может состоять в нескольких группах и наследовать их атрибуты.

Управление группами выполняется в разделе Группы. Группы имеют иерархическую структуру: у группы может быть несколько подгрупп, но только один родитель.

В списке отображаются только группы верхнего уровня. Чтобы просмотреть или изменить дочерние группы, выберите родительскую группу и откройте вкладку Child groups. В дополнительном меню дочерних групп доступны те же операции, что и для родительских групп.

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

  1. В боковой панели выберите раздел Группы.

  2. Нажмите Создать группу.

  3. Введите название группы.

  4. Нажмите Создать.

    keycloak groups 1

4.2. Создание дочерней группы

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

  1. В боковой панели выберите раздел Группы.

  2. Выберите ранее созданную группу и в строке с ней нажмите на меню , а затем выберите Create child group.

  3. Введите название дочерней группы и нажмите Создать.

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

Для добавления пользователей в группу выполните следующие действия:

  1. В боковой панели выберите раздел Группы.

  2. Нажмите на название нужной группы.

  3. Перейдите на вкладку Members.

  4. Нажмите Add member.

  5. Отметьте пользователей, которых необходимо добавить в группу и нажмите Добавить.

  6. Нажмите Добавить.

keycloak groups 2

4.4. Синхронизация групп в Keycloak

После настройки провайдера LDAP синхронизируются только пользователи. Для получения групп из служб каталогов, необходимо в настройке соответствующего провайдера добавить сопоставление с группами. Для этого:

  1. Аутентифицируйтесь на портале Keycloak с учетной записью с правами администратора.

  2. Выберите нужное пространство (realm).

  3. Перейдите в раздел Федерация пользователей (User Federation).

  4. Нажмите на название нужного провайдера.

  5. Перейдите на вкладку Mappers.

  6. Нажмите Add mapper.

    1. Введите следующие данные:

      • Name — произвольное имя сопоставления.

      • Mapper type — group-ldap-mapper.

      • LDAP Groups DN — DN, с которого Keycloak будет искать группы в LDAP.

    2. При необходимости измените дополнительные параметры:

      • 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.

        keycloak groups 3
  7. Нажмите Save для сохранения конфигурации.

Чтобы запустить синхронизацию групп:

  1. Перейдите на вкладку Mappers и откройте созданный mapper.

  2. В списке Actions выберите Sync LDAP groups to Keycloak.

После синхронизации проверьте группы в разделе Группы.