Пользователи базы данных, роли и разрешения¶
Мы рекомендуем создать в базе данных Glarus BI пользователей с такими ролями:
analytics
с правами чтения всех схем и таблиц, используемых в анализе.При необходимости
glarusbi_actions
с правами на запись в таблицы, использующиеся в действиях Glarus BI.При необходимости
glarusbi_model_caching
с правами на запись в схему, используемую для кэширования моделей Glarus BI.
Объединение ваших разрешений в роли на основе вариантов использования упрощает управление разрешениями в будущем (особенно при использовании мультитенантного доступа). Например, вы можете:
использовать ту же самую роль
analytics
для других BI-инструментов в вашем стеке данных, требующих доступа только для чтения к аналитическим таблицам в вашей базе данных;отменить права записи для
glarusbi_model_caching
, не затрагивая прав записиglarusbi_actions
.
Минимальные разрешения в базе данных¶
Чтобы пользователь мог просматривать и делать запросы к вашим таблицам в Glarus BI, вы должны дать ему следующие права:
CONNECT
к вашей базе данных;SELECT
ко всем схемам и таблицам, которые вы хотите использовать в Glarus BI.
Чтобы организовать эти разрешения (и упростить обслуживание в дальнейшем):
Создайте в базе данных роль
analytics
.Создайте в базе данных пользователя
glarusbi
.Назначьте пользователю
glarusbi
рольanalytics
.Назначьте разрешения роли
analytics
.
Например, если вы используете базу данных Postgres, войдите с правами администратора и запустите следующие SQL-запросы:
-- Создаем роль "analytics".
CREATE ROLE analytics WITH LOGIN;
-- Добавляем этой роли привилегию CONNECT.
GRANT CONNECT ON DATABASE "your_database" TO analytics;
-- Создаем пользователя базы данных "glarusbi".
CREATE USER glarusbi WITH PASSWORD "your_password";
-- Назначаем роль "analytics" пользователю "glarusbi".
GRANT analytics TO glarusbi;
-- Устанавливаем роли права на выполнение запросов (варианты 1-4):
-- Вариант 1: Раскомментируем строку ниже, чтобы дать пользователям с ролью "analytics" права запрашивать ЛЮБЫЕ ДАННЫЕ (Доступно в Postgres 14 или вышеr. См. [Предопределённые роли](https://www.postgresql.org/docs/current/predefined-roles.html#PREDEFINED-ROLES)).
-- GRANT pg_read_all_data TO analytics;
-- Вариант 2: Раскомментируем строки ниже, чтобы дать пользователям с ролью "analytics" права на любой запрос в базе данных.
-- GRANT USAGE ON DATABASE "your_schema" TO analytics;
-- GRANT SELECT ON DATABASE "your_schema" TO analytics;
-- Вариант 3: Раскомментируем строки ниже, чтобы дать пользователям с ролью "analytics" права на любой запрос в указанной схеме.
-- GRANT USAGE ON SCHEMA "your_schema" TO analytics;
-- GRANT SELECT ON ALL TABLES IN SCHEMA "your_schema" TO analytics;
-- Вариант 4: Раскомментируем строки ниже, чтобы дать пользователям с ролью "analytics" права на любой запрос к указанной таблице.
-- GRANT USAGE ON SCHEMA "your_schema" TO analytics;
-- GRANT SELECT ON "your_table" IN SCHEMA "your_schema" TO analytics;
В зависимости от того, как вы используете Glarus BI, вы также можете дополнительно предоставить:
разрешения
TEMPORARY
для создания временных таблиц;разрешения
EXECUTE
для использования хранимых процедур или созданных пользователем функций.
Помните, что когда вы добавляете разрешения для роли, их получают все пользователи с этой ролью.
Назначение всех разрешений (максимальные разрешения) в базе данных¶
Если вы пока не хотите распределять права в своей базе данных:
создайте в базе данных пользователя
glarusbi
.назначьте пользователю
glarusbi
все разрешения в базе данных.
-- Создаём пользователя базы данных "glarusbi".
CREATE USER glarusbi WITH PASSWORD "your_password";
-- Даём пользователю все права на чтение и запись в базе данных.
GRANT ALL PRIVILEGES ON "database" TO glarusbi;
Правильным будет использовать локальную базу данных для разработки или тестирования.
Разрешения для выполнения действий¶
Действия позволяют Glarus BI осуществлять запись в таблицы в вашей базе данных.
В дополнение к минимальным разрешениям в базе данных, вам нужно будет дать права на запись во все таблицы, используемые в действиях:
Создать новую роль под названием
glarusbi_actions
.Дать этой роли права на
INSERT
,UPDATE
иDELETE
на все таблицы, используемые в действиях Glarus BI.Назначить роль
glarusbi_actions
пользователюglarusbi
.
-- Создаём роль для объединения разрешений в базе данных для действий Glarus BI.
CREATE ROLE glarusbi_actions WITH LOGIN;
-- Даём права записи в таблицу, используемую в Glarus BI действиях.
GRANT INSERT, UPDATE, DELETE ON "your_table" IN SCHEMA "your_schema" TO glarusbi_actions;
-- Назначаем роль "glarusbi_actions" пользователю "glarusbi".
GRANT glarusbi_actions TO glarusbi;
Разрешения для включения кэширования модели¶
Кэширование модели позволяет Glarus BI сохранять результаты запроса в определённой схеме в вашей базе данных. Пользователю базы данных Glarus BI потребуется разрешение CREATE
для создания выделенной схемы для кэширования модели, а также права на запись (INSERT
, UPDATE
, DELETE
) к этой схеме.
В дополнение к минимальным разрешениям в базе данных:
Создать новую роль под названием
glarusbi_model_caching
.Дать этой роли право
CREATE
в базе данных.Предоставить этой роли разрешения
INSERT
,UPDATE
иDELETE
на схему, используемую для кэширования модели.Назначить роль
glarusbi_model_caching
пользователюglarusbi
.
-- Создаём роль "glarusbi_model_caching" для объединения разрешений в базе данных для кэширования моделей Glarus BI.
CREATE ROLE glarusbi_model_caching WITH LOGIN;
-- Если вы не хотите предоставлять право на CREATE к вашей базе данных, добавьте схему вручную перед включением кэширования моделей.
GRANT CREATE ON "database" TO glarusbi_model_caching;
-- Даём права на запись схеме, используемой для кэширования моделей.
GRANT USAGE ON "your_schema" TO glarusbi_model_caching;
GRANT INSERT, UPDATE, DELETE ON "your_model's_table" IN SCHEMA "your_schema" TO glarusbi_model_caching;
-- Назначаем роль "glarusbi_model_caching" пользователю "glarusbi".
GRANT glarusbi_model_caching TO glarusbi;
Разрешение загрузок¶
Вы можете загружать CSV-файлы в поддерживаемые базы данных. Пользователь базы данных Glarus BI должен иметь права на запись (INSERT
, UPDATE
, DELETE
) к схеме, в которой вы хотите хранить загруженные данные.
Сначала вам нужно будет создать схему для хранения загруженных данных (или использовать существующую схему) и сообщить Glarus BI, что вы хотите использовать эту схему для хранения загруженных данных.
В дополнение к минимальным разрешениям в базе данных:
Создайте новую роль
glarusbi_uploads
.Предоставьте роли разрешения на
INSERT
,UPDATE
иDELETE
в схеме, где вы хотите хранить загруженные данные.Назначьте роль
glarusbi_uploads
пользователюglarusbi
.
-- Создайте роль, чтобы связать разрешения базы данных для загрузки.
CREATE ROLE glarusbi_uploads WITH LOGIN;
-- Предоставьте права записи для СХЕМЫ, используемой для загрузки.
GRANT USAGE ON "your_schema" TO glarusbi_uploads;
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA "your_schema" TO glarusbi_uploads;
-- Назначьте роль пользователю glarusbi.
GRANT glarusbi_uploads TO glarusbi;
Разрешения при мультитенантном доступе¶
Если вы настраиваете мультитенантные разрешения для клиентов, которым необходим доступ к SQL, вы можете создать одно подключение к базе данных для каждого клиента. Это означает, что каждый клиент будет подключаться к базе данных через своего собственного пользователя базы данных.
Предположим, у вас есть клиенты с именами Tangerine и Lemon:
Создайте новых пользователей базы данных
glarusbi_tangerine
иglarusbi_lemon
.Создайте роль
customer_facing_analytics
с разрешениемCONNECT
.Создайте роли для объединения разрешений, специфичных для каждого из клиентских сценариев. Например:
tangerine_queries
, объединяющую разрешения чтения, чтобы люди могли запрашивать и создавать хранимые процедуры в схеме Tangerine;lemon_queries
, объединяющую разрешения чтения, чтобы люди могли запрашивать таблицы в схеме Lemon;lemon_actions
, объединяющую разрешения записи, необходимые для создания действий в таблице Lemonade в схеме Lemon.
Назначьте каждому пользователю соответствующие роли.
-- Создаём для каждого клиента отдельного пользователя.
CREATE USER glarusbi_tangerine WITH PASSWORD "orange";
CREATE USER glarusbi_lemon WITH PASSWORD "yellow";
-- Создаём роль, чтобы объединить разрешения для всех клиентов.
CREATE ROLE customer_facing_analytics;
GRANT CONNECT ON DATABASE "citrus" TO customer_facing_analytics;
GRANT customer_facing_analytics TO glarusbi_tangerine, glarusbi_lemon;
-- Создаём роль для объединения прав доступа на чтение аналитики для клиента Tangerine.
CREATE ROLE tangerine_queries;
GRANT USAGE ON SCHEMA "tangerine" TO tangerine_queries;
GRANT SELECT, EXECUTE ON ALL TABLES IN SCHEMA "tangerine" TO tangerine_queries;
GRANT tangerine_queries TO glarusbi_tangerine;
-- Создаём роль для объединения прав доступа на чтение аналитики для клиента Lemon.
CREATE ROLE lemon_queries;
GRANT USAGE ON SCHEMA "lemon" TO lemon_queries;
GRANT SELECT ON ALL TABLES IN SCHEMA "lemon" TO lemon_queries;
GRANT lemon_queries TO glarusbi_lemon;
-- Создаём роль для объединения прав на совершение Glarus BI действий для пользователя Lemon.
CREATE ROLE lemon_actions;
GRANT INSERT, UPDATE, DELETE ON TABLE "lemonade" IN SCHEMA "lemon" TO lemon_actions;
GRANT lemon_actions TO glarusbi_lemon;
Мы рекомендуем объединять разрешения в роли в зависимости от вариантов использования у каждого клиента. Таким образом, вы сможете повторно использовать общие разрешения для разных клиентов, сохраняя при этом возможность предоставлять или отменять отдельные разрешения для каждого из клиентов. Например:
Если клиенту Tangerine необходимо запросить схему Tangerine из другого инструмента аналитики, вы можете использовать роль
tangerine_queries
при настройке этого инструмента.Если клиент Lemon решит, что он больше не хочет использовать действия Glarus BI, но по-прежнему хочет задавать вопросы, то вы можете просто отозвать или удалить роль
lemon_actions
.