Управление доступом
ClickHouse поддерживает управление доступом на основе подхода RBAC.
Объекты системы доступа в ClickHouse:
Вы можете настроить объекты системы доступа, используя:
SQL-ориентированный воркфлоу.
Функциональность необходимо включить.
Конфигурационные файлы сервера:
users.xml
иconfig.xml
.
Рекомендуется использовать SQL-воркфлоу. Оба метода конфигурации работают одновременно, поэтому, если для управления доступом вы используете конфигурационные файлы, вы можете плавно перейти на SQL-воркфлоу.
Нельзя одновременно использовать оба метода для управления одним и тем же объектом системы доступа.
Чтобы посмотреть список всех пользователей, ролей, профилей и пр., а также все привилегии, используйте запрос SHOW ACCESS.
Использование
По умолчанию сервер ClickHouse предоставляет аккаунт пользователя default
, для которого выключена функция SQL-ориентированного управления доступом, но у него есть все права и разрешения. Аккаунт default
используется во всех случаях, когда имя пользователя не определено. Например, при входе с клиента или в распределенных запросах. При распределенной обработке запроса default
используется, если в конфигурации сервера или кластера не указаны свойства user и password.
Если вы начали пользоваться ClickHouse недавно, попробуйте следующий сценарий:
- Включите SQL-ориентированное управление доступом для пользователя
default
. - Войдите под пользователем
default
и создайте всех необходимых пользователей. Не забудьте создать аккаунт администратора (GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION
). - Ограничьте разрешения для пользователя
default
и отключите для него SQL-ориентированное управление доступом.
Особенности реализации
- Вы можете выдавать разрешения на базы данных или таблицы, даже если они не существуют.
- При удалении таблицы все связанные с ней привилегии не отзываются. Если вы затем создадите новую таблицу с таким же именем, все привилегии останутся действительными. Чтобы отозвать привилегии, связанные с удаленной таблицей, необходимо выполнить, например, запрос
REVOKE ALL PRIVILEGES ON db.table FROM ALL
. - У привилегий нет настроек времени жизни.
Аккаунт пользователя
Аккаунт пользователя — это объект системы доступа, позволяющий авторизовать кого-либо в ClickHouse. Аккаунт содержит:
- Идентификационную информацию.
- Привилегии, определяющие область действия запросов, которые могут быть выполнены пользователем.
- Хосты, которые могут подключаться к серверу ClickHouse.
- Назначенные роли и роли по умолчанию.
- Настройки и их ограничения, которые применяются по умолчанию при входе пользователя.
- Присвоенные профили настроек.
Привилегии присваиваются аккаунту пользователя с помощью запроса GRANT или через назначение ролей. Отозвать привилегию можно с помощью запроса REVOKE. Чтобы вывести список присвоенных привилегий, используется выражение SHOW GRANTS.
Запросы управления:
Применение настроек
Настройки могут быть заданы разными способами: для аккаунта пользователя, для назначенных ему ролей или в профилях настроек. При входе пользователя, если настройка задана для разных объектов системы доступа, значение настройки и ее ограничения применяются в следующем порядке (от высшего приоритета к низшему):
- Настройки аккаунта.
- Настройки ролей по умолчанию для аккаунта. Если настройка задана для нескольких ролей, порядок применения не определен.
- Настройки из профилей настроек, присвоенных пользователю или его ролям по умолчанию. Если настройка задана в нескольких профилях, порядок применения не определен.
- Настройки, которые по умолчанию применяются ко всему серверу, или настройки из профиля по умолчанию.
Роль
Роль — это контейнер объектов системы доступа, которые можно присвоить аккаунту пользователя.
Роль содержит:
- Привилегии
- Настройки и ограничения
- Список назначенных ролей
Запросы управления:
Привилегии можно присвоить роли с помощью запроса GRANT. Для отзыва привилегий у роли ClickHouse предоставляет запрос REVOKE.
Политика доступа к строкам
Политика доступа к строкам — это фильтр, определяющий, какие строки доступны пользователю или роли. Политика содержит фильтры для конкретной таблицы, а также список ролей и/или пользователей, которые должны использовать данную политику.
Запросы управления:
Профиль настроек
Профиль настроек — это набор настроек. Профиль настроек содержит настройки и ограничения, а также список ролей и/или пользователей, по отношению к которым применяется данный профиль.
Запросы управления:
Квота
Квота ограничивает использование ресурсов. См. Квоты.
Квота содержит набор ограничений определенной длительности, а также список ролей и/или пользователей, на которых распространяется данная квота.
Запросы управления:
Включение SQL-ориентированного управления доступом
Настройте каталог для хранения конфигураций.
ClickHouse хранит конфигурации объектов системы доступа в каталоге, установленном в конфигурационном параметре сервера access_control_path.
Включите SQL-ориентированное управление доступом как минимум для одного аккаунта.
По умолчанию управление доступом на основе SQL выключено для всех пользователей. Вам необходимо настроить хотя бы одного пользователя в файле конфигурации
users.xml
и присвоить значение 1 параметру access_management.