Аутентификация по сертификату#
Вы можете настроить Trino на поддержку клиентских сертификатов, предоставляемых клиентом и проверяемых сервером Trino при первоначальном подключении.
Important
Этот метод аутентификации предоставляется только для поддержки сред, где есть абсолютное требование клиентской аутентификации и уже есть клиентские сертификаты для каждого клиента. У таких сред есть существующая инфраструктура PKI, возможно с локальным центром сертификации (Certificate Authority, CA).
Эта возможность не подходит для сред, которым нужно генерировать набор клиентских сертификатов, чтобы использовать этот тип аутентификации. Вместо этого рассмотрите другой тип аутентификации.
Для аутентификации по сертификату требуется использовать TLS и настроенный общий секрет.
Использование аутентификации по сертификату#
Все клиенты, подключающиеся по TLS/HTTPS, проходят следующие начальные шаги:
Клиент пытается связаться с координатором.
Координатор возвращает клиенту свой сертификат.
Клиент проверяет сертификат сервера с помощью trust store клиента.
Кластер с включенной аутентификацией по сертификату проходит следующие дополнительные шаги:
Координатор запрашивает у клиента его сертификат.
Клиент отвечает своим сертификатом.
Координатор проверяет сертификат клиента, используя trust store координатора.
Из этих шагов следуют несколько правил:
Trust store, используемые клиентами, должны включать сертификат подписанта сертификата координатора.
Trust store, используемые координаторами, должны включать сертификат подписанта клиентских сертификатов.
Trust store, используемые координатором и клиентами, не обязаны быть одинаковыми.
Сертификат, проверяющий координатор, не обязан совпадать с сертификатом, проверяющим клиентов.
Trino проверяет сертификаты на основе distinguished name (DN) из поля
X.509 Subject. Вы можете использовать сопоставление пользователей, чтобы сопоставить subject DN с именем пользователя
Trino.
Возможны три уровня поддержки клиентских сертификатов. С точки зрения сервера:
Сервер не требует сертификат от клиентов.
Сервер запрашивает сертификат у клиентов, но разрешает подключение и без него.
Для разрешения подключения у сервера обязательно должен быть сертификат клиента.
Поддержка клиентских сертификатов в Trino соответствует среднему варианту: Trino запрашивает сертификат, но разрешает подключение, если проходит другой метод аутентификации.
Конфигурация аутентификации по сертификату#
Включите аутентификацию по сертификату, задав тип аутентификации Certificate в etc/config.properties:
http-server.authentication.type=CERTIFICATE
Вы можете указать аутентификацию по сертификату вместе с другим методом
аутентификации, например PASSWORD. В этом случае аутентификация выполняется
в порядке записей, и первая успешная аутентификация предоставляет доступ.
Например, следующая настройка показывает использование двух типов
аутентификации:
http-server.authentication.type=CERTIFICATE,PASSWORD
Также доступны следующие свойства конфигурации:
Имя свойства |
Описание |
|---|---|
|
Регулярное выражение для сопоставления всех имен пользователей для этого типа аутентификации к формату, ожидаемому Trino. |
|
Путь к JSON-файлу, содержащему набор правил сопоставления пользователей для этого типа аутентификации. |
Использование аутентификации по сертификату с клиентами#
При использовании CLI Trino укажите параметры
--keystore-path и --keystore-password, как описано
в Аутентификация по сертификату.
При использовании JDBC-драйвера Trino для подключения к
кластеру с включенной аутентификацией по сертификату используйте
параметры SSLKeyStoreType и
SSLKeyStorePassword, чтобы указать путь к сертификату клиента и его пароль,
если он задан.