Права

Центральный Пульт – многопользовательская система. Для безопасности использования в ней предусмотрен механизм, позволяющий предоставлять различные права доступа разным пользователям. Например, администраторы могут иметь право создавать новых пользователей, задавать им права доступа, изменять объекты, изменять конфигурацию системы и т. д. Обычный пользователь, которому нужно только следить за данными, должен иметь доступ только к своим объектам.

Для работы с системой Центральный Пульт через его API вам также могут потребоваться специальные права. Для методов API эти права называются permissions. Если метод API требует наличия некоторых прав, они будут указаны в описании метода.

По умолчанию новые пользователи не имеют особых прав. Управлять ими могут администраторы через веб-интерфейс или с помощью соответствующих методов API. Также, стандартные права для пользователей могут быть настроены в параметре server.user.template.permissions серверной конфигурации.

Права, используемые в API системы Центральный Пульт

Все права, используемые в API системы Центральный Пульт, можно разделить на четыре группы.

Права объектов и ссылок

Первая группа прав включает в себя два, называемые «objectPermissions» и «linkPermissions». Они определяют, может ли пользователь выполнять операции с конкретным объектом или ссылкой. В абзаце ниже содержится более подробное описание того, как работают эти права.

Как работают права доступа к объектам и ссылкам

Каждый раз, когда вы делаете запрос к методу API, который требует наличия у вас objectPermissions или linkPermissions, Центральный Пульт запускает алгоритм, который проверяет, есть ли у вас эти права. Прежде чем приступить к описанию алгоритма, давайте введем некоторые термины и определения. Для простоты термин объект используется для описания как объектов, так и ссылок.

  • Все объекты в системе Центральный Пульт образуют граф. Каждый объект имеет родительские и дочерние объекты, доступные по ссылкам. Алгоритм использует связи только с родительскими объектами для перемещения по графу.

  • Права на доступ к объекту могут быть предоставлены/запрещены вам явно. Список объектов, к которым вам явно предоставлены права, называется included, к которым вам явно запрещен доступ — excluded.

  • Права на доступ к объекту также могут быть предоставлены/запрещены вам неявно. Если существует путь от объекта к его предку, к которому вам явно предоставлен доступ, и этот путь не содержит исключенных объектов, у вас будет неявный доступ_ к этому объекту. Если такого пути не существует, вам неявно запрещено работать с объектом.

Алгоритм проверки прав

Когда вы делаете запрос к методу API, требующему objectPermissions или linkPermissions, алгоритм сначала проверяет, есть ли у вас явные права на доступ к объекту. Если да, то запрос будет обработан. В противном случае алгоритм проверяет, есть ли у вас неявные права на доступ к объекту, просматривая родителей объекта. Если найден путь к предку, который внесён в список included, запрос также будет обработан. В противном случае вы получите ошибку «403», указывающую, что у вас нет необходимых прав.

Права сущностей

Методы API, которые работают как с объектами, так и со связями (например, Получить сущность по ID), требуют entityPermissions. Эти методы проверяют права в зависимости от типа объекта, к которому осуществляется доступ. Если пользователь попытается получить доступ к объекту с помощью этих методов, Центральный Пульт проверит, есть ли у этого пользователя objectPermissions; если пользователь пытается получить доступ к ссылке – linkPermissions.

Остальная часть алгоритма такая же, как и у objectPermissions или linkPermissions.

Права ссылок

Группа referencePermissions содержит права, необходимые для получения, удаления и обновления ссылок. Если запрос требует этих прав, вам необходимо иметь доступ к объекту, на который указывает ссылка.

Права на управление

Третья группа представляет права на управление элементом (manage). Если у вас есть право на управление каким-либо элементом, вы можете создать, изменить и удалить этот элемент. Примерами таких прав являются manage-objects, manage-properties, manage-documents и т. д.

Список элементов системы, к которым применяются права manage:

  • objects (объекты),

  • properties (свойства),

  • documents (документы),

  • links (связи),

  • flows (потоки),

  • users (пользователи),

  • service-properties (данные мониторинга объекта),

  • classes (классы),

  • event-log (журнал событий),

  • history (исторические данные),

  • configuration (конфигурация).

Обратите внимание, что manage-properties и manage-documents являются подмножествами прав manage-objects и manage-links. Это означает, что пользователям с правами manage-objects и manage-links автоматически предоставляются и права manage-properties и manage-documents для объектов или ссылок соответственно.

Также, пользователям можно давать только часть прав на управление элементами. Например, пользователи могут иметь только права на создание объекта (create-object), но не иметь прав на изменение (modify-object) или удаление (delete-object) объектов.

Список всех элементов, для которых пользователям может быть предоставлено подмножество (create, modify, delete) прав manage:

  • objects,

  • properties,

  • documents,

  • links,

  • flows.

Одно множество прав, которое немного отличается от упомянутых и должно быть описано отдельно — это права на управления документами (manage-documents). Права состоят из четырех подмножеств:

Имя подмножества Что подмножество позволяет пользователям делать

create-documents

создать URL-адрес документа

delete-documents

удалить документы и URL-адреса документов

modify-documents

изменить URL-адрес документа

upload-documents

загрузить документы

Таблица ниже описывает все упомянутые подмножества прав:

Items/Permissions' subsets manage create modify delete upload

classes

+

-

-

-

-

configuration

+

-

-

-

-

documents

+

+

+

+

+

event-log

+

-

-

-

-

flows

+

+

+

+

-

history

+

-

-

-

-

links

+

+

+

+

-

objects

+

+

+

+

-

properties

+

+

+

+

-

service-properties

+

-

-

-

-

users

+

-

-

-

-

Знак ` на пересечении строки и столбца означает, что соответствующему элементу может быть предоставлено соответствующее подмножество прав. Например, ` на пересечении properties и delete означает, что properties может иметь права на подмножество delete. Минус в той же строке и в следующем столбце означает, что properties не может быть назначено подмножество прав upload.

Другие права

Последняя группа включает в себя четыре подмножества прав:

Название права Что это подмножество прав позволяет пользователям делать

execute-operations

выполнять операции для объекта или ссылки

read-session-log

получать информацию о сессиях пользователей

run-bulks

запускать массовые операции

upload-agent-updates

загружать обновления для агентов

Использование нескольких прав в запросе

Для некоторых методов может потребоваться наличие нескольких прав. Например, запись objectPermissions&(create-objects |manage-objects) означает, что метод требует, чтобы у вас было право доступа к определенному объекту И одно из прав create-objects ИЛИ manage-objects.

Смотрите также