Перейти к основному содержимому

Поля и коды ошибок методов доступа

Когда применять​

Когда пишете интеграцию или разбираете ответ кластера: нужен точный набор полей, тип параметра, уровень доступа и смысл кода. Пошаговые сценарии — в инструкциях по управлению пользователями, по ролям и привилегиям и по входу и сессиям; модель прав — в «Модели доступа vStack Center». Сокращение ВЦОД в таблицах ниже — виртуальный центр обработки данных, объект области видимости vdc_id.

Сводка методов​

Пользователи​

МетодПараметрыДоступЧто возвращает
user-listнетCluster masterкарту активных пользователей, ключ — строковый id
user-getidCluster masterпрофиль одного пользователя
user-createname, fullnameCluster masterid созданной записи
user-deleteidCluster masterпустой data
user-set-passwordid, passwordсебе — любой пользователь; чужой id — Cluster masterпустой data
user-unlockidCluster masterid разблокированной записи
user-params-getнеттекущий пользовательсохранённый JSON-объект параметров
user-params-setпроизвольный объекттекущий пользовательпустой data

Роли пользователя и назначения​

МетодПараметрыДоступЧто возвращает
user-roleнеттекущий пользовательUID и authmap
user-rolesuser_id, qсебе — любой; чужой user_id — Cluster masterкарту «ВЦОД → роль», с ключом q — «ВЦОД → массив ролей»
user-roles-v2user_idпривилегия View Own User Roles (7102); чужой user_id — View Any User Roles (7106)карту «роль → scope-атрибуты»
user-roles-mapнетCluster masterвсех пользователей с развёрнутыми назначениями
user-role-assignuser_id, vdc_id, role_idCluster masterпустой data
user-role-deassignuser_id, vdc_id, role_idCluster masterпустой data

Параметр vdc_id в user-role-assign обязателен для роли со scope-привязкой; в user-role-deassign он обязателен всегда. Флаг q в user-roles определяется по наличию ключа в params — значение не читается. Для user-roles-v2 флаг q не поддерживается.

Роли и привилегии​

МетодПараметрыДоступЧто возвращает
role-listнетв каноне API не указанвсе роли со scope_ids, creator и метками времени
role-getidглобальная роль с привилегией View Role Details (7114)роль с полными privileges и scope_ids
role-scopesidпривилегия View Role Scopes (7115)scope-атрибуты роли с self_referencing = false
role-createname, privileges, scope_idsCluster masterid созданной роли
role-setid, name, remove_privileges, add_privileges, scope_idsCluster masterпустой data
role-deleteidCluster masterпустой data
role-privilege-listнетпривилегия View Role Privileges (7108), выдана всем семи фиксированным ролямкарту «role_id → массив privilege_id»
privilege-listнетпривилегия View Privileges (7107), выдана всем семи фиксированным ролямреестр привилегий с категориями, scope и методами
privilege-categoriesнетпривилегия View Privilege Categories (7109), выдана всем семи фиксированным ролямкарту «category_id → название»
privilege-scopesнетпривилегия View Privilege Scopes (7110), выдана всем семи фиксированным ролямсправочник scope-атрибутов

Ограничения доступа учётной записи​

МетодПараметрыДоступЧто возвращает
user-remote-listuser_idCluster masterмассив разрешённых CIDR
user-remote-adduser_id, remoteCluster masterпустой data
user-remote-deleteuser_id, remoteCluster masterпустой data
user-vhost-listuser_idCluster masterмассив разрешённых vhost
user-vhost-adduser_id, vhostCluster masterпустой data
user-vhost-deleteuser_id, vhostCluster masterпустой data

Сессия и параметры безопасности​

МетодПараметрыДоступЧто возвращает
auth-logoutallлюбой аутентифицированный пользователь над своими сессиями{"result": true}
auth-security-settings-getнетлюбой авторизованный; состав полей зависит от ролипараметры пароля и блокировки
auth-security-settings-setвосемь полей политики, все необязательныеCluster masterпустой data

Параметры с валидацией​

МетодПараметрТипОбязателенОграничение
user-createnamestringдаregex ^[A-Z,a-z,_-]{4,41}$
user-createfullnamestringнет—
user-deleteidnumberдаrange(min=0); id < 10 запрещены
user-set-passwordidnumberнетпо умолчанию — текущий пользователь
user-set-passwordpasswordstringдаregex ^[\S]+$ плюс парольная политика
user-role-assignuser_id, role_idnumberдаrange(min=0); user_id < 10 запрещены
user-remote-addremotestringдаCIDR IPv4 с маской 8–32 либо IPv6 с префиксом 16–128
user-vhost-addvhoststringдадлина 5–512
role-createnamestringдадлина 1–64, уникальное
role-createprivilegesarray<integer>дане пустой; без 7111–7113
role-createscope_idsarray<integer>неттолько атрибуты с self_referencing = false
role-setidintegerдане меньше 10000
role-deleteidintegerдане меньше 10000
auth-security-settings-setmax_failed_attempts, failed_attempts_window_minutes, password_min_lengthintegerнетrange(min=1)
auth-security-settings-setlockout_duration_minutesintegerнетrange(min=0)
auth-logoutallbooleanнетпо умолчанию false

Поля профиля пользователя​

Состав одинаков для user-get и для каждой записи в user-list.

ПолеТипОписание
idintegerидентификатор пользователя
namestringимя учётной записи
fullnamestring | nullполное имя
createdintegerвремя создания, epoch
modifiedinteger | nullвремя последнего изменения, epoch
failed_login_attemptsintegerсчётчик неудачных попыток входа
first_failed_atinteger | nullначало текущего окна подсчёта, epoch; null — неудачных попыток нет
locked_untilinteger | nullдо какого времени запись заблокирована, epoch; null — не заблокирована

Поля роли​

ПолеТипГде приходитОписание
idintegerrole-list, role-getидентификатор роли
namestringrole-list, role-getимя роли
scope_idsinteger[]role-list, role-getscope-атрибуты роли; пустой массив — привязки нет
privilegesinteger[]role-getполный список привилегий роли
creatorinteger | nullrole-list, role-getавтор роли; null у фиксированных ролей
created_tsintegerrole-list, role-getвремя создания, unix timestamp
modified_tsinteger | nullrole-list, role-getвремя последнего изменения; null — не менялась

Фиксированные роли платформы:

IDИмя
1Cluster Master
2vDC Admin
3vDC User
4vDC Viewer
5Resource Viewer
6Security Admin
7VM Developer

Поля привилегии и scope-атрибута​

Запись реестра privilege-list:

ПолеТипОписание
idnumberидентификатор привилегии
namestringназвание привилегии
category_idnumber | nullкатегория; null — привилегия не привязана к категории
scope_idsnumber[]scope-атрибуты привилегии; пустой массив — привилегия глобальная
methodsstring[]имена JSON-RPC методов, которые требуют эту привилегию

Запись справочника privilege-scopes и role-scopes:

ПолеТипОписание
idintegerидентификатор scope-атрибута
namestringимя атрибута, например vdc_id или creator
self_referencingbooleantrue — значение генерируется из user_id (creator); false — берётся из назначений роли (vdc_id)

В ответе role-scopes поле self_referencing всегда false: self-referencing атрибуты в этот ответ не попадают.

Категории привилегий (privilege-categories): 1 — vDC, 2 — VM, 3 — Network, 4 — Edge, 5 — Storage, 6 — Node, 7 — Cluster, 8 — User, 9 — Misc, 10 — Auth, 11 — Security, 12 — User Interface, 13 — Unified Storage, 14 — OS Image Library, 15 — Backup.

примечание

