Права
SmartDCIM – многопользовательская система. Для безопасности использования в ней предусмотрен механизм, позволяющий предоставлять различные права доступа разным пользователям. Например, администраторы могут иметь право создавать новых пользователей, задавать им права доступа, изменять объекты, изменять конфигурацию системы и т. д. Обычный пользователь, которому нужно только следить за данными, должен иметь доступ только к своим объектам.
Для работы с системой SmartDCIM через его API вам также могут потребоваться специальные права. Для методов API эти права называются permissions. Если метод API требует наличия некоторых прав, они будут указаны в описании метода.
По умолчанию новые пользователи не имеют особых прав. Управлять ими могут администраторы через веб-интерфейс или с помощью соответствующих методов API. Также, стандартные права для пользователей могут быть настроены в параметре server.user.template.permissions серверной конфигурации.
Права, используемые в API системы SmartDCIM
Все права, используемые в API системы SmartDCIM, можно разделить на четыре группы.
Права объектов и ссылок
Первая группа прав включает в себя два, называемые «objectPermissions» и «linkPermissions». Они определяют, может ли пользователь выполнять операции с конкретным объектом или ссылкой. В абзаце ниже содержится более подробное описание того, как работают эти права.
Как работают права доступа к объектам и ссылкам
Каждый раз, когда вы делаете запрос к методу API, который требует наличия у вас objectPermissions или linkPermissions, SmartDCIM запускает алгоритм, который проверяет, есть ли у вас эти права. Прежде чем приступить к описанию алгоритма, давайте введем некоторые термины и определения. Для простоты термин объект используется для описания как объектов, так и ссылок.
- Все объекты в системе SmartDCIM образуют граф. Каждый объект имеет родительские и дочерние объекты, доступные по ссылкам. Алгоритм использует связи только с родительскими объектами для перемещения по графу.
- Права на доступ к объекту могут быть предоставлены/запрещены вам явно. Список объектов, к которым вам явно предоставлены права, называется included, к которым вам явно запрещен доступ — excluded.
- Права на доступ к объекту также могут быть предоставлены/запрещены вам неявно. Если существует путь от объекта к его предку, к которому вам явно предоставлен доступ, и этот путь не содержит исключенных объектов, у вас будет неявный доступ_ к этому объекту. Если такого пути не существует, вам неявно запрещено работать с объектом.
Алгоритм проверки прав
Когда вы делаете запрос к методу API, требующему objectPermissions или linkPermissions, алгоритм сначала проверяет, есть ли у вас явные права на доступ к объекту. Если да, то запрос будет обработан. В противном случае алгоритм проверяет, есть ли у вас неявные права на доступ к объекту, просматривая родителей объекта. Если найден путь к предку, который внесён в список included, запрос также будет обработан. В противном случае вы получите ошибку «403», указывающую, что у вас нет необходимых прав.
Права сущностей
Методы API, которые работают как с объектами, так и со связями (например, Получить сущность по ID), требуют entityPermissions. Эти методы проверяют права в зависимости от типа объекта, к которому осуществляется доступ. Если пользователь попытается получить доступ к объекту с помощью этих методов, SmartDCIM проверит, есть ли у этого пользователя 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.