Настройка сертификата пользователя 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. Туториал основывается на руководстве по настройке SSL-TLS.
Аутентификация пользователя SSL поддерживается при использовании интерфейсов https
, native
, mysql
и postgresql
.
Узлы ClickHouse должны иметь установлено <verificationMode>strict</verificationMode>
для безопасной аутентификации (хотя relaxed
будет работать для целей тестирования).
Если вы используете AWS NLB с интерфейсом MySQL, вам нужно обратиться в службу поддержки AWS, чтобы включить недокументированную опцию:
Я хотел бы иметь возможность настраивать наш NLB-прокси протокол v2 следующим образом
proxy_protocol_v2.client_to_server.header_placement,Value=on_first_ack
.
1. Создание сертификатов пользователя SSL
В этом примере используются самоподписанные сертификаты с самоподписанным УЦ. Для производственных сред создайте CSR и отправьте его команде PKI или поставщику сертификатов, чтобы получить правильный сертификат.
-
Сгенерируйте запрос на подпись сертификата (CSR) и ключ. Основной формат таков:
В этом примере мы будем использовать это для домена и пользователя, которые будут использоваться в этой тестовой среде:
примечаниеCN произвольный, и любая строка может быть использована в качестве идентификатора для сертификата. Он используется при создании пользователя на следующих этапах.
-
Сгенерируйте и подпользуйте новый сертификат пользователя, который будет использоваться для аутентификации. Основной формат таков:
В этом примере мы будем использовать это для домена и пользователя, которые будут использоваться в этой тестовой среде:
2. Создание SQL-пользователя и предоставление прав
Для получения информации о том, как включить SQL-пользователей и задать роли, обратитесь к Определение SQL пользователей и ролей.
-
Создайте SQL-пользователя, определенного для использования аутентификации по сертификату:
-
Предоставьте привилегии новому пользователю сертификата:
примечаниеВ этом упражнении пользователю предоставляются полные права администратора для демонстрационных целей. Обратитесь к документации ClickHouse по RBAC для настройки прав доступа.
примечаниеМы рекомендуем использовать SQL для определения пользователей и ролей. Однако, если вы в настоящее время определяете пользователей и роли в файлах конфигурации, пользователь будет выглядеть так:
3. Тестирование
-
Скопируйте сертификат пользователя, ключ пользователя и сертификат CA на удаленный узел.
-
Настройте OpenSSL в конфигурации клиента ClickHouse с сертификатом и путями.
-
Запустите
clickhouse-client
.примечаниеОбратите внимание, что пароль, переданный в clickhouse-client, игнорируется, когда сертификат указан в конфигурации.
4. Тестирование HTTP
-
Скопируйте сертификат пользователя, ключ пользователя и сертификат CA на удаленный узел.
-
Используйте
curl
для тестирования образца SQL-команды. Основной формат:Например:
Вывод будет похож на следующий:
примечаниеОбратите внимание, что пароль не был указан, сертификат используется вместо пароля и именно так ClickHouse будет аутентифицировать пользователя.
Резюме
В этой статье рассмотрены основы создания и настройки пользователя для аутентификации по сертификату SSL. Этот метод можно использовать с clickhouse-client
или любыми клиентами, которые поддерживают интерфейс https
и где можно установить HTTP-заголовки. Сгенерированный сертификат и ключ следует хранить в секрете и с ограниченным доступом, поскольку сертификат используется для аутентификации и авторизации пользователя для операций с базой данных ClickHouse. Относитесь к сертификату и ключу так, как если бы они были паролями.