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

Трансляция ролевой модели в 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.

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 и назначить ее пользователю. После этого при использовании пользователем созданного ранее соединения роль будет прокидываться автоматически при запросах.