mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-12 02:23:14 +00:00
129 lines
6.3 KiB
Markdown
129 lines
6.3 KiB
Markdown
|
# Настройки пользователей
|
|||
|
|
|||
|
Раздел `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-->
|