Канон API перечисляет в примере ответа только первые десять категорий, в базе их пятнадцать: каждый новый домен привозит свою. Метод отдаёт справочник целиком, так что сверяйтесь с фактическим ответом кластера.

Роли пользователя: четыре формата ответа​

МетодФорма dataКогда удобнее
user-roleUID + authmap: массив объектов vdc_id, vdc_name, role_id, role_name, GI_accountклиенту нужно показать «кто я и где» одним вызовом
user-roles без qкарта «строковый vdc_id → role_id»быстрая проверка одной роли на ВЦОД
user-roles с qкарта «строковый vdc_id → массив role_id»у пользователя больше одной роли в ВЦОД
user-roles-v2карта «role_id → scopes», внутри по каждому attr_id: is_global и idsнужно понять, чем именно ограничена роль
user-roles-mapкарта «строковый id пользователя → профиль + массив roles»инвентаризация всех назначений кластера

Поля user-roles-v2:

ПолеТипОписание
data.<role_id>.scopesobjectключи — строковые attr_id scope-атрибутов роли
data.<role_id>.scopes.<attr_id>.is_globalbooleantrue — значений в назначениях нет, роль по атрибуту не ограничена
data.<role_id>.scopes.<attr_id>.idsinteger[]значения атрибута из назначений, например список ВЦОД

Допустимые role_id фиксированных ролей: 1–7. Кастомные роли приходят в тех же ответах с идентификаторами от 10000.

Параметры безопасности​

ПолеТипКому видно в auth-security-settings-get
max_failed_attemptsintegerтолько Cluster master
failed_attempts_window_minutesintegerтолько Cluster master
lockout_duration_minutesintegerтолько Cluster master
password_min_lengthintegerвсем авторизованным
password_require_uppercasebooleanвсем авторизованным
password_require_lowercasebooleanвсем авторизованным
password_require_digitsbooleanвсем авторизованным
password_require_specialbooleanвсем авторизованным

Коды ошибок​

Пользователи​

КодСообщениеМетоды
-403Access denieduser-list, user-roles-map
-403Access denieduser-roles
-22204Empty param user_iduser-roles, user-roles-v2
-22205Bad id param valueuser-roles, user-roles-v2
-403Access denieduser-create
-22505Bad name param valueuser-create
-22515Failed to add an useruser-create
-22516User with name '<name>' exists alreadyuser-create
-403Access denieduser-delete
-22606Specified user was not founduser-delete
-22610Build-it users removal prohibiteduser-delete
-403Access denieduser-set-password
-22712Bad passworduser-set-password
-22720Specified user was not founduser-set-password
-22730…-22735, -22737требования парольной политикиuser-set-password
-403Access denieduser-get
-22803No param iduser-get
-22804Empty param iduser-get
-22805Bad id param valueuser-get
-403Access denieduser-unlock
-22906Specified user was not founduser-unlock
-29030No user with ID==<uid>user-params-get
-34000No params at alluser-params-set
-39030No user with ID==<uid>user-params-set

Назначение ролей​

КодСообщениеМетоды
-403Access denieduser-role-assign
-22320Build-it users management prohibited / роль уже назначенаuser-role-assign
-403Access denieduser-role-deassign
-22420Specified user has no specified role assignmentuser-role-deassign
-22421Build-it users management prohibiteduser-role-deassign

Роли и привилегии​

КодСообщениеМетоды
-22500Access denied: only Cluster Master can create rolesrole-create
-22501Privileges list must not be emptyrole-create
-22502Role management privileges cannot be assigned to custom rolesrole-create
-22503Privilege ID not foundrole-create
-22504Scope ID not foundrole-create
-22505Self-referencing scope cannot be assigned to custom rolerole-create
-22506Role with name already existsrole-create
-22510Access denied: only Cluster Master can edit rolesrole-set
-22511Cannot modify a fixed rolerole-set
-22512Role not foundrole-set
-22513Role management privileges cannot be assigned to custom rolesrole-set
-22514Privilege ID not foundrole-set
-22515Scope ID not foundrole-set
-22516Role with name already existsrole-set
-22517Self-referencing scope cannot be assigned to custom rolerole-set
-22520Access denied: only Cluster Master can delete rolesrole-delete
-22521Cannot delete a fixed rolerole-delete
-22522Role not foundrole-delete
-22530Role not foundrole-get
-22540Role not foundrole-scopes

