Администрирование в IAM Only
Для получения адресов выполните подключение к деплой-ноде IAM Only по SSH.
При входе Система выведет все адреса и данные учетных записей для дальнейшей работы.
Портал управления доступом — графический интерфейс администраторов Платформы для управления пользователями и группами пользователей.
Условное обозначение: Keycloak.
Портал управления доступом используется для создания, удаления и настройки стандартных учетных записей Платформы, а также настройки доступа к Платформе, например интеграции Платформы с LDAP-провайдером в части учетных записей пользователей.
Чтобы открыть Портал управления доступом, перейдите по адресу:
keycloak.your_domain_name.ru
Здесь your_domain_name.ru — доменное имя заказчика.
- Перейдите на Портал управления доступом.
- Перейдите в раздел Manage realms.
- Нажмите на рилм
mcs_users. - Перейдите в раздел Groups.
- Нажмите кнопку Create group.
- В поле Name укажите имя группы.
- Нажмите кнопку Create.
Инструкции по управлению группами приведены в официальной документации Keycloak.
Создание пользователей выполняется в разделе Users Портала управления доступом. Пользователи создаются в одном из следующих рилмов (realm):
mcs_users— для учетных записей пользователей Портала самообслуживания.mcs_admins— для учетных записей пользователей Портала администратора.
Для создания выполните:
- Перейдите на Портал управления доступом.
- Перейдите в раздел Manage realms.
- Нажмите на рилм
mcs_users. - Перейдите в раздел Users.
- Нажмите кнопку Add user.
- В поле Username укажите имя пользователя — электронную почту на корпоративном домене.
- Нажмите кнопку Join group.
- Выберите необходимую группу и нажмите кнопку Join group.
- Нажмите кнопку Create.
- Перейдите на вкладку Credentials.
- Нажмите кнопку Set password.
- В полях Password и Password confirmation задайте и подтвердите пароль.
- Отключите параметр Temporary.
- Нажмите кнопку Save.
-
Перейдите на портал Администратора.
-
Создайте проект:
-
В боковом меню сервиса выберите пункт Управление проектами → Проекты.
-
Нажмите кнопку Добавить. Укажите название проекта и нажмите кнопку Создать.
-
-
Активируйте сервис:
- Откройте проект, нажав на его название в списке.
- В открытом проекте перейдите на вкладку Сервисы.
- Последовательно включите сервисы:
- Cloud Servers.
- VK Object Storage.
-
Установите администратора проекта:
- В строке с названием проекта нажмите
•••и выберите Управление доступом. - Нажмите кнопку Добавить и заполните поля:
- Группы — выберите необходимую группу.
- Роли — выберите необходимые роли:
mcs_admin— обязательная роль;- роли, которые назначаются в соответствии с таблицей 1:
mcs_storage_uploader— загрузчик данных;mcs_storage_viewer— наблюдатель;mcs_storage_owner— владелец проекта;mcs_storage_editor— менеджер данных.
- Нажмите кнопку Сохранить изменения.
- В строке с названием проекта нажмите
Для выхода из портала Администратора выполните выход (Sign Out) из аккаунта портала управления доступом (Keycloak), а затем выполните выход (Выйти из аккаунта) из аккаунта портала Администратора.
Пользователи:
AllUsers— анонимные пользователи.AuthUsers— авторизованные пользователи без роли в проекте.
Чтобы добавить типы пользователей AllUsers и AuthUsers в VK Object Storage и IAM Only:
-
Подключитесь к деплой-ноде VK Object Storage и добавьте в конфигурационный файл
/etc/hint2/config.ymlсекциюs3_iam:s3_iam:enabled: truestatic_users:anon:enabled: trueiam_id: "anonymous"any_authenticated:enabled: trueiam_id: "any_authenticated" -
Подключитесь к деплой-ноде VK Object Storage и добавьте в конфигурационный файл
/etc/hitrod2/config.ymlсекциюs3_iam:s3_iam:enabled: truestatic_users:anon:enabled: trueiam_id: "anonymous"any_authenticated:enabled: trueiam_id: "any_authenticated" -
Подключитесь к деплой-ноде IAM Only и добавьте в конфигурационный файл
/etc/s3-iam-service/config.ymlсекцииextra_featuresиidentity_provider:extra_features:static_users:api:enabled: true # включить API статичных пользователейlist: # список и параметры статичных пользователей, ключ static_user_id, передаётся в модуль identity-provideranonymous: # имя ключа как значение поля anon.iam_id в hitrod2enabled: true # возможность выключения некоторых пользователей без удаления их из Системыany_authenticated: # имя ключа как значение поля any_authenticated.iam_id в hitrod2enabled: trueaccess_check_fallback: # в случае отсутствия доступа пользователя к проекту проверьте доступ для статичных пользователейenabled: trueorder:- "regular"- "any_authenticated"- "anonymous"identity_provider:extra_features:static_users:list:anonymous:email: "anonymous-user@email.email"any_authenticated:email: "any-authenticated-user@email.email" -
Перейдите на Портал управления доступом (Keycloak).
-
Перейдите в раздел Manage realms.
-
Нажмите на рилм
mcs_users. -
Перейдите в раздел Users.
-
Нажмите кнопку Add user.
-
Добавьте пользователей с параметрами:
- пользователя
anonc почтойanonymous-user@email.email; - пользователя
any-authenticatedс почтойany-authenticated-user@email.email.
- пользователя
-
На портале Администратора настройте доступы для созданных пользователей к соответствующим проектам.
Операция | Владелец проекта (mcs_storage_owner) | Менеджер данных (mcs_storage_editor) | Загрузчик данных (mcs_storage_uploader) | Наблюдатель (mcs_storage_viewer) |
|---|---|---|---|---|
Создание аккаунта | ||||
Добавление второго ключа доступа в существующий аккаунт | ||||
Деактивация ключа доступа | ||||
Удаление ключа доступа | ||||
Удаление аккаунта | ||||
Создание префиксного ключа | ||||
Список префиксных пользователей | ||||
Удаление префиксного ключа у пользователя | ||||
Создание бакета | ||||
Проверка наличия бакета и доступа к нему | ||||
Получение списка бакетов | ||||
Получение списка объектов бакета | ||||
Получение списка объектов бакета V2 | ||||
Месторасположение бакета | ||||
Удаление бакета | ||||
Получение конфигурации веб-сайта | ||||
Определение конфигурации веб-сайта | ||||
Удаление конфигурации веб-сайта | ||||
Получение ACL для бакета | ||||
Установка ACL у бакета | ||||
Получение ACL для объекта | ||||
Установка ACL у объекта | ||||
Просмотр политики | ||||
Получение информации о статусе политики для бакета (является ли он публичным) | ||||
Применение политики | ||||
Удаление политики | ||||
Просмотр конфигурации жизненного цикла в бакете | ||||
Настройка правил конфигурации жизненного цикла | ||||
Удаление конфигурации жизненного цикла | ||||
Получение конфигурации жизненного цикла для бакета | ||||
Создание или обновление жизненного цикла конфигурации для бакета | ||||
Получение списка конфигураций для бакета | ||||
Установка конфигурации | ||||
Удаление конфигурации CORS | ||||
Получение конфигурации шифрования | ||||
Настройка конфигурации шифрования | ||||
Сброс шифрования | ||||
Получение списка правил | ||||
Создание правила | ||||
Удаление правила | ||||
Получение конфигурации оповещения для бакета | ||||
Создание или обновление конфигурации оповещения для бакета | ||||
Удаление конфигурации оповещения для бакета | ||||
Получение значения владельца для бакета | ||||
Создание или обновление значения владельца для бакета | ||||
Удаление значения владельца для бакета | ||||
Получение информации об объекте | ||||
Создание (загрузка) объекта | ||||
Копирование объекта | ||||
Скачивание объекта | ||||
Скачивание части объекта | ||||
Проверка корректности запроса | ||||
Удаление объекта | ||||
Удаление группы объектов по списку | ||||
Удаление нескольких объектов | ||||
Получение информации об объекте (комбинация | ||||
Получение списка версий объектов | ||||
Включение версионности на бакете | ||||
Получение статуса версионности | ||||
Инициализация загрузки | ||||
Загрузка объекта по частям | ||||
Прерывание загрузки | ||||
Список портов мультипарт загрузки | ||||
Завершение загрузки путем объединения ранее загруженных частей | ||||
Возврат списка загруженных частей | ||||
Заливка парта с копированием уже существующего объекта | ||||
Получение статуса бессрочной блокировки на объекте | ||||
Получение текущего статуса разрешения бессрочной блокировки для бакета и текущее правило срочной защиты по умолчанию, если имеется | ||||
Получение статуса временной блокировки на объекте | ||||
Применение бессрочной блокировки к объекту | ||||
Включение автоматического применения блокировки ко всем новым объектам в бакете и установка периода по умолчанию. На сам бакет никак не влияет | ||||
Применение временной блокировки к объекту | ||||
Получение всех тегов объекта | ||||
Замена тегов объекта | ||||
Удаление всех тегов объекта | ||||
Получение объекта по Presigned URL | ||||
Загрузка объекта с Presigned URL | ||||
Изменение настроек репликации для бакета | ||||
Включение или выключение репликации бакета |
Начиная с VK Object Storage 1.61, для аутентификации пользователей используется IAM Only. При обновлении до этой версии выполните миграцию проектов из VK Object Storage в Breeze (база данных IAM Only).
Этапы миграции:
- Подготовка данных.
- Экспорт проектов.
- Ассоциация аккаунтов VK Object Storage с владельцем в IAM Only.
-
Создайте пользователя IAM Only с ролью владельца через Keycloak для каждого проекта VK Object Storage.
-
Выгрузите все проекты в файл
projects.csvутилитой HB CLI:hb hitbox project list -o csv > projects.csv -
Проверьте, что все проекты выгружены:
cat projects.csvПример ответа:
pid;id;keystoneid;domain;c_time;completed;skipped;p_time;v;state;protectedmcs7252649123;7e02eaa6-a32c-4b5d-a29e-dbddecdb3856;;mcs7252649123;2026-01-19 08:20:29;false;false;2026-01-19 08:20:29;2;A;truemcs7210521432;adebf1e0-1c38-4590-af4e-101a660452ed;;mcs7210521432;2026-01-19 08:20:29;false;false;2026-01-19 08:20:29;2;A;falsemcs5983909657;ba1e1db2-da63-4895-a0dc-e496d2e541f0;;mcs5983909657;2026-01-19 08:20:29;false;false;2026-01-19 08:20:29;2;A;truemcs2374092890;d82b9176-3fc8-426f-b29c-66af14167d50;;mcs2374092890;2026-01-19 08:20:29;false;false;2026-01-19 08:20:29;2;A;false -
В файл
projects.csvдля каждого проекта добавьте почту пользователяowner, созданного на шаге 1.Пример отредактированного файла
projects.csv:pid;id;keystoneid;domain;c_time;completed;skipped;p_time;v;state;protected;ownermcs7252649123;7e02eaa6-a32c-4b5d-a29e-dbddecdb3856;;mcs7252649123;2026-01-19 08:20:29;false;false;2026-01-19 08:20:29;2;A;true;<ПОЧТА>mcs7210521432;adebf1e0-1c38-4590-af4e-101a660452ed;;mcs7210521432;2026-01-19 08:20:29;false;false;2026-01-19 08:20:29;2;A;false;<ПОЧТА>mcs5983909657;ba1e1db2-da63-4895-a0dc-e496d2e541f0;;mcs5983909657;2026-01-19 08:20:29;false;false;2026-01-19 08:20:29;2;A;true;<ПОЧТА>mcs2374092890;d82b9176-3fc8-426f-b29c-66af14167d50;;mcs2374092890;2026-01-19 08:20:29;false;false;2026-01-19 08:20:29;2;A;false;<ПОЧТА>Здесь:
<ПОЧТА>— почта пользователя, созданного на шаге 1, напримерiam@vk.team.
Для экспорта проектов необходимы:
- Файл экспорта проектов в формате CSV.
- Пользователь с правами
read,write,executeна узле, где установлен Breeze.
Выполните экспорт проектов одним из способов:
-
Найдите скрипт команды
projects2breeze.luaв исходных кодах Hitbox:/usr/share/hitbox/migrations/1.61/projects2breeze.lua. -
Установите необходимые права для
projects2breeze.lua:sudo chmod 744 projects2breeze.luaОсновные параметры
projects2breeze.lua:./usr/share/hitbox/migrations/1.61/projects2breeze.lua -hUsage: projects2breeze [-o <output>] [-i <input>] -b <breeze> [-h]<command>projects migration to iam(breeze)Arguments:command основная команда, - up для экспорта проектов, down - для удаления экспортированногоOptions:-o <output>, файл результата, по умолчанию <time.now>.out.csv--output <output>-i <input>, csv файл с проектами, разделитель `;`--input <input>-b <breeze>, DSN соединения Breeze, важно чтобы был прописан адрес мастера, например, guest@127.0.0.1:3304--breeze <breeze> -
Чтобы экспортировать проекты, выполните команду
upс параметрами:./projects2breeze.lua -i <ФАЙЛ_С_ПРОЕКТАМИ> -o <ФАЙЛ_РЕЗУЛЬТАТА_МИГРАЦИИ> -b <АДРЕС_BREEZE> upЗдесь:
<ФАЙЛ_С_ПРОЕКТАМИ>— файл с проектами в формате CSV;<ФАЙЛ_РЕЗУЛЬТАТА_МИГРАЦИИ>— файл результата в формате CSV;<АДРЕС_BREEZE>— DSN соединения Breeze в формате<ПОЛЬЗОВАТЕЛЬ>:<ПАРОЛЬ>@<АДРЕС_ПРОСЛУШИВАНИЯ>:<ПОРТ>.
Пример выполнения команды:
Running projects2breeze up 1770639850[2] exported mcs7252649123: uid 2898854615, keystone 1011550351ec4abb8c0f62ff64cae288[3] exported mcs7210521432: uid 2898854615, keystone ac2ffd05223449ebadf68152eaa014fd[4] exported mcs5983909657: uid 2898854615, keystone 02cb3dad20b84e3e8ed6bc22eb4f7ca4[5] exported mcs2374092890: uid 2898854615, keystone 9158474b9f1d4a4f882d09d1d5ba56deВывод команды будет содержать перечень экспортированных проектов. Также скрипт сгенерирует CSV-файл, отражающий карту связей между параметрами:
mcs pid— имя проекта;uid— идентификатор владельца;keystone— идентификатор проекта в IAM Only.
Пример сгенерированного файла:
mcs7252649123,2898854615,1011550351ec4abb8c0f62ff64cae288mcs7210521432,2898854615,ac2ffd05223449ebadf68152eaa014fdmcs5983909657,2898854615,02cb3dad20b84e3e8ed6bc22eb4f7ca4mcs2374092890,2898854615,9158474b9f1d4a4f882d09d1d5ba56de
-
Выгрузите архив
iam-migrator.tar.gzсо скриптамиprojects2breeze.luaиargparse.luaиз любой моно-ноды VK Object Storage:# cd /usr/share/hitbox/# tar -cvzf iam-migrator.tar.gz migrations/1.61/projects2breeze.lua .rocks/share/tarantool/argparse.lua .rocks/share/tarantool/rocks/argparse/ -
Распакуйте архив
iam-migrator.tar.gzиprojects.csvна узле VK Private Cloud сtarantoolctlи доступом к Breeze:# tar -xvzf iam-migrator.tar.gz# ls -latotal 44drwxr-xr-x 4 root root 4096 Aug 14 12:15 .drwxrwxrwt. 19 root root 12288 Aug 14 15:33 ..-rw-r--r-- 1 deployer deployer 15356 Aug 14 11:39 iam-migrator.tar.gzdrwxr-xr-x 3 root root 4096 Aug 14 11:41 migrations-rw-r--r-- 1 root root 239 Aug 14 12:15 projects.csvdrwxr-xr-x 3 root root 4096 Aug 14 11:41 .rocks -
Чтобы экспортировать проекты, выполните команду
upc параметрами:# ./projects2breeze.lua -i <ФАЙЛ_С_ПРОЕКТАМИ> -o <ФАЙЛ_РЕЗУЛЬТАТА_МИГРАЦИИ> -b <АДРЕС_BREEZE> upЗдесь:
<ФАЙЛ_С_ПРОЕКТАМИ>— файл с проектами в формате CSV;<ФАЙЛ_РЕЗУЛЬТАТА_МИГРАЦИИ>— файл результата в формате CSV;<АДРЕС_BREEZE>— DSN соединения Breeze в формате<ПОЛЬЗОВАТЕЛЬ>:<ПАРОЛЬ>@<АДРЕС_ПРОСЛУШИВАНИЯ>:<ПОРТ>.
Пример выполнения команды:
Running projects2breeze up 1770639850[2] exported mcs7252649123: uid 2898854615, keystone 1011550351ec4abb8c0f62ff64cae288[3] exported mcs7210521432: uid 2898854615, keystone ac2ffd05223449ebadf68152eaa014fd[4] exported mcs5983909657: uid 2898854615, keystone 02cb3dad20b84e3e8ed6bc22eb4f7ca4[5] exported mcs2374092890: uid 2898854615, keystone 9158474b9f1d4a4f882d09d1d5ba56deВывод команды будет содержать перечень экспортированных проектов. Также будет сгенерирован CSV-файл, отражающий карту связей между параметрами:
mcs pid— имя проекта;uid— идентификатор владельца;keystone— идентификатор проекта в IAM Only.
Пример сгенерированного файла:
mcs7252649123,2898854615,1011550351ec4abb8c0f62ff64cae288mcs7210521432,2898854615,ac2ffd05223449ebadf68152eaa014fdmcs5983909657,2898854615,02cb3dad20b84e3e8ed6bc22eb4f7ca4mcs2374092890,2898854615,9158474b9f1d4a4f882d09d1d5ba56de -
Скопируйте файл с результатом
/tmp/pid_iam_id.csvна master-узел Hitbox.
Удаление будет происходить по файлу с результатом миграции, и перед откатом можно удалить из него проекты, которые нужно оставить в Системе.
Чтобы откатить изменения, выполните команду down:
# ./projects2breeze.lua -i <ФАЙЛ_РЕЗУЛЬТАТА_МИГРАЦИИ> -b <АДРЕС_BREEZE> down
Пример выполнения команды:
Running projects2breeze down 1770641288[2] mcs7252649123 deleted[3] mcs7210521432 deleted[4] mcs5983909657 deleted[5] mcs2374092890 deleted
-
Установите флаг
enabledдля функциональности в Hitbox:# switchover etcd set app.feature_flags.iam.enabled true -p /hotbox/hitbox -
Запустите скрипт миграции
account_iam_id.luaна master-узле Hitbox:# tt connect localhost:7401 -f /usr/share/hitbox/migrations/1.61/account_iam_id.lua -i <ФАЙЛ_РЕЗУЛЬТАТА_МИГРАЦИИ>Здесь
<ФАЙЛ_РЕЗУЛЬТАТА_МИГРАЦИИ>— CSV-файл/tmp/pid_iam_id.csv, полученный при миграции проектов.Скрипт миграции
account_iam_id.luaзапишет результат в файл/tmp/updated_accounts.csv— какиеiam_idприсвоены аккаунтам. Если результат не нужен, из скрипта миграции исключите строкуfo:write(csv.dump({pid, account.id, account.name, iam_id})).Пример содержимого файла
/tmp/updated_accounts.csv:# cat /tmp/updated_accounts.csvpid,account_id,account_name,iam_idmcs3841426534,3cfb818c-7ce6-4bd9-abdf-a92c4212cde1,R,2002908412mcs3841426534,535449e5-0c46-4893-b9bb-756cc13a2236,W,2002908412mcs7803416412,855e26ce-175f-4d10-8c18-19603f8e4bbe,R,2002908412mcs7803416412,f1517b6b-7c86-42dc-939c-5ce5da6168a3,W,2002908412