Настройки пользователей и ролей
Раздел 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
: