Настройки пользователей и ролей
Секция 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-запросов кешируются до перезагрузки сервера.
Примеры
Чтобы открыть доступ для пользователя из любой сети, укажите:
Не безопасно открывать доступ из любой сети, если у вас не настроен брандмауэр или сервер не подключен непосредственно к интернету.
Чтобы открыть доступ только из локального хоста, укажите:
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
: