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

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
],
...
}
}
}