Skip to content

Commit

Permalink
docs: add access rights list as a separate page to security/
Browse files Browse the repository at this point in the history
  • Loading branch information
ijon committed Jan 29, 2025
1 parent 6b7309b commit aedcbb4
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 17 deletions.
1 change: 1 addition & 0 deletions ydb/docs/ru/core/security/access-rights.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{% include [{#T}](../yql/reference/_includes/permissions_list.md) %}
3 changes: 2 additions & 1 deletion ydb/docs/ru/core/security/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@
- [{#T}](authorization.md)
- [{#T}](builtin-security.md)
- [{#T}](audit-log.md)
- [{#T}](access-rights.md)
- [{#T}](short-access-control-notation.md)
- Шифрование:

- [{#T}](encryption/data-at-rest.md)
- [{#T}](encryption/data-in-transit.md)

- [{#T}](short-access-control-notation.md)
- Концепции:

- [{#T}](../concepts/connect.md)
9 changes: 7 additions & 2 deletions ydb/docs/ru/core/security/toc_p.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@ items:
href: authorization.md
- name: Встроенная настройка безопасности
href: builtin-security.md
- name: Права доступа
expanded: true
items:
- name: Список имён
href: access-rights.md
- name: Краткая запись
href: short-access-control-notation.md
- name: Аудитный лог
href: audit-log.md
- name: Шифрование
href: encryption/index.md
include:
mode: link
path: encryption/toc_p.yaml
- name: Краткая запись управления доступом
href: short-access-control-notation.md
60 changes: 46 additions & 14 deletions ydb/docs/ru/core/yql/reference/_includes/permissions_list.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
## Права доступа {#permissions-list}

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

[//]: # (TODO: не получается поставить ссылку на concepts/glossary.md#access-right)

{{ ydb-short-name }} право | Ключевое слово YQL | Описание
--- | --- | ---
Права уровня баз данных
`ydb.database.connect` | `CONNECT` | Право подключаться к базе данных
*Права уровня кластера*
`ydb.database.create` | `CREATE` | Право создавать новые базы данных в кластере
`ydb.database.drop` | `DROP` | Право удалять базы данных в кластере
Элементарные права на объекты базы данных
*Права уровня базы данных*
`ydb.database.connect` | `CONNECT` | Право подключаться к базе данных
*Элементарные права уровня объектов схемы*
`ydb.granular.select_row` | `SELECT ROW` | Право читать строки из таблицы (select), читать сообщения сообщения из топиков
`ydb.granular.update_row` | `UPDATE ROW` | Право обновлять строки в таблице (insert, update, insert, erase), писать сообщения в топики
`ydb.granular.erase_row` | `ERASE ROW` | Право удалять строки из таблицы
Expand All @@ -19,9 +21,9 @@
`ydb.granular.remove_schema` | `REMOVE SCHEMA` | Право удалять объекты (директории, таблицы, топики), которые были созданы посредством использования прав
`ydb.granular.describe_schema` | `DESCRIBE SCHEMA` | Право просмотра имеющихся прав доступа (ACL) на объект доступа, просмотра описания объектов доступа (директории, таблицы, топики)
`ydb.granular.alter_schema` | `ALTER SCHEMA` | Право изменять объекты доступа (директории, таблицы, топики), в том числе права пользователей на объекты доступа
Дополнительные флаги
`ydb.access.grant` | `GRANT` | Право предоставлять или отзывать права у других пользователей в объёме, не превышающем текущий объём прав пользователя на объекте доступа
Права, основанные на других правах
*Право передачи прав*
`ydb.access.grant` | `GRANT` | Флаг, помечающий другие выдаваемые права, что эти права пользователь может также выдать другим пользователям (аналог `WITH GRANT OPTION`)
*Группы прав*
`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`
Expand All @@ -37,15 +39,45 @@

{% note info %}

Права `ydb.database.connect`, `ydb.granular.describe_schema`, `ydb.granular.select_row`, `ydb.granular.update_row` необходимо рассматривать как слои прав.
Права доступа следует рассматривать как слои дополнительных разрешений: для изменения объекта помимо права на изменение требуются права на доступ к базе и на чтение.

{% endnote %}

```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;
---
config:
flowchart:
# guard long node labels from wrapping or clipping
- wrappingWidth: 500 # default is 200
---
graph BT
ydb.database.connect --> ydb.granular.describe_schema
ydb.granular.describe_schema --> ydb.granular.select_row & create_schema & ydb.granular.remove_schema & ydb.granular.alter_schema
ydb.granular.select_row --> ydb.granular.update_row & ydb.granular.erase_row
ydb.database.connect["`ydb.database.connect`"]
ydb.granular.describe_schema["`ydb.granular.describe_schema`"]
create_schema["`ydb.granular.create_{directory,table,queue}`"]
ydb.granular.remove_schema["`ydb.granular.remove_schema`"]
ydb.granular.alter_schema["`ydb.granular.alter_schema`"]
ydb.granular.select_row["`ydb.granular.select_row`"]
ydb.granular.update_row["`ydb.granular.update_row`"]
ydb.granular.erase_row["`ydb.granular.erase_row`"]
```

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

{% endnote %}
1. для изменения данных в таблицах нужны права:

+ `ydb.granular.update_row`
+ `ydb.granular.select_row`
+ `ydb.granular.describe_schema`
+ `ydb.database.connect`

2. для изменения объекта схемы нужны права:

+ `ydb.granular.alter_schema`
+ `ydb.granular.describe_schema`
+ `ydb.database.connect`

0 comments on commit aedcbb4

Please sign in to comment.