Роли и полномочия

Если в системе включена аутентификация, полномочия отправителя запроса в системе определяются комбинацией назначенных ему ролей.

Система предоставляет фиксированный набор ролей. Роли отправителям запросов можно назначить любым из способов или их комбинацией:

  • задать роли, назначаемые по умолчанию всем отправителям запросов, с помощью конфигурационного параметра CORE_DEFAULT_ROLES;
  • задать роли отправителя запроса в составе его авторизационного токена.

Список ролей в авторизационном токене задается с помощью атрибута roles. Пример атрибута с двумя ролями: roles: ['env_datareader', 'env_datawriter'].

Порядок определения ролей и полномочий

Система определяет роли отправителя запроса в следующем порядке:

  • если аутентификация включена и в запросе передан авторизационный токен со списком ролей, используются роли из токена;
  • если аутентификация включена, но токен не содержит список ролей или аутентификация отключена, используются роли, заданные в конфигурации как роли по умолчанию.

Полномочия, доступные отправителю запроса, соответствуют его роли. Если отправителю запросов назначено несколько ролей, их полномочия объединяются. Отправителю запроса, для которого не нашлось ни одной роли, назначается роль env_none с соответствующими ей полномочиями.

Набор ролей и их полномочий

В таблице ниже перечислены роли, предоставляемые системой, в порядке повышения уровня их полномочий. Для каждой роли перечислены доступные для нее запросы SQL+ и методы HTTP API.

Для исполнения запроса с помощью HTTP-метода query требуется роль, соответствующая типу запроса в теле сообщения. Чтобы определить нужную роль, используйте таблицу ниже, ориентируясь на списки запросов в столбце «Полномочия». Например, SELECT-запрос доступен только ролям env_datareader или env_owner.

Роль Область применения Полномочия
env_none Минимальный доступ Доступные HTTP-запросы:
запрос JVM-метрик.

Доступные методы HTTP API:
/swagger-ui
env_default Получение метаданных и управление ими Доступные HTTP-запросы:
запрос JVM-метрик.

Доступные запросы SQL+:
CHECK_DATABASE,
CHECK_JWKS,
CHECK_MATERIALIZED_VIEW,
CHECK_TABLE,
CHECK_VERSIONS,
GET_CHANGES,
GET_ENTITY_DDL,
GET_ENTITY_STATISTICS,
GET_INDEXES,
RESET_STATISTICS,
SELECT FROM INFORMATION_SCHEMA,
SYNC,
USE.

Доступные методы HTTP API:
/swagger-ui,
методы по управлению метаданными,
методы по управлению статистикой,
метод для проверки версий компонентов
env_datareader Чтение данных Доступные запросы SQL+:
все запросы роли env_default,
CHECK_DATA,
CHECK_SUM,
CHECK_SUM_SNAPSHOT,
CREATE DOWNLOAD EXTERNAL TABLE,
DROP DOWNLOAD EXTERNAL TABLE,
INSERT INTO download_external_table,
SELECT
env_datawriter Изменение данных Доступные запросы SQL+:
все запросы роли env_default,
BEGIN DELTA,
COMMIT DELTA,
CREATE READABLE EXTERNAL TABLE,
CREATE UPLOAD EXTERNAL TABLE,
CREATE WRITABLE EXTERNAL TABLE,
DELETE,
DROP READABLE EXTERNAL TABLE,
DROP UPLOAD EXTERNAL TABLE,
DROP WRITABLE EXTERNAL TABLE,
ERASE DELTA,
ERASE_WRITE_OPERATION,
GET_CN,
GET_DELTA_BY_DATETIME,
GET_DELTA_BY_NUM,
GET_DELTA_HOT,
GET_DELTA_OK,
GET_WRITE_OPERATIONS,
INSERT SELECT,
INSERT SELECT FROM external_table,
INSERT VALUES,
RESUME_WRITE_OPERATION,
ROLLBACK CRASHED_WRITE_OPERATIONS,
ROLLBACK DELTA,
UPDATE,
UPSERT VALUES.

Доступные методы HTTP API:
методы по управлению дельтами,
методы получения информации по асинхронным операциям,
методы удаления информации по асинхронным операциям
env_ddladmin Управление логической и физической схемой данных Доступные запросы SQL+:
все запросы роли env_default,
ALLOW_CHANGES,
ALTER TABLE ADD COLUMN,
ALTER TABLE ADD RETENTION,
ALTER TABLE DROP COLUMN,
ALTER TABLE DROP RETENTION,
ALTER TABLE RENAME,
ALTER TABLE RENAME COLUMN,
ALTER VIEW,
CREATE DATABASE,
CREATE INDEX,
CREATE MATERIALIZED VIEW,
CREATE PROXY TABLE,
CREATE TABLE,
CREATE VIEW,
DENY_CHANGES,
DISABLE_STATISTICS_ROWS_COUNT,
DROP DATABASE,
DROP INDEX,
DROP MATERIALIZED VIEW,
DROP TABLE,
DROP VIEW,
ENABLE_STATISTICS_ROWS_COUNT,
ERASE_CHANGE_OPERATION,
TRUNCATE ACTUAL,
TRUNCATE HISTORY
env_owner Полный доступ Доступны все запросы SQL+ и все методы HTTP API без ограничений