ClickHouse/docs/ru/operations/settings/settings_users.md

129 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройки пользователей
Раздел `users` конфигурационного файла `user.xml` содержит настройки для пользователей.
Структура раздела `users`:
```
<users>
<!-- If user name was not specified, 'default' user is used. -->
<user_name>
<password></password>
<!-- Or -->
<password_sha256_hex></password_sha256_hex>
<networks incl="networks" replace="replace">
</networks>
<profile>profile_name</profile>
<quota>default</quota>
<databases>
<database_name>
<table_name>
<filter>expression</filter>
<table_name>
</database_name>
</databases>
</user_name>
<!-- Other users settings -->
</users>
```
### user_name/password
Пароль можно указать в текстовом виде или в виде SHA256 (шестнадцатеричный формат).
- Чтобы назначить пароль в текстовом виде (**не рекомендуем**), поместите его в элемент `password`.
Например, `<password>qwerty</password>`. Пароль можно оставить пустым.
- Чтобы назначить пароль в виде SHA256, поместите хэш в элемент `password_sha256_hex`.
Например, `<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>`.
Пример создания пароля в командной строке:
```
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
```
Первая строка результата — пароль. Вторая строка — соответствующий ему хэш SHA256.
### 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>` — Имя хоста.
Пример: `server01.yandex.ru`.
Для проверки доступа выполняется DNS-запрос, и все возвращенные IP-адреса сравниваются с адресом клиента.
- `<host_regexp>` — Регулярное выражение для имен хостов.
Пример, `^server\d\d-\d\d-\d\.yandex\.ru$`
Для проверки доступа выполняется [DNS запрос PTR](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) для адреса клиента, а затем применяется заданное регулярное выражение. Затем, для результатов запроса PTR выполняется другой DNS-запрос и все полученные адреса сравниваются с адресом клиента. Рекомендуем завершать регулярное выражение символом $.
Все результаты DNS-запросов кэшируются до перезапуска сервера.
**Примеры**
Чтобы открыть доступ пользователю из любой сети, укажите:
```
<ip>::/0</ip>
```
!!! warning "Внимание"
Открывать доступ из любой сети небезопасно, если у вас нет правильно настроенного брандмауэра или сервер не отключен от интернета.
Чтобы открыть только локальный доступ, укажите:
```
<ip>::1</ip>
<ip>127.0.0.1</ip>
```
### user_name/profile
Пользователю можно назначить профиль настроек. Профили настроек конфигурируются в отдельной секции файла `users.xml`. Подробнее читайте в разделе [Профили настроек](settings_profiles.md).
### user_name/quota
Квотирование позволяет отслеживать или ограничивать использование ресурсов в течение определённого периода времени. Квоты настраиваются в разделе `quotas` конфигурационного файла `users.xml`.
Пользователю можно назначить квоты. Подробное описание настройки квот смотрите в разделе [Квоты](../quotas.md#quotas).
### user_name/databases
В этом разделе вы можете ограничить выдачу ClickHouse запросами `SELECT` для конкретного пользователя, таким образом реализуя базовую защиту на уровне строк.
**Пример**
Следующая конфигурация задаёт, что пользователь `user1` в результате запросов `SELECT` может получать только те строки `table1`, в которых значение поля `id` равно 1000.
```
<user1>
<databases>
<database_name>
<table1>
<filter>id = 1000</filter>
</table1>
</database_name>
</databases>
</user1>
```
Элемент `filter` содержать любое выражение, возвращающее значение типа [UInt8](../../data_types/int_uint.md). Обычно он содержит сравнения и логические операторы. Строки `database_name.table1`, для которых фильтр возвращает 0 не выдаются пользователю. Фильтрация несовместима с операциями `PREWHERE` и отключает оптимизацию `WHERE→PREWHERE`.
[Оригинальная статья](https://clickhouse.yandex/docs/ru/operations/settings/settings_users/) <!--hide-->