Права
Центральный Пульт – многопользовательская система. Для безопасности использования в ней предусмотрен механизм, позволяющий предоставлять различные права доступа разным пользователям. Например, администраторы могут иметь право создавать новых пользователей, задавать им права доступа, изменять объекты, изменять конфигурацию системы и т. д. Обычный пользователь, которому нужно только следить за данными, должен иметь доступ только к своим объектам.
Для работы с системой Центральный Пульт через его 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(конфигурация), -
dictionaries(словари), -
dictionaries-monitoring(словари для мониторинга).
Обратите внимание, что 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, -
dictionaries, -
flows.
Одно множество прав, которое немного отличается от упомянутых и должно быть описано отдельно — это права на управления документами (manage-documents). Права состоят из четырех подмножеств:
| Имя подмножества | Что подмножество позволяет пользователям делать |
|---|---|
create-documents |
создать URL-адрес документа |
delete-documents |
удалить документы и URL-адреса документов |
modify-documents |
изменить URL-адрес документа |
upload-documents |
загрузить документы |
Таблица ниже описывает все упомянутые подмножества прав:
| Items/Permissions' subsets | manage | create | modify | delete | upload | update |
|---|---|---|---|---|---|---|
classes |
+ |
- |
- |
- |
- |
- |
configuration |
+ |
- |
- |
- |
- |
+ |
dictionaries |
+ |
- |
+ |
- |
- |
+ |
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.