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