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