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