GRANT
Команда GRANT
позволяет установить права доступа к объектам схемы для пользователя или группы пользователей.
Синтаксис:
GRANT {{permission_name} [, ...] | ALL [PRIVILEGES]} ON {path_to_scheme_object [, ...]} TO {role_name [, ...]} [WITH GRANT OPTION]
permission_name
- имя права доступа к объектам схемы, которое нужно назначить.path_to_scheme_object
- путь до объекта схемы, на который выдаются права.role_name
- имя пользователя или группы, для которого выдаются права на объект схемы.
WITH GRANT OPTION
- использование этой конструкции наделяет пользователя или группу пользователей правом управлять правами доступа - назначать или отзывать определенные права. Конструкция имееет функцианальность аналогичную выдаче права "ydb.access.grant"
или GRANT
.
Субъект, обладающий правом ydb.access.grant
, не может выдавать права шире, чем обладает сам.
Права доступа
В качестве имен прав доступа можно использовать специфичные для YDB права или соответствующие им ключевые слова. В таблице ниже перечислены возможные имена прав и соответствующие им ключевые слова.
Нужно заметить, что специфичные для YDB права задаются как строки и должны заключаться в одинарные или двойные кавычки.
YDB право | Ключевое слово |
---|---|
"ydb.database.connect" |
CONNECT |
"ydb.tables.modify" |
MODIFY TABLES |
"ydb.tables.read" |
SELECT TABLES |
"ydb.generic.list" |
LIST |
"ydb.generic.read" |
SELECT |
"ydb.generic.write" |
INSERT |
"ydb.access.grant" |
GRANT |
"ydb.generic.use" |
USE |
"ydb.generic.use_legacy" |
USE LEGACY |
"ydb.database.create" |
CREATE |
"ydb.database.drop" |
DROP |
"ydb.generic.manage" |
MANAGE |
"ydb.generic.full" |
FULL |
"ydb.generic.full_legacy" |
FULL LEGACY |
"ydb.granular.select_row" |
SELECT ROW |
"ydb.granular.update_row" |
UPDATE ROW |
"ydb.granular.erase_row" |
ERASE ROW |
"ydb.granular.read_attributes" |
SELECT ATTRIBUTES |
"ydb.granular.write_attributes" |
MODIFY ATTRIBUTES |
"ydb.granular.create_directory" |
CREATE DIRECTORY |
"ydb.granular.create_table" |
CREATE TABLE |
"ydb.granular.create_queue" |
CREATE QUEUE |
"ydb.granular.remove_schema" |
REMOVE SCHEMA |
"ydb.granular.describe_schema" |
DESCRIBE SCHEMA |
"ydb.granular.alter_schema" |
ALTER SCHEMA |
ALL [PRIVILEGES]
- используется для указания всех возможных прав на объекты схемы для пользователей или групп.PRIVILEGES
является необязательным ключевым словом, необходимым для совместимости с SQL стандартом.
Примеры
-
Назначить право
ydb.generic.read
на таблицу/shop_db/orders
для пользователяuser1
:GRANT 'ydb.generic.read' ON `/shop_db/orders` TO user1;
Та же команда, с использованием ключевого слова
GRANT SELECT ON `/shop_db/orders` TO user1;
-
Назначить права
ydb.database.connect
,ydb.generic.list
на корень базы/shop_db
для пользователяuser2
и группыgroup1
:GRANT LIST, CONNECT ON `/shop_db` TO user2, group1;
-
Назначить право
ydb.generic.use
на таблицы/shop_db/orders
и/shop_db/sellers
для пользователейuser1@domain
,user2@domain
:GRANT 'ydb.generic.use' ON `/shop_db/orders`, `/shop_db/sellers` TO `user1@domain`, `user2@domain`;
-
Назначить все права на таблицу
/shop_db/sellers
для пользователяadmin_user
:GRANT ALL ON `/shop_db/sellers` TO admin_user;