Примечание по терминологии:

  • В тексте используется термин «привилегии» (эквивалент GRANT/REVOKE), что соответствует русскоязычной практике администрирования СУБД.

  • Имена типов объектов и именованные привилегии StarRocks сохранены в верхнем регистре на английском языке (например, SYSTEM, RESOURCE GROUP, USAGE), согласно принятому стилю продуктовой документации.

I. Ключевые моменты управления привилегиями

1) Объекты применения привилегий

Привилегии в StarRocks применяются к сущностям StarRocks. На верхнем уровне находится SYSTEM — весь кластер StarRocks. Ниже SYSTEM расположены RESOURCE GROUP, RESOURCE, GLOBAL FUNCTION и каталоги (CATALOG). Каталоги бывают внутренние (INTERNAL CATALOG) и внешние (EXTERNAL CATALOG):

  • Для EXTERNAL CATALOG следующий уровень — DATABASE; внутри DATABASE находятся TABLE.

  • Для INTERNAL CATALOG следующий уровень также — DATABASE; внутри DATABASE находятся TABLE, VIEW, MATERIALIZED VIEW и функции уровня базы данных (FUNCTION).

Схема уровнями: SYSTEM → {RESOURCE GROUP, RESOURCE, GLOBAL FUNCTION, CATALOG} → {INTERNAL CATALOG | EXTERNAL CATALOG} → DATABASE → {TABLE, VIEW, MATERIALIZED VIEW, FUNCTION}.

2) Виды привилегий и область их применения

Разные сущности StarRocks имеют разные типы привилегий. Важно чётко понимать, какие операции покрывает каждая привилегия на каждом типе объекта.

Перечень типов сущностей и их привилегий

Тип сущности

Привилегии

SYSTEM

NODE, GRANT, CREATE RESOURCE GROUP, CREATE RESOURCE, CREATE EXTERNAL CATALOG, PLUGIN, REPOSITORY, BLACKLIST, FILE, OPERATE, CREATE GLOBAL FUNCTION, CREATE STORAGE VOLUME, SECURITY

RESOURCE GROUP

ALTER, DROP, ALL

RESOURCE

USAGE, ALTER, DROP, ALL

USER

IMPERSONATE

GLOBAL FUNCTION

USAGE, DROP, ALL

INTERNAL CATALOG

USAGE, CREATE DATABASE, ALL

EXTERNAL CATALOG

USAGE, DROP, ALL

DATABASE

ALTER, DROP, CREATE TABLE, CREATE VIEW, CREATE FUNCTION, CREATE MATERIALIZED VIEW, ALL

TABLE

ALTER, DROP, SELECT, INSERT, UPDATE, EXPORT, DELETE, ALL

VIEW

SELECT, ALTER, DROP, ALL

MATERIALIZED VIEW

SELECT, ALTER, REFRESH, DROP, ALL

FUNCTION

USAGE, DROP, ALL

STORAGE VOLUME

ALTER, DROP, USAGE, ALL

3) Учётные записи в StarRocks

Механизм учётных записей аналогичен MySQL: учётная запись задаётся парой «имя + хост» в формате username@'host'. Например, test@'ip1' и test@'ip2' — разные учётные записи.

4) Роли в StarRocks

Роль — это набор привилегий. Привилегии выдаются роли, затем роль назначается учётной записи. Это упрощает администрирование и избавляет от необходимости выдавать каждую привилегию по отдельности.

5) Механизм предоставления привилегий

StarRocks поддерживает:

  • косвенную выдачу привилегий (через роль: выдать привилегии роли → назначить роль учётной записи),

  • прямую выдачу привилегий учётной записи.

Для удобства управления рекомендуется использовать роли.

II. Встроенные роли

StarRocks содержит набор встроенных ролей, готовых к использованию (аналогично MongoDB read, readWrite). Пользователь может пользоваться этими ролями, но не может переопределять их состав привилегий.

  • root — суперпользователь, имеет все системные привилегии.

  • cluster_admin — администрирование кластера (добавление/удаление узлов, остановка узлов и т. п.).

  • db_admin — администрирование баз данных (все привилегии, связанные с данными, и ряд привилегий обслуживания).

  • user_admin — управление учётными записями и ролями (создание учётных записей, создание ролей, выдача привилегий и т. д.).

  • public — роль, которая есть у всех пользователей (включая новые учётные записи). По умолчанию не содержит привилегий. Если выдать привилегию роли public, её получат все учётные записи — это упрощает массовое администрирование.

III. Практические операции управления привилегиями

1) Создание роли

Обычно перед выдачей привилегий учётной записи создают роль и выдают привилегии роли:

CREATE ROLE rolename1;
GRANT SELECT, INSERT ON db1.tab1 TO rolename1;
GRANT rolename2 TO rolename1;

2) Создание учётной записи

Учётную запись можно создать несколькими способами:

CREATE USER username@'%' IDENTIFIED BY '12345';
CREATE USER username@'%' IDENTIFIED WITH mysql_native_password BY '12345';
CREATE USER username@'%' IDENTIFIED BY PASSWORD 'xxxx';
CREATE USER username@'%' IDENTIFIED WITH authentication_ldap_simple;

3) Выдача и отзыв привилегий

Выдача и отзыв привилегий выполняются командами GRANT и REVOKE:

GRANT USAGE ON RESOURCE 'resourcename' TO 'username'@'%';
REVOKE rolename1 FROM 'username'@'%';

4) Просмотр привилегий и свойств

SHOW GRANTS FOR 'username'@'%';
SHOW GRANTS FOR ROLE rolename1;
SHOW PROPERTY;
SHOW PROPERTY FOR 'username'@'%';

IV. Особенности управления привилегиями в StarRocks

1) Ограничения ресурсов для учётной записи

Можно задавать ограничения ресурсов для отдельной учётной записи. Например, ограничить максимум соединений для учётной записи A значением 1000:

CREATE USER 'A'@'%' PROPERTIES ("max_user_connections" = "1000");
SHOW PROPERTY FOR 'A'@'%' LIKE 'max_user_connections';

2) Роли по умолчанию и активированные роли

StarRocks поддерживает роли по умолчанию и активированные роли. Если роль назначена учётной записи, но не активирована, привилегии этой роли недоступны до активации. Роль по умолчанию — роль, применяемая при каждом входе.

  • Задать роль по умолчанию для конкретной учётной записи:

SET DEFAULT ROLE rolename TO user;
  • Активировать все роли для всех учётных записей при входе:

SET GLOBAL activate_all_roles_on_login = TRUE;

3) Массовое управление через роль public

Роль public по умолчанию не имеет привилегий, но если выдать привилегию роли public, эта привилегия автоматически будет у всех учётных записей. Это удобно для централизованного управления.

4) Выполнение команд от имени другой учётной записи

Если учётная запись имеет привилегию IMPERSONATE, она может выполнять команды от имени другой учётной записи:

EXECUTE AS user2 WITH NO REVERT;
SELECT CURRENT_USER();

В этом случае вы переключаетесь на user2. Пока вы явно не завершите сеанс, возврата к user1 не произойдёт.

Комментарии (0)