Настройка аутентификации по пользовательскому SSL‑сертификату
This page is not applicable to ClickHouse Cloud. The feature documented here is not available in ClickHouse Cloud services. See the ClickHouse Cloud Compatibility guide for more information.
В этом руководстве приведены простые и минимально необходимые настройки для аутентификации с помощью пользовательских SSL-сертификатов. Настоящее руководство основано на разделе Configuring SSL-TLS user guide.
Аутентификация пользователей по SSL поддерживается при использовании интерфейсов https, native, mysql и postgresql.
Для безопасной аутентификации на узлах ClickHouse необходимо установить <verificationMode>strict</verificationMode> (хотя значение relaxed подойдет для целей тестирования).
Если вы используете AWS NLB с интерфейсом MySQL, вам необходимо обратиться в службу поддержки AWS с просьбой включить недокументированную опцию:
I would like to be able to configure our NLB proxy protocol v2 as below
proxy_protocol_v2.client_to_server.header_placement,Value=on_first_ack. :::
1. Создание пользовательских сертификатов SSL
В этом примере используются самоподписанные сертификаты с самоподписанным центром сертификации (CA). Для продуктивных сред создайте CSR и отправьте его вашей PKI‑команде или поставщику сертификатов, чтобы получить корректный сертификат.
-
Сгенерируйте запрос на подпись сертификата (CSR) и ключ. Базовый формат следующий:
В этом примере мы используем следующие значения для домена и пользователя в тестовом окружении:
ПримечаниеЗначение CN произвольно, и любая строка может быть использована в качестве идентификатора сертификата. Оно используется при создании пользователя на дальнейших шагах.
-
Сгенерируйте и подпишите новый пользовательский сертификат, который будет использоваться для аутентификации. Базовый формат следующий:
В этом примере мы используем следующие значения для домена и пользователя в тестовом окружении:
2. Создание SQL‑пользователя и выдача прав
Подробные сведения о включении SQL‑пользователей и настройке ролей см. в руководстве пользователя Определение SQL‑пользователей и ролей.
-
Создайте SQL‑пользователя, использующего аутентификацию по сертификату:
-
Выдайте привилегии новому пользователю, аутентифицируемому по сертификату:
ПримечаниеВ этом упражнении пользователю для демонстрации предоставляются полные административные привилегии. Параметры прав доступа см. в документации по RBAC ClickHouse.
ПримечаниеМы рекомендуем использовать SQL для определения пользователей и ролей. Однако, если вы сейчас определяете пользователей и роли в конфигурационных файлах, пользователь будет выглядеть следующим образом:
3. Тестирование
-
Скопируйте пользовательский сертификат, пользовательский ключ и сертификат CA (центра сертификации) на удалённый узел.
-
Настройте OpenSSL в конфигурации клиента ClickHouse, указав сертификат и пути к файлам.
-
Запустите
clickhouse-client.ПримечаниеОбратите внимание, что пароль, переданный в clickhouse-client, игнорируется, если в конфигурации указан сертификат.
4. Тестирование HTTP
-
Скопируйте пользовательский сертификат, пользовательский ключ и сертификат УЦ на удалённый узел.
-
Используйте
curl, чтобы проверить выполнение примерной SQL-команды. Базовый формат команды:Например:
Вывод будет похож на следующий:
ПримечаниеОбратите внимание, что пароль не указывался: сертификат используется вместо пароля, и именно с его помощью ClickHouse аутентифицирует пользователя.
Итоги
В этой статье мы рассмотрели основы создания и настройки пользователя для аутентификации с использованием SSL-сертификата. Этот метод может применяться с clickhouse-client или любыми клиентами, которые поддерживают интерфейс https и позволяют задавать HTTP-заголовки. Сгенерированные сертификат и ключ должны храниться в конфиденциальности и с ограниченным доступом, поскольку сертификат используется для аутентификации и авторизации пользователя при выполнении операций в базе данных ClickHouse. Относитесь к сертификату и ключу так же, как к паролям.