users в файле конфигурации users.xml содержит настройки пользователей.
ClickHouse также поддерживает рабочий процесс, управляемый через SQL для управления пользователями. Рекомендуем использовать именно его.
users:
user_name/password
-
Чтобы задать пароль в открытом виде (не рекомендуется), укажите его в элементе
password. Например:<password>qwerty</password>. Пароль можно оставить пустым.
-
Чтобы задать пароль с использованием его хэша SHA256, укажите его в элементе
password_sha256_hex. Например:<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>. Пример генерации пароля в оболочке:Первая строка результата — пароль. Вторая строка — соответствующий хэш SHA256.
-
Для совместимости с клиентами MySQL пароль можно указать в виде двойного хэша SHA1. Укажите его в элементе
password_double_sha1_hex. Например:<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>. Пример генерации пароля в оболочке:Первая строка результата — пароль. Вторая строка — соответствующий двойной хэш SHA1.
Конфигурация аутентификации TOTP
users.xml в дополнение к аутентификации по паролю.
В управлении доступом через SQL это пока не поддерживается.
Для аутентификации с использованием TOTP пользователь должен указать основной пароль вместе с одноразовым паролем, сгенерированным TOTP-приложением, либо через параметр командной строки --one-time-password, либо добавив его к основному паролю через символ ’+’.
Например, если основной пароль — some_password, а сгенерированный TOTP-код — 345123, пользователь может указать --password some_password+345123 или --password some_password --one-time-password 345123 при подключении к ClickHouse. Если пароль не указан, clickhouse-client запросит его интерактивно.
Чтобы включить аутентификацию TOTP для пользователя, настройте раздел time_based_one_time_password в users.xml. В этом разделе задаются параметры TOTP, такие как секретный ключ, период действия, количество цифр и алгоритм хеширования.
Пример
password или password_sha256_hex) ещё один раздел time_based_one_time_password.
Для генерации QR-кода для секрета TOTP можно использовать утилиту qrencode.
username/ssh-key
Этот параметр позволяет проходить аутентификацию с помощью SSH-ключей. Если у вас есть SSH-ключ (например, созданный с помощьюssh-keygen),
ssh_key будет
ssh-ed25519 на ssh-rsa или ecdsa-sha2-nistp256, если используете другие поддерживаемые алгоритмы.
Несколько методов аутентификации
Для одного пользователя можно настроить несколько методов аутентификации с помощью элемента<auth_methods>. Это позволяет пользователю проходить аутентификацию любым из перечисленных методов — например, у пользователя могут быть и пароль, и учётные данные LDAP, и вход с любым из них будет успешным.
Каждый дочерний элемент <auth_methods> представляет собой произвольно именованную обёртку, содержащую ровно один тип аутентификации. Имя обёртки (например, <method1>, <primary>, <a1>) не имеет значения; используется только вложенный элемент аутентификации.
Пример: несколько паролей
<auth_methods> поддерживаются следующие типы аутентификации:
password— пароль в открытом видеpassword_sha256_hex— хэш пароля SHA256password_scram_sha256_hex— хэш пароля SCRAM-SHA-256password_double_sha1_hex— двойной хэш SHA1 пароляldap— аутентификация через LDAP-серверkerberos— аутентификация Kerberosssl_certificates— аутентификация по SSL-сертификатамssh_keys— аутентификация по SSH-ключамhttp_authentication— HTTP-аутентификация
<auth_methods>нельзя использовать вместе с методами аутентификации, заданными на уровне пользователя. Используйте либо один способ, либо другой, но не оба одновременно.<auth_methods>должен содержать как минимум один метод аутентификации.- Каждый элемент-обертка внутри
<auth_methods>должен содержать ровно один тип аутентификации (за исключением<ssh_keys>, который для обратной совместимости может содержать несколько). - TOTP (
<time_based_one_time_password>) задается на уровне пользователя (вне<auth_methods>) и применяется ко всем методам на основе пароля в списке. Когда TOTP включен, требуется как минимум один метод на основе пароля.
auth_methods с TOTP
<password>), а метод LDAP независимо выполняет аутентификацию через внешний server.
access_management
Этот параметр включает или отключает использование системы управления доступом и учётными записями, управляемой через SQL, для пользователя. Возможные значения:- 0 — Отключено.
- 1 — Включено.
привилегии
Этот параметр позволяет предоставить выбранному пользователю любые права. Каждый элемент списка должен быть запросомGRANT без указания получателей привилегий.
Пример:
dictionaries, access_management, named_collection_control, show_named_collections_secrets
и allow_databases.
user_name/networks
Список сетей, из которых пользователь может подключаться к серверу ClickHouse. Каждый элемент списка может иметь одну из следующих форм:-
<ip>— IP-адрес или маска сети. Примеры:213.180.204.3,10.0.0.1/8,10.0.0.1/255.255.255.0,2a02:6b8::3,2a02:6b8::3/64,2a02:6b8::3/ffff:ffff:ffff:ffff::. -
<host>— Имя хоста. Пример:example01.host.ru. Для проверки доступа выполняется DNS-запрос, и все возвращённые IP-адреса сравниваются с адресом клиента. -
<host_regexp>— Регулярное выражение для имён хостов. Пример:^example\d\d-\d\d-\d\.host\.ru$Для проверки доступа для адреса клиента выполняется DNS PTR-запрос, после чего применяется указанное регулярное выражение. Затем для результатов PTR-запроса выполняется ещё один DNS-запрос, и все полученные адреса сравниваются с адресом клиента. Настоятельно рекомендуем, чтобы регулярное выражение оканчивалось символом $.
Открывать доступ из любой сети небезопасно, если у вас не настроен должным образом брандмауэр или server не подключен к Интернету напрямую.
user_name/profile
Пользователю можно назначить профиль настроек. Профили настроек задаются в отдельном разделе файлаusers.xml. Подробнее см. в разделе Профили настроек.
user_name/quota
Квоты позволяют отслеживать и ограничивать использование ресурсов за определенный период времени. Квоты настраиваются в разделеquotas
файла конфигурации users.xml.
Вы можете назначить пользователю набор квот. Подробное описание настройки квот см. в разделе Quotas.
user_name/databases
В этом разделе можно ограничить строки, которые ClickHouse возвращает для запросовSELECT, выполняемых текущим пользователем, тем самым реализовав базовую защиту на уровне строк.
Пример
Следующая конфигурация задаёт, что пользователь user1 может видеть в результатах запросов SELECT только строки из table1, в которых значение поля id равно 1000.
filter может быть любым выражением, результатом которого является значение типа UInt8. Обычно оно содержит сравнения и логические операторы. Строки из database_name.table1, для которых результат filter равен 0, не возвращаются этому пользователю. Такая фильтрация несовместима с операциями PREWHERE и отключает оптимизацию WHERE→PREWHERE.
Роли
Вы можете создать любые предопределённые роли в разделеroles файла конфигурации user.xml.
Структура раздела roles:
users: