Skip to main content
Skip to main content
Edit this page

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

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

Информация

Для управления пользователями рекомендуется использовать SQL-ориентированный воркфлоу, который также поддерживается в ClickHouse.

Структура раздела 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.

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

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

Примеры

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

Внимание

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

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

user_name/profile

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

user_name/quota

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

Пользователю можно назначить квоты. Подробное описание настройки квот смотрите в разделе Квоты.

user_name/databases

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

Пример

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

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