Управление пользователями
При входе пользователя в Платформу средствами Подсистемы управления доступом выполняется поиск соответствующей учётной записи в собственном хранилище. Если учётная запись не найдена, поиск продолжается в преднастроенных внешних базах данных. Вход в Платформу разрешается, если учётная запись пользователя найдена.
Управление пользователями выполняется через Портал управления доступом (Keycloak).
Инструкции по выполнению операций с пользователями приведены в официальной документации Keycloak.
Чтобы добавить LDAP-провайдера в Портале управления доступом Keycloak:
-
Перейдите в пункт меню User Federation.
-
В выпадающем списке Add new provider выберите пункт ldap.
-
Задайте параметры подключения к LDAP-провайдеру:
-
Console display name — имя LDAP-провайдера.
-
Vendor — LDAP-провайдер, который используется в вашей сети. Если вы используете
FreeIPA, выберитеRad Hat Directory Server. -
Connection URL — URL для соединения с LDAP-провайдером, например
ldap://10.28.227.59/. Нажмите кнопку Test connection, чтобы убедиться, что связь с сервером установлена. -
Bind Type — укажите значение
simple. -
Bind DN — учётная запись пользователя, которая будет использоваться для доступа к LDAP-провайдеру, например,
CN=Administrator,CN=Users,DC=test,DC=local. Учётная запись должна иметь права администратора. -
Bind Credential — пароль учётной записи, которая будет использоваться для доступа к LDAP-провайдеру. Нажмите кнопку Test Authentication. Если результат – Success, настройка выполнена успешно.
-
Edit mode — режим редактирования:
- READ_ONLY — пользовательские данные будут доступны только для чтения.
- WRITABLE — данные будут синхронизироваться с LDAP-провайдером только по требованию.
- UNSYNCED — пользовательские данные будут импортированы, но не синхронизированы с LDAP-провайдером.
-
Users DN — домен пользователей, например,
CN=Administrator,CN=Users,DC=test,DC=local. -
Username LDAP attribute — укажите значение
sAMAccountName. -
RDN LDAP attribute — укажите значение
cn. -
UUID LDAP attribute — укажите значение
objectGUID. -
User Object Classes — укажите значение
person, organizationalPerson, user, inetOrgPerson.
-
-
При необходимости задайте параметры на других вкладках.
-
Нажмите кнопку Save.
Чтобы настроить присвоение ролей и групп всем пользователям из LDAP-провайдера:
-
Перейдите в пункт меню User Federation.
-
Выберите созданного поставщика хранилища, нажав на его название в списке.
-
Перейдите на вкладку Mappers.
-
Нажмите кнопку Create.
-
Задайте параметры:
-
Name — название сопоставления.
-
Mapper Type — тип сопоставления:
-
group-ldap-mapper— сопоставление по принадлежности к группе (в основном используется только этот тип сопоставления).
-
-
-
Заполните остальные поля, которые появляются при выборе из списка Mapper Type.
-
Нажмите кнопку Save.
Создание пользователей выполняется в разделе Users Keycloak. Пользователи Платформы создаются в одной из следующих областей безопасности (realm):
master— только для учётных записей Администраторов Платформы.mcs_users— для учётных записей Пользователей Портала самообслуживания.mcs_admins— для учётных записей Пользователей Портала администратора.
В рамках интеграции с LDAP-провайдером:
- Organisation Unit Users синхронизируется с областью безопасности (realm)
mcs_usersи содержит учётные записи Портала самообслуживания. - Organisation Unit Admins синхронизируется с областью безопасности (realm)
mcs_adminsи содержит учётные записи Портала администратора.
Схема синхронизации учётных записей приведена на рисунке 1.

OpenID Connect — основной протокол обмена данными в рамках идентификации и аутентификации между Порталом самообслуживания, Keycloak и IAM.
-
Выполните подготовительные операции (подробнее — в разделе Вход для Администратора Платформы)
-
Создайте сервисную учётную запись:
# openstack user create --password <ПАРОЛЬ> <ИМЯ_ПОЛЬЗОВАТЕЛЯ>Пример ожидаемого результата+---------------------+----------------------------------+| Field | Value |+---------------------+----------------------------------+| domain_id | default || enabled | True || id | <USER_ID> || name | <ИМЯ_ПОЛЬЗОВАТЕЛЯ> || options | {} || password_expires_at | None |+---------------------+----------------------------------+ -
Назначьте роль
mcs_co_ownerв необходимом проекте:# openstack role add --project <ID> --project-domain <DOMAIN_ID> --user <USER_ID> mcs_co_owner -
Создайте конфигурационный файл:
# cat > ~root/s2s.shПример ожидаемого результатаexport OS_USERNAME=<ИМЯ_ПОЛЬЗОВАТЕЛЯ>export OS_PASSWORD=<ПАРОЛЬ>export OS_PROJECT_NAME=<ИМЯ_ПРОЕКТА>export OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_DOMAIN_NAME=<ДОМЕННОЕ_ИМЯ_ПРОЕКТА>export OS_AUTH_URL=http://internal.private.corp.devmail.ru:35357export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2export OS_ENDPOINT_TYPE='internalURL'export OS_ENDPOINT=internalexport OS_INTERFACE=internalexport OS_REGION=RegionOne
С группами доступны следующие действия:
-
Создание новой группы.
-
Редактирование существующей группы:
- Добавление атрибутов.
- Маппинг ролей.
-
Добавление в группу или удаление из группы существующих пользователей.
-
Настройка групп по умолчанию.
-
Удаление группы.
Просмотр списка всех групп доступен в разделе Groups Портала управления доступом.
Просмотр списка пользователей осуществляется в разделе Users Keycloak. Если список не появился сразу, введите * в текстовом поле Search user и нажмите →.
Чтобы просмотреть списки пользователей и ролей при помощи OpenStack CLI:
-
Выполните подготовительные операции (подробнее — в разделе Вход для Администратора Платформы).
-
Выполните команды:
-
Список сервисных пользователей Платформы:
$ openstack user listПример ожидаемого результата+----------------------------------+------------------------------+| ID | Name |+----------------------------------+------------------------------+| 1164e0d1e5714f65882f5420c7cf9754 | panko || 184f0b4df58c415ca332fe34371ce2d1 | katana || 1ba360fba39d49568fecf6451020d8b7 | billing || 312f82fa9c664c1ab344593b38014adb | glance || 4953ca6e3d0e4d2f96dc0a44ca07a31f | magnum || 551a6562ce334f928876b5cba24bb863 | karboii || 596be38558474d5fa530b2fc9ce81b89 | heat || 5cf3309b0ccf4aea90b6ba57ea685fb1 | placement || 6ed244a042b541d79c137873737dc6b8 | cinder || 7611854786e64f529194c63fe88e3322 | nova || 788cf3794aac480db0b5d5f15d9d508d | neutron || c749fc158eae4132929722460c51078f | trove || cb1c315474b24a8380e42ae1b7174816 | octavia || cef964c64b634e05a6b46151fa31a4d7 | barbican || d57f498e9e354c44ab628bea10e64315 | admin || f7dcc90ae1c44b6a83a69e9f3a1cb6ae | manila |+----------------------------------+------------------------------+ -
Список созданных учётных записей:
# openstack user list --domain usersПример ожидаемого результата+----------------------------------+------------------------------+| ID | Name |+----------------------------------+------------------------------+| 03240d7aafbc468da0d4a24d5827b3ee | tempest-user-1696297331 || 058e76e5d89941e3923dff418fb51b0a | tempest-2115504947 || 08ee4ae0b1714676a57b23a37d60783c | iam || 0f51492dc5cc48ad94ae617f643e9cab | superadmin || 1c277d03f50549f981fbdc0a338fa7ed | tempest-user-1654250193 || 1d34eea9c50c40a58aeb99961d28fd44 | tempest-user-737150262 || 2031fd3b88574244a2b782a0022a71ec | tempest-user-1834910734 || 223a8472659c438c8854da1e7ba066a0 | tempest-user-927474618 || 25f90f73f8024c369ac9e3f702081b1b | proj1@vk.team | -
Список созданных сервисных и пользовательских ролей:
# openstack role listПример ожидаемого результата+----------------------------------+----------------------------+| ID | Name |+----------------------------------+----------------------------+| 07ccd8419db8439c9cb070ad5c5b4575 | mcs_admin_vm || 0b2b0e4d568241faa56aa49b47417e1a | service || 0ccaf21e224240eb9246051ff94555a6 | mcs_admin_network_objects || 163747326a3447889da732c1483a6c3f | magnum_admin || 1f7bbde9d6544bebbb5430a273dc6467 | sahara_ci || 26b4502c848d4051af20090209d04378 | karboii_admin || 2919118a24444f4fbbf7f0de87e06d0e | mcs_monitoring_agent || 29b93877db8249d39c236519c68b1f2a | member || 479f1191957c4d6e9f9f7753a629ea03 | heat_stack_owner || 52c806f3afc2437785f923a30fd7832b | trove_user || 57cf613e254d46ec8160980d0e6245cc | magnum_tester || 5cbe61730fa843318adb664a35abc4c0 | heat_stack_user || 614cc35888ca4cfb884f2ac1898845d2 | mcs_admin_network_security || 66da25cf1990409b82a5feae4dfdd09e | tuareg || 77f14e5de64344a9a2b91602882c4071 | sahara_admin |
-
Чтобы предоставить пользователю доступ к проекту:
- В Портале администратора перейдите в раздел Управление проектами → Проекты.
- Нажмите на значок ••• справа от названия проекта и выберите пункт Управление доступом.
- В открывшемся окне нажмите кнопку Добавить.
- Выберите группу, в которой находится пользователь, и добавьте необходимую роль пользователя в проекте.
- Нажмите кнопку Сохранить изменения.
Описание ролей пользователей Платформы приведено в разделе Права и учётные записи пользователей.
- В Портале администратора перейдите в раздел Управление доступом.
- Нажмите кнопку Добавить.
- В текстовом поле Логин начните вводить имя учётной записи пользователя.
- В выпадающем списке выберете учётную запись.
- В выпадающем списке Роли выберите одну или несколько ролей.
- Нажмите кнопку Подтвердить.
Для аутентификации пользователя в Портале администратора у пользователя должна быть включена двухфакторная аутентификация.
-
Выполните подготовительные операции (подробнее — в разделе Вход для Администратора Платформы).
-
Подключитесь к Tarantool breeze:
# tarantoolctl enter <BREEZE_NAME>Здесь
<BREEZE_NAME>— имя Tarantool breeze. -
Выведите информацию о пользователе:
unix/:/var/run/tarantool/<BREEZE_NAME>.control> breeze.api.services.superadmin_users.users.search({name = '<USER_NAME>'})Здесь:
<BREEZE_NAME>— имя Tarantool breeze.<USER_NAME>— имя пользователя.
- [200, {'list': [{'domain': 'sa_admins', 'enabled': true, 'uid': <USER_ID>, 'id': '<OpenStack_ID>','ctime': <TIMESTAMP>, 'email': '<USER_EMAIL>', 'roles': [<ROLES_LIST>], 'mfa': {'email': {'time_enabled': <TIMESTAMP_MFA>, 'id': '<MFA_ID>'}}}],'limit': 300}]...
Здесь:
<USER_ID>— UID учётной записи пользователя.<OpenStack_ID>— идентификатор пользователя OpenStack.<TIMESTAMP>— временная метка.<USER_EMAIL>— адрес электронной почты пользователя.<ROLES_LIST>— назначенные пользователю роли.<TIMESTAMP_MFA>— временная метка 2FA.<MFA_ID>— уникальный идентификатор 2FA.
-
Выполните подготовительные операции (подробнее — в разделе Вход для Администратора Платформы).
-
Подключитесь к Tarantool breeze:
# tarantoolctl enter <BREEZE_NAME>Здесь
<BREEZE_NAME>— имя Tarantool breeze. -
Удалите пользователя:
unix/:/var/run/tarantool/<BREEZE_NAME>.control> breeze.api.services.superadmin_users.users.delete({uid = '<USER_ID>'})---- [200, {'domain': 'sa_admins', 'enabled': true, 'uid': <USER_ID>, 'id': '<OpenStack_ID>','ctime': <TIMESTAMP>, 'email': '<USER_EMAIL>', 'roles': [<ROLES_LIST>], 'mfa': {}}]Здесь:
<BREEZE_NAME>— имя Tarantool breeze.<USER_ID>— UID учётной записи пользователя.
-
Повторно предоставьте пользователю доступ к проекту (подробнее — в разделе Предоставление доступа к Порталу администратора).
- В Портале администратора перейдите в раздел Управление доступом.
- Нажмите на значок ••• справа от имени пользователя, которому необходимо добавить или удалить роль и выберите пункт Редактировать.
- Нажмите на поле Роль, выберите одну или несколько ролей в списке.
- Нажмите кнопку Подтвердить.
Учётная запись блокируется, если пользователь не входил в Платформу более 45 дней.
Чтобы поменять значение параметра, определяющего период неактивности пользователя:
-
Подключитесь к деплой-ноде по SSH (подробнее — в разделе Вход на деплой-ноду по SSH).
-
Откройте на редактирование файл
~/inventory/vkcloud/group_vars/vkcloud_kube/blocker-service.yml. -
Установите требуемое значение для параметра (например, 480 часов):
helm_BLOCKER_SERVICE_LAST_ACTIVITY_THRESHOLD: 480h -
Сохраните изменения в файле.
-
Перезапустите плейбук для сервиса блокировки:
$ cd ~/inventory/vkcloud/$ ansible-playbook -i vkcloud.yml -e env=vkcloud ../ansible-openstack/playbooks/helm-blocker-service.yml
При попытке войти в Портал самообслуживания или Портал Администратора с помощью заблокированной учётной записи на экране появится ошибка входа «403». Если заблокированный пользователь является владельцем проекта, работа других пользователей в проекте не ограничивается.
Чтобы заблокировать или разблокировать учётную запись пользователя Портала администратора:
- В Портале администратора перейдите в раздел Управление доступом.
- Нажмите на значок ••• справа от учётной записи пользователя и выберите пункт Заблокировать или Разблокировать.
- Нажмите кнопку Подтвердить.
Чтобы заблокировать или разблокировать учётную запись пользователя Портала самообслуживания:
- В Портале администратора перейдите в раздел Управление проектами → Пользователи.
- Нажмите на имя пользователя и перейдите на вкладку Профиль.
- В строке Пользователь активен нажмите на значок ••• и выберите пункт Заблокировать или Разблокировать.
- Нажмите кнопку Подтвердить.
Администратор может:
- Установить ограничение на количество одновременных сеансов доступа.
- Принудительно завершить активный сеанс доступа пользователя.
- Настроить ограничение времени бездействия пользователя (подробнее — в разделе Настройка временных ограничений доступов).
Чтобы установить ограничение в один активный сеанс доступа:
-
Перейдите на деплой-ноду по SSH:
$ ssh <USERNAME>@<HOST_IP>Здесь
<USERNAME>— логин, созданный при инсталляции Платформы (например,redos). -
Введите пароль от учётной записи администратора или пройдите аутентификацию с помощью файла закрытого ключа.
-
Откройте для редактирования файл
~/inventory/vkcloud/group_vars/vkcloud/vars.yml. -
Установите
1в параметреsessions_limit. -
Сохраните изменения в файле.
-
Перезапустите плейбук для сервиса авторизации:
$ cd ~/inventory/vkcloud/$ ansible-playbook -i vkcloud.yml -e env=vkcloud ../ansible-openstack/playbooks/helm-auth-service.yml
Чтобы остановить активный сеанс доступа пользователя Портала самообслуживания:
- В Портале администратора перейдите в раздел Управление сессиями → Пользователи ЛК.
- Нажмите на значок ••• справа от учётной записи пользователя и выберите пункт Завершить сеанс.
Чтобы остановить активный сеанс доступа пользователя Портала администратора:
- В Портале администратора перейдите в раздел Управление сессиями → Суперадминистраторы.
- Нажмите на значок ••• справа от учётной записи пользователя и выберите пункт Завершить сеанс.