Операции с привилегиями
-
GRANT— Предоставление привилегий -
REVOKE— Отзыв привилегий -
SHOW GRANTS— Просмотр привилегий -
SHOW OWNER— Просмотр владельца
Предоставление привилегий
Привилегии на каталог
GRANT <catalog_privileges> ON CATALOG TO [ROLE | USER] <name>;
Предоставляет роли или пользователю указанные привилегии на каталог.
<catalog_privileges> — это список привилегий, разделенный запятыми.
Доступные привилегии на каталог:
-
ADMIN— все возможные действия с каталогом, включая предоставление привилегий на него. -
ALL— все возможные действия с каталогом, кроме предоставления привилегий на него. -
CREATE USER— создание пользователей. -
CREATE ROLE— создание ролей. -
CREATE WORKER POOL— создание вычислительных пулов. -
CREATE TABLE— создание таблиц. -
CREATE VIEW— создание представлений. -
CREATE SCHEMA— создание схем. -
MONITOR— получение метаданных каталога.
Привилегии на внешний каталог
GRANT <external_catalog_privileges> ON EXTERNAL CATALOG <external_catalog_name> TO [ROLE | USER] <name>;
Предоставляет роли или пользователю указанные привилегии на внешний каталог.
<external_catalog_privileges> — это список привилегий, разделенный запятыми.
Доступные привилегии на внешний каталог:
-
OWNERSHIP— позволяет изменять владельца внешнего каталога. -
SELECT— позволяет делать запросыSELECTво внешнем каталоге.
Привилегии на вычислительные пулы
GRANT <worker_pool_privileges> ON WORKER POOL <worker_pool_name> TO [ROLE | USER] <name>;
Предоставляет роли или пользователю указанные привилегии на вычислительный пул.
<worker_pool_privileges> — это список привилегий, разделенный запятыми.
Доступные привилегии на вычислительные пулы:
-
ADMIN— все возможные действия с вычислительным пулом, включая предоставление привилегий на него. -
ALL— все возможные действия с вычислительным пулом, кроме предоставления привилегий на него. -
OWNERSHIP— изменение владельца вычислительного пула. -
USAGE— использование вычислительного пула. -
MONITOR— мониторинг вычислительного пула.
Посмотреть пример
Предоставим пользователю tengri_user привилегии USAGE и MONITOR на вычислительный пул compute_xl.
GRANT USAGE, MONITOR
ON WORKER POOL compute_xl
TO tengri_user;
Привилегии на схемы
GRANT <schema_privileges> ON SCHEMA <schema_name> TO [ROLE | USER] <name>;
Предоставляет роли или пользователю указанные привилегии на указанную схему.
<schema_privileges> — это список привилегий, разделенный запятыми.
Доступные привилегии на схемы:
-
ADMIN— все возможные действия со схемой, включая предоставление привилегий на нее. -
ALL— все возможные действия со схемой, кроме предоставления привилегий на нее. -
OWNERSHIP— позволяет изменять владельца схемы. -
CREATE TABLE— позволяет создавать таблицы в схеме. -
CREATE VIEW— позволяет создавать представления в схеме. -
ALTER— позволяет изменять свойства схемы. -
USAGE— разрешает доступ к объектам в схеме. -
MONITOR— разрешает доступ к метаданным схемы.
Посмотреть пример
Предоставим роли junior_admin привилегии MONITOR и MODIFY на схему main_schema.
GRANT MONITOR, MODIFY
ON SCHEMA main_schema
TO ROLE junior_admin;
Привилегии на таблицы и представления
Прямой синтаксис:
GRANT <table_privileges>
ON (TABLE | VIEW) <table_name>
TO [ROLE | USER] <name>;
Темпоральный синтаксис:
GRANT <table_privileges>
ON ALL [EXISTING] [[AND] FUTURE] (TABLES | VIEWS | TABLES AND VIEWS)
IN [SCHEMA] <schema_name>
TO [ROLE | USER] <name>;
Предоставляет роли или пользователю указанные привилегии на таблицу или представление внутри указанной схемы.
<table_privileges> — это список привилегий, разделенный запятыми.
Доступные привилегии на таблицы и представления:
-
ALL— позволяет производить все возможные действия с таблицей, кроме предоставления привилегий на нее. -
OWNERSHIP— позволяет изменять владельца таблицы. -
ALTER— позволяет изменять свойства таблицы. -
DROP— позволяет удалить таблицу. -
TRUNCATE— позволяет удалить все строки из таблицы. -
SELECT— позволяет читать данные из таблицы. -
INSERT— позволяет добавлять новые строки в таблицу. -
UPDATE— позволяет изменять существующие строки в таблице. -
DELETE— позволяет удалять строки из таблицы. -
MONITOR— позволяет просматривать метаданные таблицы без чтения данных из нее.
Чтобы выдать привилегию на все существующие (или те, которые будут созданы в будущем) объекты внутри схемы, используется темпоральный синтаксис.
-
Модификатор
EXISTINGограничивает предоставление привилегий только существующими объектами. -
Модификатор
FUTUREограничивает предоставление привилегий объектами, которые будут созданы в будущем.
Если ни один модификатор не указан, то действие распространяется на все объекты — и уже существующие, и те, которые будут созданы в будущем.
Посмотреть пример
Предоставим роли junior_admin привилегии SELECT и INSERT на все существующие таблицы и представления внутри схемы main_schema.
GRANT SELECT, INSERT
ON EXISTING TABLES AND VIEWS
IN SCHEMA main_schema
TO ROLE junior_admin;
Привилегии на пользователей
GRANT <user_privileges> ON USER <user_name> TO [ROLE | USER] <name>;
Предоставляет роли или пользователю указанные привилегии на пользователя.
<user_privileges> — это список привилегий, разделенный запятыми.
Доступные привилегии на пользователей:
-
ADMIN— позволяет производить все возможные действия с пользователем, включая предоставление привилегий на него. -
ALL— позволяет производить все возможные действия с пользователем, кроме предоставления привилегий на него. -
CREATE API TOKEN— позволяет создавать API-токен от имени другого пользователя. -
MONITOR— позволяет просматривать метаданные пользователя. -
OWNERSHIP— позволяет изменять владельца пользователя.
Привилегии на роли
GRANT OWNERSHIP ON ROLE <role_name> TO [ROLE | USER] <name>;
Предоставляет роли или пользователю привилегию OWNERSHIP на роль.
-
OWNERSHIP— позволяет изменять владельца роли.
Другие привилегии на роли не поддерживаются.
Привилегии на API-токены
GRANT OWNERSHIP ON API TOKEN <token_name> TO [ROLE | USER] <name>;
Предоставляет роли или пользователю привилегию OWNERSHIP на API-токен.
-
OWNERSHIP— позволяет изменять владельца API-токена.
Другие привилегии на API-токены не поддерживаются.
Привилегии на провайдеры идентификации
GRANT OWNERSHIP ON IDP <idp_name> TO [ROLE | USER] <name>;
Предоставляет роли или пользователю привилегию OWNERSHIP на провайдер идентификации.
-
OWNERSHIP— позволяет изменять владельца провайдера идентификации.
Другие привилегии на провайдеры идентификации не поддерживаются.
Ключевые слова ROLE и USER перед именем целевой роли или пользователя не являются обязательными.
|
Отзыв привилегий
REVOKE <schema_privileges>
ON SCHEMA <schema_name> FROM [ROLE | USER] <name>;
REVOKE <table_privileges>
ON (TABLE | VIEW) <table_name> [IN SCHEMA <schema_name>] FROM [ROLE | USER] <name>;
REVOKE <catalog_privileges>
ON CATALOG FROM [ROLE | USER] <name>;
REVOKE <external_catalog_privileges>
ON EXTERNAL CATALOG <external_catalog_name> FROM [ROLE | USER] <name>;
REVOKE <worker_pool_privileges>
ON WORKER POOL <worker_pool_name> FROM [ROLE | USER] <name>;
REVOKE <user_privileges>
ON USER <user_name> FROM [ROLE | USER] <name>;
REVOKE OWNERSHIP
ON ROLE <role_name> FROM [ROLE | USER] <name>;
REVOKE OWNERSHIP
ON API TOKEN <api_token_name> FROM [ROLE | USER] <name>;
REVOKE OWNERSHIP
ON IDP <identity_provider_name> FROM [ROLE | USER] <name>;
Отзывает указанные привилегии на указанный объект у роли или пользователя.
<..._privileges> — это списки привилегий, разделенные запятыми. Конкретные привилегии зависят от целевого объекта.
Посмотреть пример
Отзовем у роли junior_admin привилегии SELECT и INSERT на все существующие таблицы и представления внутри схемы main_schema.
REVOKE SELECT, INSERT
ON EXISTING TABLES AND VIEWS
IN SCHEMA main_schema
FROM ROLE junior_admin;
Просмотр привилегий
SHOW GRANTS ON <table_name | schema_name>;
Выводит список привилегий на указанный объект (таблицу или схему) для текущего пользователя.
Посмотреть пример
SHOW GRANTS ON demo.weekdays;
+------------+---------------------------------+
| role | privilege |
+------------+---------------------------------+
| test_user | {SELECT on TABLE demo.weekdays} |
+------------+---------------------------------+
Чтобы увидеть привилегии на объект для всех пользователей, можно использовать системную таблицу system.privileges.
|
Просмотр владельца
SHOW OWNER OF <table_name | schema_name>;
Выводит владельца (имя пользователя) указанного объекта (таблицы или схемы).