Перейти к основному содержимому
Перейти к основному содержимому

Настройки пользователей и ролей

Раздел users файла конфигурации users.xml содержит настройки пользователей.

примечание

ClickHouse также поддерживает работу с SQL для управления пользователями. Мы рекомендуем использовать этот подход.

Структура раздела users:

user_name/password

Пароль можно указать в открытом виде или в формате SHA256 (в шестнадцатеричном формате).

  • Чтобы назначить пароль в открытом виде (не рекомендуется), поместите его в элемент 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 хеш.

username/ssh-key

Эта настройка позволяет аутентифицироваться с помощью SSH ключей.

Если у вас есть SSH ключ (сгенерированный с помощью ssh-keygen) как

Элемент ssh_key должен выглядеть как

Замените ssh-ed25519 на ssh-rsa или ecdsa-sha2-nistp256 для других поддерживаемых алгоритмов.

access_management

Эта настройка включает или отключает использование SQL-дривен контроля доступа и управления учетными записями для пользователя.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

Значение по умолчанию: 0.

grants

Эта настройка позволяет предоставлять любые права выбранному пользователю. Каждый элемент списка должен быть запросом 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 запрос для адреса соперника, и затем применяется указанное регулярное выражение. Затем выполняется еще один DNS запрос для результатов PTR запроса, и все полученные адреса сравниваются с адресом соперника. Мы настоятельно рекомендуем, чтобы регулярное выражение заканчивалось на $.

Все результаты DNS запросов кэшируются до перезапуска сервера.

Примеры

Чтобы открыть доступ для пользователя из любой сети, укажите:

примечание

Открывать доступ из любой сети небезопасно, если у вас не настроен брандмауэр или сервер не подключен напрямую к Интернету.

Чтобы открыть доступ только из локальной сети, укажите:

user_name/profile

Вы можете назначить профиль настроек для пользователя. Профили настроек настраиваются в отдельном разделе файла users.xml. Для получения дополнительной информации смотрите Профили настроек.

user_name/quota

Квоты позволяют отслеживать или ограничивать использование ресурсов на протяжении времени. Квоты настраиваются в разделе quotas файла конфигурации users.xml.

Вы можете назначить набор квот для пользователя. Для подробного описания конфигурации квот смотрите Квоты.

user_name/databases

В этом разделе вы можете ограничить строки, которые возвращает ClickHouse для запросов SELECT, сделанных текущим пользователем, тем самым реализуя базовую безопасность на уровне строк.

Пример

Следующая конфигурация заставляет пользователя user1 видеть только те строки table1 как результат запросов SELECT, где значение поля id равно 1000.

filter может быть любым выражением, результатом которого является значение типа UInt8. Обычно оно содержит сравнения и логические операторы. Строки из database_name.table1, где фильтр возвращает 0, не возвращаются для этого пользователя. Фильтрация несовместима с операциями PREWHERE и отключает оптимизацию WHERE→PREWHERE.

Роли

Вы можете создать любые предопределенные роли с помощью раздела roles файла конфигурации user.xml.

Структура раздела roles:

Эти роли также могут быть предоставлены пользователям из секции users: