Аутентификация по файлу паролей#

Trino можно настроить так, чтобы включить фронтенд-аутентификацию по паролю через HTTPS для клиентов, таких как CLI и драйверы JDBC и ODBC. Имя пользователя и пароль проверяются по именам пользователей и паролям, хранящимся в файле.

Аутентификация по файлу паролей очень похожа на LDAP-аутентификация. См. документацию LDAP для общих инструкций по настройке сервера и клиентов для использования TLS и аутентификации по имени пользователя и паролю.

Для аутентификации по файлу паролей требуется использовать TLS и a configured shared secret.

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

Чтобы включить аутентификацию по файлу паролей, задайте password authentication type в etc/config.properties:

http-server.authentication.type=PASSWORD

Кроме того, создайте на координаторе файл etc/password-authenticator.properties с именем аутентификатора file:

password-authenticator.name=file
file.password-file=/path/to/password.db

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

Свойство

Описание

file.password-file

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

file.refresh-period

Как часто перечитывать файл паролей. По умолчанию 5s.

file.auth-token-cache.max-size

Максимальное количество кэшируемых аутентифицированных паролей. По умолчанию 1000.

Файлы паролей#

Формат файла#

Файл паролей содержит список имен пользователей и паролей, по одному на строку, разделенных двоеточием. Пароли должны быть безопасно захэшированы с помощью bcrypt или PBKDF2.

bcrypt-пароли начинаются с $2y$ и должны использовать минимальную стоимость 8:

test:$2y$10$BqTb8hScP5DfcpmHo5PeyugxHz5Ky/qf3wrpD7SNm8sWuA3VlGqsa

PBKDF2-пароли состоят из количества итераций, за которым следуют соль и хэш в шестнадцатеричной кодировке:

test:1000:5b4240333032306164:f38d165fce8ce42f59d366139ef5d9e1ca1247f0e06e503ee1a611dd9ec40876bb5edb8409f5abe5504aab6628e70cfb3d3a18e99d70357d295002c3d0a308a0

Создание файла паролей#

Файлы паролей в формате bcrypt можно создавать с помощью утилиты htpasswd из Apache HTTP Server. Параметр стоимости должен быть указан явно, так как Trino требует более высокое минимальное значение, чем значение по умолчанию.

Чтобы начать, создайте пустой файл паролей:

touch password.db

Добавьте или обновите пароль для пользователя test:

htpasswd -B -C 10 password.db test

Проверка конфигурации#

Чтобы проверить аутентификацию по файлу паролей, войдите в Web UI и подключитесь к кластеру с помощью CLI Trino:

  • Подключитесь к Web UI из браузера по URL с HTTPS, например https://trino.example.com:8443. Введите имя пользователя в поле Username и соответствующий пароль в поле Password, затем войдите в UI. Убедитесь, что вход с неверной комбинацией имени пользователя и пароля невозможен. При успешном входе имя пользователя отображается в правом верхнем углу UI.

  • Подключитесь через Trino CLI по URL с HTTPS, например https://trino.example.net:8443, добавив параметры --user и --password:

./trino --server https://trino.example.com:8443 --user test --password

Команда выше запросит пароль. Введите пароль, заданный для пользователя, указанного в параметре --user, чтобы получить приглашение trino>. Успешная аутентификация позволяет выполнять запросы из CLI.

Для проверки подключения выполните запрос:

trino> SELECT 'rocks' AS trino;

trino
-------
rocks
(1 row)

Query 20220919_113804_00017_54qfi, FINISHED, 1 node
Splits: 1 total, 1 done (100.00%)
0.12 [0 rows, 0B] [0 rows/s, 0B/s]