Права

Права

Права ​

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' subsetsmanagecreatemodifydeleteuploadupdate
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.

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