Конфигурация пользовательского сертификата SSL для аутентификации
Эта страница не применима к ClickHouse Cloud. Функция, описанная здесь, недоступна в сервисах ClickHouse Cloud. Смотрите руководство по совместимости с Cloud для получения дополнительной информации.
Этот гид предоставляет простые и минимальные настройки для конфигурации аутентификации с использованием пользовательских сертификатов SSL. Туториал основывается на Руководстве по настройке SSL-TLS.
Аутентификация пользователей с помощью SSL поддерживается при использовании интерфейсов https
, native
, mysql
и postgresql
.
Для безопасной аутентификации на узлах ClickHouse необходимо установить <verificationMode>strict</verificationMode>
(хотя relaxed
сработает для тестирования).
Если вы используете AWS NLB с интерфейсом MySQL, вам нужно обратиться в службу поддержки AWS, чтобы включить не задокументированную опцию:
Я хотел бы иметь возможность настроить наш NLB proxy protocol v2, как указано ниже:
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
-
Скопируйте сертификат пользователя, ключ пользователя и сертификат CA на удаленный узел.
-
Используйте
curl
, чтобы протестировать пример SQL команды. Основной формат таков:
Например:
Вывод будет похож на следующий:
Обратите внимание, что пароль не был указан, сертификат используется вместо пароля, и именно так ClickHouse будет аутентифицировать пользователя.
Резюме
В этой статье были показаны основы создания и настройки пользователя для аутентификации сертификатов SSL. Этот метод можно использовать с clickhouse-client
или любыми клиентами, поддерживающими интерфейс https
и где можно устанавливать HTTP заголовки. Сгенерированные сертификат и ключ должны храниться в секрете и иметь ограниченный доступ, так как сертификат используется для аутентификации и авторизации пользователя для операций в базе данных ClickHouse. Обращайтесь с сертификатом и ключом так, как будто это пароли.