Перейти к основному содержимому
Версия: 6.2

Сопоставление ролей с ClickHouse

Настройка ClickHouse​

Создание пользователя для управления ролями​

Для настройки требуется пользователь ClickHouse с правами на создание и управление ролями. Выполните запросы от имени администратора или создайте отдельного пользователя с необходимыми правами.

Пример​

Создайте пользователя sm_admin с правами на управление ролями в ClickHouse:

CREATE USER sm_admin IDENTIFIED BY '<пароль>';
CREATE ROLE sm_role_manager;
GRANT CREATE ROLE, DROP ROLE, ROLE ADMIN ON *.* TO sm_role_manager;
GRANT SELECT, INSERT, ALTER, TRUNCATE ON *.* TO sm_role_manager WITH GRANT OPTION;
GRANT sm_role_manager TO sm_admin;

Создание основного пользователя​

Для трансляции ролевой модели все запросы должны выполняться от имени одного пользователя. Создайте пользователя без ролей по умолчанию, например sm_user.

Не выдавайте этому пользователю прямые права на таблицы: доступ к данным должен предоставляться назначаемыми ролями.

Отказ назначения роли

Если у пользователя Smart Monitor нет ролей с префиксом clk_, команда SET ROLE не отправляется. Ошибка выполнения SET ROLE записывается в журнал узла и сама по себе не останавливает основной запрос. Он продолжает выполняться с действующими правами сервисной учётной записи ClickHouse. Прямые гранты и роли по умолчанию этой учётной записи могут открыть данные независимо от ожидаемого сопоставления ролей.

CREATE USER sm_user IDENTIFIED BY '<пароль>';
SET DEFAULT ROLE NONE TO sm_user;

Создание роли​

Перед использованием роль необходимо создать, задать ей нужные разрешения и назначить основному пользователю. Все транслируемые роли должны быть назначены этому пользователю.

Пример​

Требуется создать роль analyst с возможностью запрашивать данные из таблицы default.auditd.

CREATE ROLE analyst;
GRANT SELECT ON default.auditd TO analyst;
GRANT analyst TO sm_user;

Настройка OpenSearch​

Настройка соединения​

Для трансляции ролевой модели необходимо создать Search Anywhere подключение с типом ClickHouse и указать пользователя, на которого назначены роли. В данном примере это sm_user. Подробнее о настройке подключения в соответствующей статье.

Настройка ролей​

Для сопоставления ролей в OpenSearch и ClickHouse создайте фиктивную роль без разрешений с именем clk_<название роли> и назначьте ее нужным пользователям. Подробнее см. в статье о настройке ролей.

Пример​

Чтобы назначить внутреннему пользователю роль ClickHouse analyst, создайте роль clk_analyst и назначьте ее пользователю. При запросах через созданное ранее подключение роль будет передаваться автоматически.