Skip to main content

Управление доступом

ClickHouse поддерживает управление доступом на основе подхода RBAC.

Объекты системы доступа в ClickHouse:

Вы можете настроить объекты системы доступа, используя:

Рекомендуется использовать SQL-воркфлоу. Оба метода конфигурации работают одновременно, поэтому, если для управления доступом вы используете конфигурационные файлы, вы можете плавно перейти на SQL-воркфлоу.

Внимание

Нельзя одновременно использовать оба метода для управления одним и тем же объектом системы доступа.

Чтобы посмотреть список всех пользователей, ролей, профилей и пр., а также все привилегии, используйте запрос SHOW ACCESS.

Использование

По умолчанию сервер ClickHouse предоставляет аккаунт пользователя default, для которого выключена функция SQL-ориентированного управления доступом, но у него есть все права и разрешения. Аккаунт default используется во всех случаях, когда имя пользователя не определено. Например, при входе с клиента или в распределенных запросах. При распределенной обработке запроса default используется, если в конфигурации сервера или кластера не указаны свойства user и password.

Если вы начали пользоваться ClickHouse недавно, попробуйте следующий сценарий:

  1. Включите SQL-ориентированное управление доступом для пользователя default.
  2. Войдите под пользователем default и создайте всех необходимых пользователей. Не забудьте создать аккаунт администратора (GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION).
  3. Ограничьте разрешения для пользователя default и отключите для него SQL-ориентированное управление доступом.

Особенности реализации

  • Вы можете выдавать разрешения на базы данных или таблицы, даже если они не существуют.
  • При удалении таблицы все связанные с ней привилегии не отзываются. Если вы затем создадите новую таблицу с таким же именем, все привилегии останутся действительными. Чтобы отозвать привилегии, связанные с удаленной таблицей, необходимо выполнить, например, запрос REVOKE ALL PRIVILEGES ON db.table FROM ALL.
  • У привилегий нет настроек времени жизни.

Аккаунт пользователя

Аккаунт пользователя — это объект системы доступа, позволяющий авторизовать кого-либо в ClickHouse. Аккаунт содержит:

  • Идентификационную информацию.
  • Привилегии, определяющие область действия запросов, которые могут быть выполнены пользователем.
  • Хосты, которые могут подключаться к серверу ClickHouse.
  • Назначенные роли и роли по умолчанию.
  • Настройки и их ограничения, которые применяются по умолчанию при входе пользователя.
  • Присвоенные профили настроек.

Привилегии присваиваются аккаунту пользователя с помощью запроса GRANT или через назначение ролей. Отозвать привилегию можно с помощью запроса REVOKE. Чтобы вывести список присвоенных привилегий, используется выражение SHOW GRANTS.

Запросы управления:

Применение настроек

Настройки могут быть заданы разными способами: для аккаунта пользователя, для назначенных ему ролей или в профилях настроек. При входе пользователя, если настройка задана для разных объектов системы доступа, значение настройки и ее ограничения применяются в следующем порядке (от высшего приоритета к низшему):

  1. Настройки аккаунта.
  2. Настройки ролей по умолчанию для аккаунта. Если настройка задана для нескольких ролей, порядок применения не определен.
  3. Настройки из профилей настроек, присвоенных пользователю или его ролям по умолчанию. Если настройка задана в нескольких профилях, порядок применения не определен.
  4. Настройки, которые по умолчанию применяются ко всему серверу, или настройки из профиля по умолчанию.

Роль

Роль — это контейнер объектов системы доступа, которые можно присвоить аккаунту пользователя.

Роль содержит:

  • Привилегии
  • Настройки и ограничения
  • Список назначенных ролей

Запросы управления:

Привилегии можно присвоить роли с помощью запроса GRANT. Для отзыва привилегий у роли ClickHouse предоставляет запрос REVOKE.

Политика доступа к строкам

Политика доступа к строкам — это фильтр, определяющий, какие строки доступны пользователю или роли. Политика содержит фильтры для конкретной таблицы, а также список ролей и/или пользователей, которые должны использовать данную политику.

Запросы управления:

Профиль настроек

Профиль настроек — это набор настроек. Профиль настроек содержит настройки и ограничения, а также список ролей и/или пользователей, по отношению к которым применяется данный профиль.

Запросы управления:

Квота

Квота ограничивает использование ресурсов. См. Квоты.

Квота содержит набор ограничений определенной длительности, а также список ролей и/или пользователей, на которых распространяется данная квота.

Запросы управления:

Включение SQL-ориентированного управления доступом

  • Настройте каталог для хранения конфигураций.

    ClickHouse хранит конфигурации объектов системы доступа в каталоге, установленном в конфигурационном параметре сервера access_control_path.

  • Включите SQL-ориентированное управление доступом как минимум для одного аккаунта.

    По умолчанию управление доступом на основе SQL выключено для всех пользователей. Вам необходимо настроить хотя бы одного пользователя в файле конфигурации users.xml и присвоить значение 1 параметру access_management.