13.5.8 Управление доступом
Методы
role-create
Метод для создания новых ролей (в дополнение к основным).
Описание полей:
name— имя роли;privileges— набор привилегий для роли;attrs— набор поддерживаемых атрибутов для роли (ОПЦИОНАЛЬНО).
При отстуствии attr роль будет глобальной без привязки к рабочему пространству или виртуальному рабочему столу. При указании атрибута vspace_id при использовании метода grant-user-role или grant-group-role можно указать привязку к конкретному рабочему пространству. При указании атрибута desktop_id автоматически будет добавлен атрибут vspace_id, по аналогии можно указать привязку к конкретному рабочему пространству или виртуальному столу при вызове методов назначения ролей.
Возможно добавление только тех привилегий, которые есть у пользователя.
Привилегии Role Creation, Role Modification, Role Delete нельзя указать в наборе привилегий для создания роли, они закреплены только за стандартными ролями.
Запрос:
{
"jsonrpc": "2.0",
"method": "role-create",
"params": {
"name": "Test Role",
"privileges": [
100, 200, 201
],
// Опционально
"attrs": [
// Опционально
"vspace_id",
// Опционально
"desktop_id"
]
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"id": 10000
},
"message": "Created"
}
}
role-delete
Метод для удаления ролей, созданных через role-create.
Описание полей:
id— идентификатор роли;force— при значенииtrueроль будет отозвана у всех пользователей и группActive Directoryперед удалением (ОПЦИОНАЛЬНО).
Запрос:
{
"jsonrpc": "2.0",
"method": "role-delete",
"params": {
"id": 10000,
// Опционально, при отсутствии - по умолчанию `false`
"force": true
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "Deleted"
}
}
role-set
Метод для редактирования набора привилегий у ролей, созданных через role-create.
Описание полей:
id— идентификатор роли;name— новое имя роли;clear— при указании поля (любое значение) будет выполнена очистка всех привилегий из роли (Этап №1) (ОПЦИОНАЛЬНО);remove_privileges— набор привилегий, которые требуется удалить из роли (Этап №2) (ОПЦИОНАЛЬНО);add_privileges— набор привилегий, которые требуется добавить в роль (Этап №3) (ОПЦИОНАЛЬНО);remove_attrs— набор поддерживаемых атрибутов, которые требуется удалить из роли (Этап №4) (ОПЦИОНАЛЬНО);add_attrs— набор поддерживаемых атрибутов, которые требуется добавить в роль (Этап №5) (ОПЦИОНАЛЬНО).
Все этапы опциональны и выполняются последовательно при указании.
Привилегии Role Creation, Role Modification, Role Delete нельзя указать в наборе привилегий для редактирования роли, они закреплены только за стандартными ролями.
Запрос:
{
"jsonrpc": "2.0",
"method": "role-set",
"params": {
"id": 10000,
// Опционально
"name": "New name for role",
// Опционально
"clear": "adadadada",
// Опционально
"remove_privileges": [2200, 2201],
// Опционально
"add_privileges": [0, 3100],
// Опционально
"remove_attrs": ["vspace_id"],
// Опционально
"add_attrs": ["vspace_id", "desktop_id"]
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "Updated"
}
}
grant-user-role
Метод для назначения ролей пользователю.
Запрос:
{
"jsonrpc": "2.0",
"method": "grant-user-role",
"params": {
"username": "test-admin-0",
"provider": "local",
"roles": [
1
],
"attrs": {
"vspace_id": 1
}
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "Granted"
}
}
grant-ad-group-role
Метод для назначения ролей группе Active Directory. Группа должна находиться в области видимости fqdn (метод ad-groups).
Запрос:
{
"jsonrpc": "2.0",
"method": "grant-ad-group-role",
"params": {
"group_id": "00dcf588-09a2-4852-9960-6ceb4bec0956",
"roles": [
5
],
"attrs": {
"desktop_id": 25
}
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "Granted"
}
}
revoke-user-role
Метод удаления назначений ролей у пользователя.
Запрос:
{
"jsonrpc": "2.0",
"method": "revoke-user-role",
"params": {
"username": "test-user-0",
"provider": "local",
"roles": [
1
],
// Затронет роли с полями в атрибутах равных указанным
"attrs": {
"desktop_id": 25
}
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "Revoked"
}
}
revoke-ad-group-role
Метод удаления назначений ролей у группы Active Directory.
Запрос:
{
"jsonrpc": "2.0",
"method": "revoke-ad-group-role",
"params": {
"group_id": "00dcf588-09a2-4852-9960-6ceb4bec0956",
"roles": [
1
],
// Затронет роли с полями в атрибутах равных указанным
"attrs": {
"desktop_id": 25
}
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"message": "Revoked"
}
}
privilege-list
Метод для получения полного списка привилегий API и методов, к которым привилегия предоставляет доступ.
При указании objective возможен альтернативный вид списка.
Запрос:
{
"jsonrpc": "2.0",
"method": "privilege-list",
"params": {
"objective": 1
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"0": {
"atrrs": [],
"id": 0,
"category": "Extra",
"methods": [
"version"
],
"name": "Version"
},
"1000": {
"atrrs": [],
"id": 1000,
"category": "User",
"methods": [
"user-create"
],
"name": "User Creation"
},
"1101": {
// Список поддерживаемых атрибутов при назначении (пример)
"atrrs": [
"vspace_id",
"desktop_id"
],
"id": 1101,
"category": "User",
"methods": [
"user-set-password"
],
"name": "User Set Password"
}
}
}
}
role-list
Метод для получения полного списка ролей API.
При указании objective возможен альтернативный вид списка.
Для ролей с id >= 10000 отображаются дополнительные поля:
creator_username— имя пользователя, создатель роли;creator_provider— провайдер аутентификации, создатель роли;created_ts— временная метка создания роли;modified_ts— временная метка последного редактирования роли.
Запрос:
{
"jsonrpc": "2.0",
"method": "role-list",
"params": {
"objective": 1
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"1": {
// Список поддерживаемых атрибутов при назначении (пример)
"atrrs": [
"vspace_id",
"desktop_id"
],
"id": 1,
"name": "VDI Master"
},
"10000": {
"atrrs": [
"vspace_id",
"desktop_id"
],
"created_ts": 1744213890,
"creator_provider": "local",
"creator_username": "test_user",
"id": 10000,
"modified_ts": 1744215225,
"name": "Custom Role"
},
...
}
}
}
role-privilege-list
Метод для получения списка соответствия ролей к привилегиям API.
Запрос:
{
"jsonrpc": "2.0",
"method": "role-privilege-list",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Успешный ответ:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"1": [
0,
1000,
1300,
2100,
2300
],
...
}
}
}