Перейти к основному содержанию
ClickHouse поддерживает управление доступом на основе модели RBAC. Объекты управления доступом в ClickHouse: Вы можете настраивать объекты управления доступом с помощью: Мы рекомендуем использовать SQL-команды. Оба метода конфигурации работают одновременно, поэтому, если вы используете файлы конфигурации сервера для управления учётными записями и правами доступа, вы можете плавно перейти на использование SQL-команд.
Нельзя одновременно управлять одним и тем же объектом управления доступом обоими методами конфигурации.
Если вы хотите управлять пользователями консоли ClickHouse Cloud, обратитесь к этой странице
Чтобы увидеть всех пользователей, роли, профили и т. д., а также все назначенные им привилегии, используйте оператор SHOW ACCESS.

Обзор

По умолчанию сервер ClickHouse предоставляет учётную запись default, для которой нельзя использовать систему управления доступом и учётными записями на основе SQL, но при этом у неё есть все права и разрешения. Учётная запись default используется во всех случаях, когда имя пользователя не указано, например при входе из клиента или в распределённых запросах. При обработке распределённых запросов учётная запись default используется, если в конфигурации сервера или кластера не указаны свойства user and 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 или путем назначения ролей. Чтобы отозвать привилегии у пользователя, в ClickHouse предусмотрен запрос REVOKE. Чтобы вывести список привилегий пользователя, используйте оператор SHOW GRANTS. Запросы для управления:

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

Настройки можно задавать на разных уровнях: для учетной записи пользователя, в назначенных ей ролях и в профилях настроек. При входе пользователя в систему, если настройка задана для разных сущностей управления доступом, ее значение и constraints применяются следующим образом (от более высокого приоритета к более низкому):
  1. Настройки учетной записи пользователя.
  2. Настройки ролей по умолчанию для учетной записи пользователя. Если настройка задана в нескольких ролях, порядок ее применения не определен.
  3. Настройки из профилей настроек, назначенных пользователю или его ролям по умолчанию. Если настройка задана в нескольких профилях, порядок ее применения не определен.
  4. Настройки, применяемые ко всему server по умолчанию или из профиля по умолчанию.

Роль

Роль — это контейнер для сущностей доступа, которые можно предоставить учётной записи пользователя. Роль содержит:
  • Привилегии
  • Настройки и ограничения
  • Список назначенных ролей
Команды управления: Привилегии можно предоставить роли с помощью запроса GRANT. Чтобы отозвать привилегии у роли, ClickHouse предоставляет запрос REVOKE.

ROW POLICY

ROW POLICY — это фильтр, определяющий, какие строки доступны пользователю или роли. ROW POLICY содержит фильтры для одной конкретной таблицы, а также список ролей и/или пользователей, к которым должна применяться эта ROW POLICY.
ROW POLICY имеет смысл только при доступе только для чтения. Если вы можете изменять таблицу или копировать партиции между таблицами, это сводит на нет ограничения ROW POLICY.
Команды управления:

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

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

Квота

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

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

  • Настройте каталог для хранения конфигурации. ClickHouse хранит конфигурации объектов управления доступом в каталоге, заданном параметром конфигурации сервера access_control_path.
  • Включите систему управления доступом и учётными записями на основе SQL как минимум для одной учётной записи пользователя. По умолчанию система управления доступом и учётными записями на основе SQL отключена для всех пользователей. Необходимо настроить как минимум одного пользователя в файле конфигурации users.xml и установить для настроек access_management, named_collection_control, show_named_collections и show_named_collections_secrets значение 1.

Определение SQL-пользователей и ролей

Если вы работаете в ClickHouse Cloud, см. Управление доступом в Cloud.
В этой статье рассматриваются основы определения SQL-пользователей и ролей, а также применения этих привилегий и разрешений к базам данных, таблицам, строкам и столбцам.

Включение режима SQL-пользователей

  1. Включите режим SQL-пользователей в файле users.xml в секции пользователя <default>:
Пользователь default — единственный пользователь, который создается при новой установке, и именно эта учетная запись по умолчанию используется для межузлового взаимодействия.В рабочей среде рекомендуется отключить этого пользователя после того, как межузловое взаимодействие будет настроено с SQL-пользователем с правами администратора, а также будут настроены <secret>, учетные данные кластера и/или учетные данные HTTP и транспортного протокола для межузлового взаимодействия, поскольку учетная запись default используется для межузлового взаимодействия.
  1. Перезапустите узлы, чтобы применить изменения.
  2. Запустите клиент ClickHouse:

