---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.4
alternate:
  - https://ydb.tech/docs/en/yql/reference/syntax/revoke.md
  - https://ydb.tech/docs/ru/yql/reference/syntax/revoke.md
sourcePath: ru/core/yql/reference/syntax/revoke.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# REVOKE

Команда `REVOKE` позволяет отозвать права доступа к объектам схемы для пользователей или групп пользователей.

Синтаксис:

```yql
REVOKE [GRANT OPTION FOR] {{permission_name} [, ...] | ALL [PRIVILEGES]} ON {path_to_scheme_object [, ...]} FROM {role_name [, ...]}
```

* `permission_name` - имя права доступа к объектам схемы, которое нужно отозвать.
* `path_to_scheme_object` - путь до объекта схемы, с которого отзываются права.
* `role_name` - имя пользователя или группы, для которого отзываются права на объект схемы.

`GRANT OPTION FOR` - использование этой конструкции отзывает у пользователя или группы право управлять правами доступа. Все ранее выданные этим пользователем права остаются в силе. Конструкция имеет функцианальность аналогичную отзыву права `"ydb.access.grant"` или `GRANT`.

<!-- source: ru/yql/reference/_includes/permissions_list.md -->
## Права доступа {#permissions-list}

В качестве имён прав доступа можно использовать имена YDB прав или соответствующие им ключевые слова YQL.
В таблице ниже перечислены возможные имена прав.

YDB право | Ключевое слово YQL | Описание
--- | --- | ---
Права уровня баз данных
`ydb.database.connect` | `CONNECT` | Право подключаться к базе данных
`ydb.database.create` | `CREATE` | Право создавать новые базы данных в кластере
`ydb.database.drop` | `DROP` | Право удалять базы данных в кластере
Элементарные права на объекты базы данных
`ydb.granular.select_row` | `SELECT ROW` | Право читать строки из таблицы (select), читать сообщения из топиков, использовать значения секретов
`ydb.granular.update_row` | `UPDATE ROW` | Право обновлять строки в таблице (insert, update, upsert, replace), писать сообщения в топики
`ydb.granular.erase_row` | `ERASE ROW` | Право удалять строки из таблицы (delete)
`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` | Право просмотра имеющихся прав доступа (ACL) на объект доступа, просмотра описания объектов доступа (директории, таблицы, топики)
`ydb.granular.alter_schema` | `ALTER SCHEMA` | Право изменять объекты доступа (директории, таблицы, топики), в том числе права пользователей на объекты доступа
Дополнительные флаги
`ydb.access.grant` | `GRANT` | Право предоставлять или отзывать права у других пользователей в объёме, не превышающем текущий объём прав пользователя на объекте доступа
Права, основанные на других правах
`ydb.tables.modify` | `MODIFY TABLES` | `ydb.granular.update_row` + `ydb.granular.erase_row`
`ydb.tables.read` | `SELECT TABLES` | Синоним `ydb.granular.select_row`
`ydb.generic.list` | `LIST` | Синоним `ydb.granular.describe_schema`
`ydb.generic.read` | `SELECT` | `ydb.granular.select_row` + `ydb.generic.list`
`ydb.generic.write` | `INSERT` | `ydb.granular.update_row` + `ydb.granular.erase_row` + `ydb.granular.create_directory` + `ydb.granular.create_table` + `ydb.granular.create_queue` + `ydb.granular.remove_schema` + `ydb.granular.alter_schema`
`ydb.generic.use_legacy` | `USE LEGACY` | `ydb.generic.read` + `ydb.generic.write` + `ydb.access.grant`
`ydb.generic.use` | `USE` | `ydb.generic.use_legacy` + `ydb.database.connect`
`ydb.generic.manage` | `MANAGE` | `ydb.database.create` + `ydb.database.drop`
`ydb.generic.full_legacy` | `FULL LEGACY` | `ydb.generic.use_legacy` + `ydb.generic.manage`
`ydb.generic.full` | `FULL` | `ydb.generic.use` + `ydb.generic.manage`

* `ALL [PRIVILEGES]` - используется для указания всех возможных прав на объекты схемы для пользователей или групп. `PRIVILEGES` является необязательным ключевым словом, необходимым для совместимости с SQL стандартом.

{% note info %}

Права `ydb.database.connect`, `ydb.granular.describe_schema`, `ydb.granular.select_row`, `ydb.granular.update_row` необходимо рассматривать как слои прав.

```mermaid
graph TD;
    ydb.database.connect --> ydb.granular.describe_schema;
    ydb.granular.describe_schema --> ydb.granular.select_row;
    ydb.granular.select_row --> ydb.granular.update_row;
```

Например, для изменения строк необходимо не только право `ydb.granular.update_row`, но и все вышележащие права.

{% endnote %}
<!-- endsource: ru/yql/reference/_includes/permissions_list.md -->

## Примеры

* Отозвать право `ydb.generic.read` на таблицу `/shop_db/orders` у пользователя `user1`:

  ```yql
  REVOKE 'ydb.generic.read' ON `/shop_db/orders` FROM user1;
  ```

  Та же команда, с использованием ключевого слова

  ```yql
  REVOKE SELECT ON `/shop_db/orders` FROM user1;
  ```

* Отозвать права `ydb.database.connect`, `ydb.generic.list` на корень базы `/shop_db` у пользователя `user2` и группы `group1`:

  ```yql
  REVOKE LIST, CONNECT ON `/shop_db` FROM user2, group1;
  ```

* Отозвать право `ydb.generic.use` на таблицы `/shop_db/orders` и `/shop_db/sellers` у пользователей `user1@domain`, `user2@domain`:

  ```yql
  REVOKE 'ydb.generic.use' ON `/shop_db/orders`, `/shop_db/sellers` FROM `user1@domain`, `user2@domain`;
  ```

* Отозвать все права на таблицу `/shop_db/sellers` для пользователя `user`:

  ```yql
  REVOKE ALL ON `/shop_db/sellers` FROM user;
  ```
