Настройка аутентификации по пользовательскому SSL‑сертификату
Эта страница не относится к ClickHouse Cloud. Описанная здесь функция недоступна в услугах ClickHouse Cloud. См. руководство ClickHouse Совместимость с ClickHouse Cloud для получения дополнительной информации.
В этом руководстве приведены простые и минимально необходимые настройки для аутентификации с помощью пользовательских 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. Относитесь к сертификату и ключу так же, как к паролям.