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