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

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

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

Эта страница не применяется к ClickHouse Cloud. Функция, описанная здесь, недоступна в сервисах ClickHouse Cloud. Смотрите руководство по Cloud Compatibility для получения дополнительной информации.

Этот гид предоставляет простые и минимальные настройки для конфигурации аутентификации с 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 пользовательских сертификатов

примечание

В этом примере используются самоподписанные сертификаты с самоподписанным CA. Для производственных сред создайте 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. Обращайтесь с сертификатом и ключом так, как если бы это были пароли.