Безопасность активов
Версия: 1.26.0
Суперпользователь имеет полный доступ ко всем арендаторам (областям). В установке OpenRemote есть только один суперпользователь, он всегда называется admin и всегда находится в области master. Его нельзя переименовать или удалить, как и главное царство. Может быть создано любое количество новых областей и, следовательно, арендаторов.
В каждой области могут быть постоянные пользователи. У них обычно есть административные функции внутри области, они управляют областью. В зависимости от назначенных ролей обычный пользователь может читать/записывать любые данные об активах в области или управлять другими пользователями в области.
По умолчанию актив является частным, доступ к нему может получить только суперпользователь или обычные пользователи его области. Это можно смягчить, предоставив ограниченный или публичный доступ к активам.
Ограниченный доступ
Область может иметь ограниченных пользователей. Определение такого пользователя — это обычный пользователь, который связан с набором активов в своей области. Это связь «многие ко многим», актив может быть связан со многими пользователями, а пользователь может иметь ссылки на множество активов. Положение активов в дереве активов не имеет значения: связь пользователя с родительским элементом не означает, что он связан с дочерними активами. Наличие связанных ресурсов — это то, что делает пользователя «ограниченным». Ресурсы, связанные с пользователем, не являются частными и предназначены только для менеджеров, но для доступа по-прежнему требуется аутентификация.
Рассмотрим следующий пример: вы — управляющий умным домом с множеством квартир. Для всего здания создана область/арендатор. Суперпользователь, создавший область, предоставляет вам обычную учетную запись в этой области и все необходимые роли. Теперь вы хотите дать жильцам квартир индивидуальные аккаунты, по одному на каждое жилье. Вы должны ограничить доступ жильцов внутри здания. Учетная запись каждого жителя должна иметь доступ только к определенному активу Резиденции, представляющему его квартиру, но не ко всему активу Здания. Чтобы еще больше ограничить доступ до необходимого минимума, вы также предоставите каждому жильцу доступ к некоторым активам комнат и вещей в квартире. Однако вы не будете предоставлять доступ к каким-либо активам агента, поскольку это позволит резиденту настраивать соединения с реальными службами и устройствами. Это должно быть разрешено только менеджерам; то же самое относится и к любым другим активам, которые вы хотите сохранить в тайне.
Пользователи с ограниченными правами могут получать доступ только к своим связанным активам и, в зависимости от назначенных им ролей, могут читать/записывать такие данные активов. К ограниченным пользователям/клиентам применяются следующие ограничения:
— Когда клиент с ограниченными правами читает ресурсы, включаются только динамические атрибуты с AssetMeta#ACCESS_RESTRICTED_READ и метаэлементы атрибутов с MetaItemDescriptor.Access#restrictedRead.
-
Когда клиент с ограниченными правами обновляет существующие активы, можно добавлять новые динамические атрибуты, но обновлять или удалять можно только атрибуты с
AssetMeta#ACCESS_RESTRICTED_WRITE. Любые новые атрибуты автоматически устанавливаются с помощьюAssetMeta#ACCESS_RESTRICTED_READиAssetMeta#ACCESS_RESTRICTED_WRITE, что гарантирует, что клиент с ограниченными правами может получить полный доступ к своим собственным атрибутам. Любые добавленные, обновленные или удаленные метаэлементы атрибутов должны бытьMetaItemDescriptor.Access#restrictedWrite. Когда клиент с ограниченными правами обновляет атрибут актива, предполагается, что клиент выполняет обновление с полным списком записываемых метаэлементов, то есть любые существующие доступные для записи метаэлементы атрибута будут удалены и заменены доступными для записи метаэлементами, предоставленными клиентом. -
Клиент с ограниченными правами не может создавать или удалять активы. Клиент с ограниченными правами не может изменить имя, родительский элемент или область актива. Пользователь с ограниченными правами не может сделать актив общедоступным. Пользователь с ограниченными правами может изменить местоположение актива.Обратите внимание, что сторонние элементы метаданных (не в
org.openremote.model.Constants#NAMESPACE) никогда не включаются по умолчанию в ограниченные операции чтения/записи активов. Чтобы сделать сторонние метаэлементы доступными для чтения или записи для клиентов с ограниченными правами, предоставьте дескрипторы метаэлементов и необходимые разрешения доступа черезAssetModelProviderSPI.
Публичный (анонимный) доступ
Актив может быть доступен общедоступным клиентам без аутентификации, установив для Asset#accessPublicRead значение true. Каждый атрибут, который должен быть общедоступным, также должен иметь элементы конфигурации Access public read и/или Access public write, если это необходимо.
Уведомление о лицензии: атрибуция документации OpenRemote