Выражения SpEL в областях видимости
Помимо выбора объектов из списка, доступ в области видимости можно задать выражением на языке Spring Expression Language (SpEL). Выражение вычисляется для каждого объекта. В область видимости попадают и объекты, созданные после настройки. Добавлять такие объекты вручную не требуется.
Задание выражения
Чтобы задать выражение:
-
На портале администрирования в разделе Права доступа перейдите на вкладку Области видимости.
-
Создайте область видимости или выберите существующую для изменения.
-
На шаге Область видимости в списке найдите нужную строку и нажмите Перейти к расширенной настройке.
-
Введите выражение в открывшемся окне и сохраните изменения.
-
Завершите создание или изменение области видимости.
Принцип работы
-
Для проверяемого объекта выбирается выражение, заданное для его типа.
-
Выражение вычисляется по правилам SpEL.
-
Если результат равен
true, объект входит в область видимости.
| Переменная | Описание |
|---|---|
|
Проверяемый объект со своими свойствами. Набор свойств зависит от типа объекта |
|
Проверяемая операция, например создание или удаление |
|
Массив объектов, выбранных флажками в этой области видимости. Содержит объекты всех типов, доступ к которым разрешен в области |
| Функция | Возвращает true, если |
|---|---|
|
массив |
|
все элементы |
|
хотя бы один элемент |
|
ни один элемент |
Массив можно получить из #scope или объявить в выражении, например {'VDI', 'RDS'}.
Выражение с массивом из #scope:
contains(#scope, asset)
Выражение с массивом, заданным в выражении:
contains({'VDI', 'RDS'}, asset.serverType)
Свойства объектов
У всех объектов есть свойства id (UUID) и assetType (тип объекта). Дополнительные свойства приведены в таблице.
Тип (assetType) |
Свойства |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дополнительных свойств нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Допустимые значения SystemSettings.key:
AuthSettings
CasInternalSettings
EventDepth
ExternalGatewaySettings
ExternalHttpsSettings
FullRoleSettings
GatewaySettings
HttpsSettings
InstallationFileSettings
KerberosSettings
LDAPSettings
LdapCatalogsSettings
LocalUserLockSettings
MfaBypass
MfaSettings
PasswordSettings
PrometheusInternalSettings
RadiusSettings
RoleSettings
RsyslogSettings
SessionDepth
SmartCardSettings
TerminalServerRootCertificateSettings
TerminalServerSettings
TokenSettings
UserAppearance
WebClientSettings
Допустимые значения Policy.types:
CLIPBOARD_REDIRECTING
SOUND_REDIRECTION
FILE_SYSTEM_REDIRECTION
SMART_CARD_REDIRECTION
HOME_DIRECTORY_PATH
ROAMING_PROFILES
LOCAL_PRINTERS
SESSION_MANAGEMENT_ACCESS
REMOTE_APP_WITH_FREE_RDP
CLIENT_TIME_ZONE_REDIRECTION
CONCURRENT_SESSIONS_LIMIT
CONCURRENT_OPENING_SESSIONS_LIMIT
CPU_USAGE_LIMIT
DISK_USAGE_LIMIT
MEMORY_USAGE_LIMIT
BASIC_MEMORY_USAGE_LIMIT
Примеры
Каталоги ресурсов конкретного источника виртуализации
Требуется предоставить доступ ко всем каталогам ресурсов, связанным с определенным источником виртуализации, включая каталоги, которые будут созданы позднее. Источник виртуализации должен быть выбран флажком в этой области видимости.
contains(#scope, asset.source)
Группы доставки VDI
Требуется предоставить доступ ко всем существующим и будущим группам доставки с типом сервера VDI.
asset.serverType == 'VDI'
Для нескольких типов серверов используйте логическое выражение:
asset.serverType == 'VDI' or asset.serverType == 'RDS'
Допустимо перечислить значения в массиве:
contains({'VDI', 'RDS'}, asset.serverType)
Объекты, имя которых соответствует шаблону
Требуется предоставить доступ ко всем источникам виртуализации, имена которых начинаются с finance. Для этого задайте регулярное выражение:
asset.name matches '^finance.*'
Чтобы предоставить доступ к связанным каталогам ресурсов, в настройке каталогов ресурсов задайте:
asset.source.name matches '^finance.*'
Рекомендации
-
Строковые значения записываются в одинарных кавычках, например 'VDI' и 'WINDOWS'.
-
В выражении доступны только свойства проверяемого типа объекта. Например,
serverTypeесть у групп доставки и каталогов ресурсов и отсутствует у приложений. -
Для выражений с
#scopeнужный объект должен быть выбран флажком в этой же области видимости.