Перейти к основному содержимому
Перейти к основному содержимому

Настройка сертификата пользователя SSL для аутентификации

Not supported in ClickHouse Cloud
примечание

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 или поставщику сертификатов, чтобы получить правильный сертификат.

  1. Сгенерируйте запрос на подпись сертификата (CSR) и ключ. Основной формат таков:

    В этом примере мы будем использовать это для домена и пользователя, которые будут использоваться в этой тестовой среде:

    примечание

    CN произвольный, и любая строка может быть использована в качестве идентификатора для сертификата. Он используется при создании пользователя на следующих этапах.

  2. Сгенерируйте и подпользуйте новый сертификат пользователя, который будет использоваться для аутентификации. Основной формат таков:

    В этом примере мы будем использовать это для домена и пользователя, которые будут использоваться в этой тестовой среде:

2. Создание SQL-пользователя и предоставление прав

примечание

Для получения информации о том, как включить SQL-пользователей и задать роли, обратитесь к Определение SQL пользователей и ролей.

  1. Создайте SQL-пользователя, определенного для использования аутентификации по сертификату:

  2. Предоставьте привилегии новому пользователю сертификата:

    примечание

    В этом упражнении пользователю предоставляются полные права администратора для демонстрационных целей. Обратитесь к документации ClickHouse по RBAC для настройки прав доступа.

    примечание

    Мы рекомендуем использовать SQL для определения пользователей и ролей. Однако, если вы в настоящее время определяете пользователей и роли в файлах конфигурации, пользователь будет выглядеть так:

3. Тестирование

  1. Скопируйте сертификат пользователя, ключ пользователя и сертификат CA на удаленный узел.

  2. Настройте OpenSSL в конфигурации клиента ClickHouse с сертификатом и путями.

  3. Запустите clickhouse-client.

    примечание

    Обратите внимание, что пароль, переданный в clickhouse-client, игнорируется, когда сертификат указан в конфигурации.

4. Тестирование HTTP

  1. Скопируйте сертификат пользователя, ключ пользователя и сертификат CA на удаленный узел.

  2. Используйте curl для тестирования образца SQL-команды. Основной формат:

    Например:

    Вывод будет похож на следующий:

    примечание

    Обратите внимание, что пароль не был указан, сертификат используется вместо пароля и именно так ClickHouse будет аутентифицировать пользователя.

Резюме

В этой статье рассмотрены основы создания и настройки пользователя для аутентификации по сертификату SSL. Этот метод можно использовать с clickhouse-client или любыми клиентами, которые поддерживают интерфейс https и где можно установить HTTP-заголовки. Сгенерированный сертификат и ключ следует хранить в секрете и с ограниченным доступом, поскольку сертификат используется для аутентификации и авторизации пользователя для операций с базой данных ClickHouse. Относитесь к сертификату и ключу так, как если бы они были паролями.