Создание пользователей

  1. Создайте учетную запись администратора SQL:
  2. Предоставьте новому пользователю полные административные права

Разрешения ALTER

Эта статья поможет вам лучше понять, как задавать разрешения и как они работают при использовании команд ALTER привилегированными пользователями. Команды ALTER делятся на несколько категорий: некоторые из них иерархические, а некоторые — нет и должны быть явно определены. Пример конфигурации DB, таблицы и пользователя
  1. Используя пользователя с ролью Admin, создайте тестового пользователя
  1. Создайте тестовую базу данных
  1. Создайте тестовую таблицу
  1. Создайте тестового пользователя с правами администратора для назначения/отзыва привилегий
Чтобы выдавать или отзывать разрешения, пользователь admin должен иметь привилегию WITH GRANT OPTION. Например:
Чтобы выдавать (GRANT) или отзывать (REVOKE) привилегии, пользователь должен сначала сам иметь эти привилегии.
Выдача или отзыв привилегий Иерархия ALTER:
  1. Предоставление привилегий ALTER пользователю или роли
Команда GRANT ALTER on *.* TO my_user влияет только на ALTER TABLE и ALTER VIEW верхнего уровня; остальные команды ALTER нужно выдавать или отзывать по отдельности. например, предоставление базовой привилегии ALTER:
Итоговый набор привилегий:
Это предоставит все разрешения из ALTER TABLE и ALTER VIEW, показанные в примере выше, однако не предоставит некоторые другие разрешения ALTER, такие как ALTER ROW POLICY (вернитесь к иерархии, и вы увидите, что ALTER ROW POLICY не является дочерним элементом ALTER TABLE или ALTER VIEW). Их нужно явно предоставить или отозвать. Если требуется только часть разрешений ALTER, каждое из них можно предоставить отдельно; если у такого разрешения есть подпривилегии, они тоже будут предоставлены автоматически. Например:
Привилегии задаются следующим образом:
Это также предоставляет следующие подпривилегии:
  1. Отзыв привилегий ALTER у пользователей и ролей
Оператор REVOKE работает аналогично оператору GRANT. Если пользователю/роли была выдана дочерняя привилегия, вы можете либо отозвать её напрямую, либо отозвать вышестоящую привилегию, от которой она наследуется. Например, если пользователю был предоставлен grant ALTER ADD COLUMN
Привилегию можно отозвать по отдельности:
Или можно отозвать на любом из вышестоящих уровней (отозвать все подпривилегии COLUMN):
Дополнительно Привилегии должны быть выданы пользователем, который не только имеет WITH GRANT OPTION, но и сам располагает этими привилегиями.
  1. Чтобы предоставить пользователю-администратору эту привилегию, а также разрешить ему управлять набором привилегий Ниже приведён пример:
Теперь пользователь может выполнять grant или отзывать привилегии ALTER COLUMN и все дочерние привилегии. Тестирование
  1. Добавьте право SELECT
  1. Добавьте пользователю привилегию добавления столбца
  1. Войдите под пользователем с ограниченными правами
  1. Проверка добавления столбца
  1. Проверка удаления столбца
  1. Проверка привилегии alter admin путем выдачи права
  1. Войдите под пользователем alter admin
  1. Предоставить подпривилегию
  1. Проверьте выдачу привилегии, которой нет у пользователя alter admin и которая не входит в число подпривилегий привилегий пользователя admin.
Сводка Привилегии ALTER образуют иерархию для операций ALTER над таблицами и представлениями, но не для других операторов ALTER. Разрешения можно задавать как на детальном уровне, так и через их группировку, и аналогичным образом отзывать. Пользователь, который выдает или отзывает привилегии, должен иметь WITH GRANT OPTION, чтобы назначать привилегии пользователям, включая самого себя, и уже должен обладать соответствующей привилегией. Действующий пользователь не может отозвать собственные привилегии, если у него самого нет привилегии GRANT OPTION.
Последнее изменение 25 июня 2026 г.