Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Выражения SpEL в областях видимости

Помимо выбора объектов из списка, доступ в области видимости можно задать выражением на языке Spring Expression Language (SpEL). Выражение вычисляется для каждого объекта. В область видимости попадают и объекты, созданные после настройки. Добавлять такие объекты вручную не требуется.

Задание выражения

Чтобы задать выражение:

  1. На портале администрирования в разделе Права доступа перейдите на вкладку Области видимости.

  2. Создайте область видимости или выберите существующую для изменения.

  3. На шаге Область видимости в списке найдите нужную строку и нажмите Перейти к расширенной настройке.

  4. Введите выражение в открывшемся окне и сохраните изменения.

  5. Завершите создание или изменение области видимости.

Принцип работы

  • Для проверяемого объекта выбирается выражение, заданное для его типа.

  • Выражение вычисляется по правилам SpEL.

  • Если результат равен true, объект входит в область видимости.

Таблица 1. Переменные
Переменная Описание

asset

Проверяемый объект со своими свойствами. Набор свойств зависит от типа объекта

operation

Проверяемая операция, например создание или удаление

#scope

Массив объектов, выбранных флажками в этой области видимости. Содержит объекты всех типов, доступ к которым разрешен в области

Таблица 2. Функции
Функция Возвращает true, если

contains(array, value)

массив array содержит значение value

containsAll(array1, array2)

все элементы array2 входят в array1

containsAny(array1, array2)

хотя бы один элемент array2 входит в array1

containsNone(array1, array2)

ни один элемент array2 не входит в array1

Массив можно получить из #scope или объявить в выражении, например {'VDI', 'RDS'}.

Выражение с массивом из #scope:

contains(#scope, asset)

Выражение с массивом, заданным в выражении:

contains({'VDI', 'RDS'}, asset.serverType)

Свойства объектов

У всех объектов есть свойства id (UUID) и assetType (тип объекта). Дополнительные свойства приведены в таблице.

Таблица 3. Дополнительные свойства
Тип (assetType) Свойства

RoleDefinition — Роль

name

AccessScope — Область видимости

name

AccessBinding — Назначение

name

DeliveryGroup — Группа доставки

name

operationSystemType (LINUX, WINDOWS)

serverType (RDS, VDI, REMOTE_PC)

MachineCatalog — Каталог ресурсов

name

operationSystemType (LINUX, WINDOWS)

serverType (RDS, VDI, REMOTE_PC)

source — источник виртуализации. Доступны свойства источника, например source.name

Resource — Приложение

name

appPath — путь к приложению

status (ON, OFF)

type (APP, DESKTOP)

os (LINUX, WINDOWS)

ResourceCategory — Категория приложений

name

TrustedCertificate — Доверенный сертификат

Дополнительных свойств нет

SystemSettings — Системные настройки

key — ключ настройки

User — Пользователь

username — логин

superuser, locked, isLocal (true, false) — признаки суперпользователя, блокировки и локальной учетной записи

ldapGroupIds — идентификаторы LDAP-групп пользователя

ldapCatalog — LDAP-каталог пользователя

Broker — Брокер

brokerId

name

TermitGateway — Шлюз удаленного доступа

address

status (ACTIVE, MAINTENANCE)

LdapCatalog — LDAP-каталог

name

Policy — Политика

name

status (OFF, DRAFT, MODELING, ON)

global — глобальная политика

default — политика по умолчанию

targets — цели политики (id, type, name)

types — типы настроек политики

VirtSource — Источник виртуализации

name

type (ZVIRT)

status (ACTIVE, MAINTENANCE)

Zone — Зона

name

Допустимые значения 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.*'

Каталоги ресурсов с ОС Windows

Требуется предоставить доступ ко всем каталогам ресурсов с операционной системой Windows.

asset.operationSystemType == 'WINDOWS'

Рекомендации

  • Строковые значения записываются в одинарных кавычках, например 'VDI' и 'WINDOWS'.

  • В выражении доступны только свойства проверяемого типа объекта. Например, serverType есть у групп доставки и каталогов ресурсов и отсутствует у приложений.

  • Для выражений с #scope нужный объект должен быть выбран флажком в этой же области видимости.