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