Перейти к содержимому
Последнее обновление

GRANT TO

Описание​

Команда GRANT используется для следующих действий:

  1. Предоставление указанных привилегий пользователю или роли.
  2. Назначение указанных ролей пользователю.

Связанные команды

Синтаксис​

Предоставление указанных привилегий пользователю или роли

GRANT <privilege_list> 
ON { <priv_level>
| RESOURCE <resource_name>
| WORKLOAD GROUP <workload_group_name>
| COMPUTE GROUP <compute_group_name>
| STORAGE VAULT <storage_vault_name>
}
TO { <user_identity> | ROLE <role_name> }

Назначение указанных ролей пользователю

GRANT <role_list> TO <user_identity> 

Обязательные параметры​

1. <privilege_list>

Список предоставляемых привилегий, разделённых запятыми. В настоящее время поддерживаются следующие привилегии:

  • NODE_PRIV: Права на управление узлами кластера, включая ввод узлов в эксплуатацию и вывод из неё.
  • ADMIN_PRIV: Все привилегии, кроме NODE_PRIV.
  • GRANT_PRIV: Права на управление привилегиями, включая создание и удаление пользователей и ролей, предоставление и отзыв привилегий, установку паролей и т. д.
  • SELECT_PRIV: Право на чтение данных из указанной базы данных или таблицы.
  • LOAD_PRIV: Право на загрузку данных в указанную базу данных или таблицу.
  • ALTER_PRIV: Право на изменение схемы указанной базы данных или таблицы.
  • CREATE_PRIV: Право на создание объектов в указанной базе данных или таблице.
  • DROP_PRIV: Право на удаление указанной базы данных или таблицы.
  • USAGE_PRIV: Права доступа к указанному ресурсу и группе рабочей нагрузки.
  • SHOW_VIEW_PRIV: Право на просмотр операторов создания представлений.

Преобразование устаревших привилегий:

  • ALL и READ_WRITE преобразуются в: SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV, DROP_PRIV.
  • READ_ONLY преобразуется в SELECT_PRIV.

2. <priv_level>

Поддерживаются следующие четыре формы:

  • ..*: Привилегии могут распространяться на все Catalog и все содержащиеся в них базы данных и таблицы.
  • catalog_name..: Привилегии могут распространяться на все базы данных и таблицы в указанном Catalog.
  • catalog_name.db.*: Привилегии могут распространяться на все таблицы в указанной базе данных.
  • catalog_name.db.tbl: Привилегии могут распространяться на указанную таблицу в указанной базе данных.

3. <resource_name>

Задаёт имя ресурса. Значения % и * обозначают все ресурсы, однако шаблоны с подстановочными знаками, например res*, не поддерживаются.

4. <workload_group_name>

Задаёт имя группы рабочей нагрузки. Значения % и * обозначают все группы рабочей нагрузки, однако шаблоны с подстановочными знаками не поддерживаются.

5. <compute_group_name>

Задаёт имя вычислительной группы. Значения % и * обозначают все вычислительные группы, однако шаблоны с подстановочными знаками не поддерживаются.

6. <storage_vault_name>

Задаёт имя хранилища. Значения % и * обозначают все хранилища, однако шаблоны с подстановочными знаками не поддерживаются.

7. <user_identity>

Задаёт пользователя, которому предоставляются привилегии. Это должен быть пользователь user_identity, созданный с помощью CREATE USER. Хост в user_identity может быть доменным именем. В этом случае привилегии могут вступить в силу с задержкой примерно в 1 минуту.

8. <role_name>

Задаёт роль, которой предоставляются привилегии. Если указанная роль не существует, она будет создана автоматически.

9. <role_list>

Список назначаемых ролей, разделённых запятыми. Указанные роли должны существовать.

Начиная с версии 4.1.5, имя объекта, для которого задаются привилегии, может состоять не более чем из трёх компонентов: db, db.table или catalog.db.table, включая соответствующие формы с подстановочными знаками. Имена с более чем тремя компонентами отклоняются; лишние префиксы больше не игнорируются без уведомления.

Требования к правам доступа​

Пользователи, выполняющие эту команду SQL, должны иметь как минимум следующие привилегии:

ПривилегияОбъектПримечания
GRANT_PRIVПользователь или рольТолько пользователи или роли с привилегией GRANT_PRIV могут выполнять операцию GRANT.

Начиная с версии 4.1.5, пользователю без прав ADMIN для предоставления или отзыва привилегий на столбцы требуется как существующая привилегия GRANT, так и соответствующая привилегия на таблицу либо соответствующая привилегия на каждый из перечисленных столбцов. Одной привилегии GRANT недостаточно для предоставления или отзыва привилегий на столбцы, которыми сам пользователь не обладает.

Примеры​

  • Предоставить пользователю права на все Catalog, базы данных и таблицы:

    GRANT SELECT_PRIV ON *.*.* TO 'jack'@'%';
  • Предоставить пользователю права на указанную таблицу в базе данных:

    GRANT SELECT_PRIV,ALTER_PRIV,LOAD_PRIV ON ctl1.db1.tbl1  TO 'jack'@'192.8.%';
  • Предоставить роли права на указанную таблицу в базе данных:

    GRANT LOAD_PRIV ON ctl1.db1.* TO ROLE 'my_role';
  • Предоставить пользователям доступ ко всем ресурсам:

    GRANT USAGE_PRIV ON RESOURCE * TO 'jack'@'%';
  • Предоставить пользователю право на использование указанного ресурса:

    GRANT USAGE_PRIV ON RESOURCE 'spark_resource' TO 'jack'@'%';
  • Предоставить ролям доступ к указанным ресурсам:

    GRANT USAGE_PRIV ON RESOURCE 'spark_resource' TO ROLE 'my_role';
  • Назначить пользователю указанную роль:

    GRANT 'role1','role2' TO 'jack'@'%';
  • Предоставить пользователю jack права на указанную группу рабочей нагрузки 'g1':

    GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO 'jack'@'%';
  • Использовать шаблон для выбора всех групп рабочей нагрузки при предоставлении прав пользователю jack:

    GRANT USAGE_PRIV ON WORKLOAD GROUP '%' TO 'jack'@'%';
  • Предоставить роли my_role права на группу рабочей нагрузки 'g1':

    GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO ROLE 'my_role';
  • Разрешить пользователю jack просматривать оператор создания представления view1 в базе данных db1:

    GRANT SHOW_VIEW_PRIV ON db1.view1 TO 'jack'@'%';
  • Предоставить пользователю право на использование указанной вычислительной группы:

    GRANT USAGE_PRIV ON COMPUTE GROUP 'group1' TO 'jack'@'%';
  • Предоставить роли право на использование указанной вычислительной группы:

    GRANT USAGE_PRIV ON COMPUTE GROUP 'group1' TO ROLE 'my_role';
  • Предоставить пользователю право на использование всех вычислительных групп:

    GRANT USAGE_PRIV ON COMPUTE GROUP '*' TO 'jack'@'%';
  • Предоставить пользователю право на использование указанного хранилища:

    GRANT USAGE_PRIV ON STORAGE VAULT 'vault1' TO 'jack'@'%';
  • Предоставить роли право на использование указанного хранилища:

    GRANT USAGE_PRIV ON STORAGE VAULT 'vault1' TO ROLE 'my_role';
  • Предоставить пользователю право на использование всех хранилищ:

    GRANT USAGE_PRIV ON STORAGE VAULT '*' TO 'jack'@'%';