Настройки пользователей и ролей
Секция 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>
.Пример того, как сгенерировать пароль из командной строки:
PASSWORD=PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
Первая строка результата — это пароль. Вторая строка — соответствующий SHA256 хеш.
-
Для совместимости с MySQL клиентами, пароль можно указать в двойном SHA1 хеше. Поместите его в элемент
password_double_sha1_hex
.Например,
<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>
.Пример того, как сгенерировать пароль из командной строки:
PASSWORD=PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
Первая строка результата — это пароль. Вторая строка — соответствующий двойной 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
в результате запросов SELECT
, где значение поля id
равно 1000.
Фильтр может быть любым выражением, которое дает значение типа UInt8. Обычно он содержит сравнения и логические операторы. Строки из database_name.table1
, где фильтр дает 0, не возвращаются для этого пользователя. Фильтрация несовместима с операциями PREWHERE
и отключает оптимизацию WHERE→PREWHERE
.
Роли
Вы можете создавать любые предопределенные роли, используя секцию roles
файла конфигурации user.xml
.
Структура секции roles
:
Эти роли также могут быть предоставлены пользователям из секции users
: