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