Системный контроль доступа#
Trino разделяет понятие субъекта (principal), который проходит аутентификацию на
координаторе, и имени пользователя, от имени которого выполняются запросы. Например,
при запуске Trino CLI имя пользователя Trino можно указать с помощью
параметра --user.
По умолчанию координатор Trino позволяет любому principal выполнять запросы от имени любого пользователя Trino. В защищенной среде такое поведение, вероятно, нежелательно и, скорее всего, требует настройки.
Реализация#
SystemAccessControlFactory отвечает за создание экземпляра
SystemAccessControl. Он также определяет имя SystemAccessControl,
которое используется администратором в конфигурации Trino.
Реализации SystemAccessControl имеют несколько обязанностей:
Проверять, авторизован ли заданный principal на выполнение запросов от имени конкретного пользователя.
Определять, может ли заданный пользователь изменять значения заданного системного свойства.
Выполнять проверки доступа во всех каталогах. Эти проверки выполняются до любых проверок, специфичных для коннектора, и поэтому могут запрещать права, которые иначе были бы разрешены
ConnectorAccessControl.
Реализация SystemAccessControl и SystemAccessControlFactory
должна быть упакована как плагин и установлена в кластер Trino.
Конфигурация#
После установки на координатор плагина, реализующего SystemAccessControl и
SystemAccessControlFactory, он настраивается с помощью файла(ов), указанных
свойством access-control.config-files (по умолчанию это один файл
etc/access-control.properties).
Все свойства, кроме access-control.name, специфичны для
реализации SystemAccessControl.
Свойство access-control.name используется Trino, чтобы найти зарегистрированный
SystemAccessControlFactory по имени, возвращаемому
SystemAccessControlFactory.getName(). Остальные свойства передаются
как map в SystemAccessControlFactory.create().
Пример файла конфигурации:
access-control.name=custom-access-control
custom-property1=custom-value1
custom-property2=custom-value2