Настройки пользователей и ролей
Секция 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 запросов кэшируются до перезапуска сервера.
Примеры
Чтобы открыть доступ для пользователя из любой сети, укажите:
Открывать доступ из любой сети небезопасно, если у вас не настроен брандмауэр или сервер не подключен непосредственно к интернету.
Чтобы открыть доступ только из localhost, укажите:
user_name/profile
Вы можете назначить профиль настроек для пользователя. Профили настроек настраиваются в отдельной секции файла users.xml. Для получения дополнительной информации смотрите Профили Настроек.
user_name/quota
Квоты позволяют отслеживать или ограничивать использование ресурсов в течение определенного времени. Квоты настраиваются в секции quotas конфигурационного файла users.xml.
Вы можете назначить набор квот для пользователя. Для подробного описания настройки квот смотрите Квоты.
user_name/databases
В этой секции вы можете ограничить строки, которые возвращаются ClickHouse для запросов SELECT, выполняемых текущим пользователем, тем самым реализуя базовую безопасность на уровне строк.
Пример
Следующая конфигурация заставляет пользователя user1 видеть только строки таблицы table1, где значение поля id равно 1000.
Фильтр может быть любым выражением, результатом которого является значение типа UInt8. Обычно он содержит сравнения и логические операторы. Строки из database_name.table1, где фильтр возвращает 0, не возвращаются для этого пользователя. Фильтрация несовместима с операциями PREWHERE и отключает оптимизацию WHERE→PREWHERE.
Роли
Вы можете создать любые предопределенные роли, используя секцию roles в конфигурационном файле user.xml.
Структура секции roles:
Эти роли также могут быть предоставлены пользователям из секции users: