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