Сопоставление групп#

Провайдеры групп в Trino сопоставляют имена пользователей с группами для более простого контроля доступа и управления группами ресурсов.

Настройте провайдер групп, создав файл etc/group-provider.properties на координаторе:

group-provider.name=file

Значение group-provider.name должно быть file или ldap, а конфигурация выбранного провайдера групп должна быть включена в тот же файл.

Конфигурация провайдера групп#

Имя свойства

Описание

group-provider.name

Имя используемого провайдера групп. Поддерживаемые значения:

group-provider.group-case

Необязательное преобразование регистра имени группы. Поддерживаемые значения:

  • keep: значение по умолчанию, без преобразования

  • upper: преобразует имя группы в ВЕРХНИЙ_РЕГИСТР

  • lower: преобразует имя группы в нижний_регистр

По умолчанию: keep.

Интеграция с контролем доступа#

Группы, разрешенные провайдером групп, передаются в движок системного контроля доступа Trino. Правила контроля доступа могут ссылаться на эти имена групп, чтобы предоставлять или ограничивать разрешения.

Файловый провайдер групп#

Файловый провайдер групп разрешает членство в группах по конфигурации в файле group-provider.properties на координаторе.

Конфигурация#

Включите файловый провайдер групп, создав файл etc/group-provider.properties на координаторе:

group-provider.name=file
file.group-file=/path/to/group.txt

Доступны следующие свойства конфигурации:

Конфигурация файлового провайдера групп#

Имя свойства

Описание

file.group-file

Путь к файлу групп.

file.refresh-period

Интервал времени между обновлениями конфигурации сопоставления групп из файла. По умолчанию: 5s.

Формат файла групп#

Файл групп содержит список групп и участников, по одной записи на строку, разделенных двоеточием. Пользователи разделяются запятой.

group_name:user_1,user_2,user_3

LDAP-провайдер групп#

LDAP-провайдер групп разрешает членство пользователей в группах из конфигурации, полученной с LDAP-сервера. Это позволяет определять правила доступа на основе LDAP-групп, а не отдельных пользователей.

Конфигурация#

Включите LDAP-провайдер групп, создав файл etc/group-provider.properties на координаторе, и добавьте дальнейшую конфигурацию для подключения к LDAP-серверу и другую информацию, как описано в следующих разделах.

group-provider.name=ldap
Общие LDAP-свойства#

Имя свойства

Описание

ldap.url

URI LDAP-сервера. Например, ldap://host:389 или ldaps://host:636.

ldap.allow-insecure

Разрешить небезопасное соединение с LDAP-сервером. По умолчанию: false.

ldap.ssl.keystore.path

Путь к хранилищу ключей PEM или JKS.

ldap.ssl.keystore.password

Пароль для хранилища ключей.

ldap.ssl.truststore.path

Путь к хранилищу доверенных сертификатов PEM или JKS.

ldap.ssl.truststore.password

Пароль для хранилища доверенных сертификатов.

ldap.ignore-referrals

Referrals позволяют находить записи на нескольких LDAP-серверах. Игнорируйте их, чтобы искать только в одном LDAP-сервере. По умолчанию: false.

ldap.timeout.connect

Таймаут длительности на установление соединения. По умолчанию: 1m.

ldap.timeout.read

Таймаут длительности на чтение данных из LDAP. По умолчанию: 1m.

ldap.admin-user

Bind distinguished name для пользователя-администратора. Например, CN=UserName,OU=City,OU=State,DC=domain,DC=domain_root

ldap.admin-password

Bind-пароль, используемый для пользователя-администратора.

ldap.user-base-dn

Базовый distinguished name для пользователей. Например, dc=example,dc=com.

ldap.user-search-filter

LDAP-фильтр для поиска записей пользователей; {0} заменяется именем пользователя Trino. Например, (cn={0})

ldap.group-name-attribute

Атрибут для извлечения имени группы из записи группы. Например, cn.

ldap.use-group-filter

Использовать ли разрешение групп на основе поиска. По умолчанию: true. Если false, Trino использует метод на основе атрибутов.

Поведение разрешения групп управляется свойством ldap.use-group-filter. При разрешении групп на основе поиска Trino ищет записи групп, которые включают DN пользователя. Для этого требуются следующие свойства:

Разрешение групп на основе поиска#

Имя свойства

Описание

ldap.group-base-dn

Базовый distinguished name для групп. Например, dc=example,dc=com.

ldap.group-search-filter

Фильтр поиска для групповых документов. Например, (cn=trino_*).

ldap.group-search-member-attribute

Атрибут из групповых документов, используемый для фильтрации по участнику. Например, cn.

В случае разрешения групп на основе атрибутов Trino считывает список групп напрямую из атрибута пользователя. Для этого требуется следующее свойство:

Разрешение групп на основе атрибутов (один запрос)#

Имя свойства

Описание

ldap.user-member-of-attribute

Атрибут членства в группе в пользовательских документах. Например, memberOf.

Примеры конфигураций#

Следующая конфигурация - пример OpenLDAP (на основе поиска) провайдера групп:

group-provider.name=ldap
group-provider.group-case=lower

ldap.url=ldap://ldap.example.com:389
ldap.admin-user=cn=admin,dc=example,dc=com
ldap.admin-password=your_password
ldap.group-name-attribute=cn
ldap.user-base-dn=ou=users,dc=example,dc=com
ldap.user-search-filter=(uid={0})
ldap.use-group-filter=true

ldap.group-base-dn=ou=groups,dc=example,dc=com
ldap.group-search-filter=(cn=trino_*)
ldap.group-search-member-attribute=member

Следующая конфигурация - пример Active Directory (один запрос, на основе атрибутов) провайдера групп:

group-provider.name=ldap
group-provider.group-case=lower

ldap.url=ldaps://ad.example.com:636
ldap.admin-user=cn=admin,dc=example,dc=com
ldap.admin-password=your_password
ldap.group-name-attribute=cn
ldap.user-base-dn=ou=users,dc=example,dc=com
ldap.user-search-filter=(sAMAccountName={0})
ldap.use-group-filter=false

ldap.user-member-of-attribute=memberOf