2020-03-20 18:20:59 +00:00
# Настройки пользователей {#nastroiki-polzovatelei}
2019-07-04 22:03:28 +00:00
Раздел `users` конфигурационного файла `user.xml` содержит настройки для пользователей.
Структура раздела `users` :
2020-03-20 18:20:59 +00:00
``` xml
2019-07-04 22:03:28 +00:00
< 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 >
```
2020-03-20 18:20:59 +00:00
### user\_name/password {#user-namepassword}
2019-07-04 22:03:28 +00:00
Пароль можно указать в текстовом виде или в виде SHA256 (шестнадцатеричный формат).
2020-03-21 04:11:51 +00:00
- Чтобы назначить пароль в текстовом виде (**не рекомендуем**), поместите е г о в элемент `password` .
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Например, `<password>qwerty</password>` . Пароль можно оставить пустым.
2019-07-04 22:03:28 +00:00
2020-01-19 05:57:21 +00:00
< a id = "password_sha256_hex" > < / a >
2020-03-21 04:11:51 +00:00
- Чтобы назначить пароль в виде SHA256, поместите хэш в элемент `password_sha256_hex` .
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Например, `<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>` .
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Пример создания пароля в командной строке:
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
```
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
```
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Первая строка результата — пароль. Вторая строка — соответствующий ему хэш SHA256.
2019-07-04 22:03:28 +00:00
2020-01-19 05:57:21 +00:00
< a id = "password_double_sha1_hex" > < / a >
2020-03-21 04:11:51 +00:00
- Для совместимости с клиентами MySQL, пароль можно задать с помощью двойного хэша SHA1, поместив е г о в элемент `password_double_sha1_hex` .
2020-01-19 05:57:21 +00:00
2020-03-21 04:11:51 +00:00
Например, `<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>` .
2020-01-19 05:57:21 +00:00
2020-03-21 04:11:51 +00:00
Пример создания пароля в командной строке:
2020-01-19 05:57:21 +00:00
2020-03-21 04:11:51 +00:00
```
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
```
2020-01-19 05:57:21 +00:00
2020-03-21 04:11:51 +00:00
Первая строка результата — пароль. Вторая строка — соответствующий ему двойной хэш SHA1.
2020-01-19 05:57:21 +00:00
2020-03-20 18:20:59 +00:00
### user\_name/networks {#user-namenetworks}
2019-07-04 22:03:28 +00:00
Список сетей, из которых пользователь может подключиться к серверу ClickHouse.
Каждый элемент списка имеет одну из следующих форм:
2020-03-21 04:11:51 +00:00
- `<ip>` — IP-адрес или маска подсети.
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Примеры: `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::` .
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
- `<host>` — Имя хоста.
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Пример: `example01.host.ru` .
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Для проверки доступа выполняется DNS-запрос, и все возвращенные IP-адреса сравниваются с адресом клиента.
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
- `<host_regexp>` — Регулярное выражение для имен хостов.
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Пример, `^example\d\d-\d\d-\d\.host\.ru$`
2019-07-04 22:03:28 +00:00
2020-03-21 04:11:51 +00:00
Для проверки доступа выполняется [DNS запрос PTR ](https://en.wikipedia.org/wiki/Reverse_DNS_lookup ) для адреса клиента, а затем применяется заданное регулярное выражение. Затем, для результатов запроса PTR выполняется другой DNS-запрос и все полученные адреса сравниваются с адресом клиента. Рекомендуем завершать регулярное выражение символом $.
2019-07-04 22:03:28 +00:00
В с е результаты DNS-запросов кэшируются до перезапуска сервера.
**Примеры**
Чтобы открыть доступ пользователю из любой сети, укажите:
2020-03-20 18:20:59 +00:00
``` xml
2019-07-04 22:03:28 +00:00
< ip > ::/0< / ip >
```
!!! warning "Внимание"
Открывать доступ из любой сети небезопасно, если у вас нет правильно настроенного брандмауэра или сервер не отключен от интернета.
Чтобы открыть только локальный доступ, укажите:
2020-03-20 18:20:59 +00:00
``` xml
2019-07-04 22:03:28 +00:00
< ip > ::1< / ip >
< ip > 127.0.0.1< / ip >
```
2020-03-20 18:20:59 +00:00
### user\_name/profile {#user-nameprofile}
2019-07-04 22:03:28 +00:00
2020-04-30 18:19:18 +00:00
Пользователю можно назначить профиль настроек. Профили настроек конфигурируются в отдельной секции файла `users.xml` . Подробнее читайте в разделе [Профили настроек ](settings-profiles.md ).
2019-07-04 22:03:28 +00:00
2020-03-20 18:20:59 +00:00
### user\_name/quota {#user-namequota}
2019-07-04 22:03:28 +00:00
Квотирование позволяет отслеживать или ограничивать использование ресурсов в течение определённого периода времени. Квоты настраиваются в разделе `quotas` конфигурационного файла `users.xml` .
Пользователю можно назначить квоты. Подробное описание настройки квот смотрите в разделе [Квоты ](../quotas.md#quotas ).
2020-03-20 18:20:59 +00:00
### user\_name/databases {#user-namedatabases}
2019-07-04 22:03:28 +00:00
В этом разделе вы можете ограничить выдачу ClickHouse запросами `SELECT` для конкретного пользователя, таким образом реализуя базовую защиту на уровне строк.
**Пример**
Следующая конфигурация задаёт, что пользователь `user1` в результате запросов `SELECT` может получать только те строки `table1` , в которых значение поля `id` равно 1000.
2020-03-20 18:20:59 +00:00
``` xml
2019-07-04 22:03:28 +00:00
< user1 >
< databases >
< database_name >
< table1 >
< filter > id = 1000< / filter >
< / table1 >
< / database_name >
< / databases >
< / user1 >
```
2020-04-30 18:19:18 +00:00
Элемент `filter` содержать любое выражение, возвращающее значение типа [UInt8 ](../../sql-reference/data-types/int-uint.md ). Обычно он содержит сравнения и логические операторы. Строки `database_name.table1` , для которых фильтр возвращает 0 не выдаются пользователю. Фильтрация несовместима с операциями `PREWHERE` и отключает оптимизацию `WHERE→PREWHERE` .
2019-07-04 22:03:28 +00:00
2020-01-30 10:34:55 +00:00
[Оригинальная статья ](https://clickhouse.tech/docs/ru/operations/settings/settings_users/ ) <!--hide-->