Диапазон -225xx занят дважды: те же номера используют user-create и группа role-*. Например, -22505 означает «недопустимое имя пользователя» в user-create и «self-referencing scope запрещён» в role-create, а -22516 — занятое имя пользователя либо занятое имя роли. Трактуйте код по вызванному методу, а не по номеру.

Ограничения доступа учётной записи​

КодСообщениеМетоды
-403Access deniedвсе шесть методов группы
-24504user_id param has been ommiteduser-remote-list
-24505user_id param is NULLuser-remote-list
-24506user_id param value is not numericuser-remote-list
-24604user_id param has been ommiteduser-vhost-list
-24605user_id param is NULLuser-vhost-list
-24606user_id param value is not numericuser-vhost-list
-24712remote param value is not CIDRuser-remote-add
-24713remote param has mask out of range 8..32user-remote-add
-24714User ID==<id> has remote <cidr> alreadyuser-remote-add
-24715Invalid CIDR syntax of remote paramuser-remote-add
-24812remote param value is not CIDR / vhost param has bad lengthuser-remote-delete, user-vhost-add
-24814User ID==<id> has no remote <cidr> / has vhost <vhost> alreadyuser-remote-delete, user-vhost-add
-24815Invalid CIDR syntax of remote paramuser-remote-delete
-24912vhost param has bad lengthuser-vhost-delete
-24914User ID==<id> has no vhost <vhost>user-vhost-delete

Пара -24812, -24814 в каноне API указана и для user-remote-delete, и для user-vhost-add. Смысл читайте по вызванному методу.

Сессия и параметры безопасности​

КодСообщениеГде встречается
-9494No session tokenлюбой вызов без params.auth.cookie
-11000токен не найден среди активных сессий, просрочен или погашенauth-logout и любой вызов с недействительным токеном
-125Temp token expired or invaliduser-set-password через temp_token
-126Method not allowed with temp tokenлюбой вызов с temp_token, кроме user-set-password и auth-security-settings-get
-127Temp token allows changing own password onlyuser-set-password через temp_token
-403Access deniedauth-security-settings-set
-29101Security settings not foundauth-security-settings-get
-29102ошибка базы данныхauth-security-settings-get, auth-security-settings-set

Ограничения по идентификаторам​

ДиапазонЧто означаетСледствие
пользователи id < 10встроенные учётные записинельзя удалять (-22610), нельзя менять назначения ролей (-22320, -22421)
роли id < 10000фиксированные роли платформынельзя изменить (-22511) и удалить (-22521); creator — null
роли id ≥ 10000кастомные ролисоздаются role-create, удаляются каскадно вместе с назначениями
привилегии 7111–7113управление ролямикастомной роли не назначаются (-22502, -22513)

Пример: полный ввод пользователя в строй​

{"jsonrpc": "2.0", "method": "user-create", "params": {"name": "ops_duty", "fullname": "Ops Duty"}, "id": "1"}
{"jsonrpc": "2.0", "method": "user-set-password", "params": {"id": 12, "password": "<пароль>"}, "id": "2"}
{"jsonrpc": "2.0", "method": "user-role-assign", "params": {"user_id": 12, "vdc_id": 10, "role_id": 2}, "id": "3"}
{"jsonrpc": "2.0", "method": "user-roles-map", "id": "4"}

Последний вызов — проверка: в его ответе у пользователя 12 должно появиться назначение с role_id: 2 и нужным vdc_id.