Skip to content

Docs feature security #17334

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 79 commits into from
May 5, 2025
Merged
Show file tree
Hide file tree
Changes from 66 commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
4f59379
Moved auth and security sections from index to separate pages
anton-bobkov Feb 14, 2025
afce0cc
Apply suggestions from code review
blinkov Feb 18, 2025
64bf44b
Translated the security_config section to English
anton-bobkov Feb 18, 2025
0dc52b3
Renamed topics by section name
anton-bobkov Feb 19, 2025
dd7f178
Added the cluster scheme concept
anton-bobkov Feb 13, 2025
ccfc700
Added a translation of the built-in security topic
anton-bobkov Feb 19, 2025
7d71a53
Renamed configuration subtopics
anton-bobkov Feb 20, 2025
ead6f27
Added the missing graph
anton-bobkov Feb 20, 2025
cb57e3a
Apply suggestions from code review
anton-bobkov Feb 21, 2025
7d554f8
Translated some comments
anton-bobkov Feb 21, 2025
f008bb5
Reordered items in the configuration section
anton-bobkov Feb 21, 2025
e41b9c9
Added information about authentication of native YDB users
anton-bobkov Feb 25, 2025
a32c9e6
Added an overview of the security model
anton-bobkov Feb 20, 2025
720e30b
Added information about IAM authentication
anton-bobkov Feb 27, 2025
ff5bba2
Added IAM-authentication parameters
anton-bobkov Feb 28, 2025
3f7117a
Added a missing parameter description
anton-bobkov Mar 6, 2025
141e645
Added a missing parameter description
anton-bobkov Mar 6, 2025
80ede66
Added info about encryption in transit and at rest
anton-bobkov Mar 6, 2025
d8bcdf9
Added info about internal and external users
anton-bobkov Mar 6, 2025
8c30a71
Updated information about account louckout and password complexity
anton-bobkov Mar 6, 2025
9760fe0
Updated information about account lockout and password complexity
anton-bobkov Mar 7, 2025
83299e8
Updated the diagram and reorganaized text
anton-bobkov Mar 10, 2025
1041ab7
Added English transation
anton-bobkov Mar 10, 2025
c446c5c
Apply suggestions from code review
anton-bobkov Mar 11, 2025
abb545f
Edits
anton-bobkov Mar 11, 2025
5d3366f
Moved auth and security sections from index to separate pages
anton-bobkov Feb 14, 2025
f304f72
Apply suggestions from code review
blinkov Feb 18, 2025
d55d0ff
Renamed configuration subtopics
anton-bobkov Feb 20, 2025
e786ccf
Added back the register_dynamic_node_allowed_sids parameter
anton-bobkov Mar 11, 2025
cb8d679
Edited the root database definition
anton-bobkov Mar 11, 2025
8c9cf9d
Apply suggestions from code review
anton-bobkov Mar 14, 2025
768fdef
Apply suggestions from code review
anton-bobkov Mar 14, 2025
5345534
Edits
anton-bobkov Mar 14, 2025
07ebb3a
Synced to the Russian version
anton-bobkov Mar 18, 2025
269b6b3
Merge branch 'docs-config-auth-security' into docs-feature-security
anton-bobkov Mar 20, 2025
15bc814
Merge branch 'docs-config-auth-security-en' into docs-feature-security
anton-bobkov Mar 20, 2025
339c072
Merge branch 'docs-config-auth-security-ru-local' into docs-feature-s…
anton-bobkov Mar 21, 2025
b0a64b0
Moved security_config parameters to root
anton-bobkov Mar 22, 2025
5b299ec
Merge branch 'docs-cluster-schema' into docs-feature-security
anton-bobkov Mar 23, 2025
057ec19
Merge branch 'docs-security-model' into docs-feature-security
anton-bobkov Mar 23, 2025
7ee12aa
Fixed links
anton-bobkov Mar 23, 2025
1551b7e
Added the register_dynamic_node_allowed_sids parameter to the English…
anton-bobkov Mar 31, 2025
c691ffe
Apply suggestions from code review (Batch 1)
anton-bobkov Apr 1, 2025
78a14a8
Apply suggestions from code review (Batch 2)
anton-bobkov Apr 1, 2025
2232fa5
Apply suggestions from code review (Batch 3)
anton-bobkov Apr 1, 2025
aee65df
Renamed the node-authorization file
anton-bobkov Apr 1, 2025
a7b6155
Added source files for the security-overview diagram
anton-bobkov Apr 1, 2025
3724333
Translated missing glossary entries and edited the authorization defi…
anton-bobkov Apr 1, 2025
28b00b8
Edits
anton-bobkov Apr 1, 2025
40359fe
Replaced the cluster scheme diagram with a directory structure
anton-bobkov Mar 31, 2025
c503a8b
Edits based on comments
anton-bobkov Mar 31, 2025
52b2651
Added the English transation
anton-bobkov Mar 31, 2025
0d29cc2
Added a glossary entry for the tenant database
anton-bobkov Apr 1, 2025
c7d6212
Merged root and tentant detabases to the detabase definition
anton-bobkov Apr 1, 2025
e5f5e1e
Edits
anton-bobkov Apr 1, 2025
91f38f7
Deleted obsolete block of info about security_config
anton-bobkov Apr 1, 2025
9448a5b
Edits
anton-bobkov Apr 2, 2025
4b50f46
Edits
anton-bobkov Apr 2, 2025
5d8cfeb
Edits
anton-bobkov Apr 2, 2025
752ed97
Merge pull request #2 from anton-bobkov/docs-feature-security-cluster…
anton-bobkov Apr 2, 2025
9598051
Merge branch 'main' into docs-feature-security
anton-bobkov Apr 2, 2025
a950158
Replaced the cluster scheme diagram (#16970)
anton-bobkov Apr 15, 2025
e890d6c
Update parameter descriptions based on comments (#17003)
anton-bobkov Apr 16, 2025
d57ec42
Changes based on the latest comments (#17180)
anton-bobkov Apr 17, 2025
34c6967
Added a diagram to explain auth mode parameters (#17119)
anton-bobkov Apr 17, 2025
98c84bc
Merge branch 'main' into docs-feature-security
anton-bobkov Apr 17, 2025
bf1717c
Update ydb/docs/ru/core/concepts/datamodel/index.md
anton-bobkov Apr 17, 2025
c33e98c
Update ydb/docs/ru/core/concepts/glossary.md
anton-bobkov Apr 17, 2025
a72982b
Cluster scheme root definition and other changes (#17398)
anton-bobkov Apr 18, 2025
d6556cc
Merge branch 'main' into docs-feature-security
anton-bobkov Apr 18, 2025
6cdbd14
Apply suggestions from code review
anton-bobkov Apr 18, 2025
987b45b
Apply suggestions from code review
anton-bobkov Apr 18, 2025
93f0a0e
Update ydb/docs/ru/core/reference/configuration/security_config.md
anton-bobkov Apr 18, 2025
7ba316e
Update security_config.md
anton-bobkov Apr 18, 2025
a921899
Doc changes related to security features (#17532)
anton-bobkov Apr 23, 2025
8351205
Merge branch 'main' into docs-feature-security
anton-bobkov Apr 23, 2025
a93b75d
Add local/external user glossary entries and elaborate on access leve…
anton-bobkov Apr 28, 2025
27cbb82
Resolved conflicts
anton-bobkov Apr 30, 2025
497ab94
Merged changes to password complexity and user lockout
anton-bobkov Apr 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions ydb/docs/en/core/_includes/builtin-groups-graph.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
```mermaid
---
config:
layout: elk
elk:
mergeEdges: true
nodePlacementStrategy: NETWORK_SIMPLEX
---
graph BT

DATA-WRITERS & DATABASE-ADMINS --> ADMINS
DDL-ADMINS & ACCESS-ADMINS --> DATABASE-ADMINS
DATA-READERS --> DATA-WRITERS
METADATA-READERS --> DATA-READERS & DDL-ADMINS
%%USERS --> METADATA-READERS & DATA-READERS & DATA-WRITERS & DDL-ADMINS & ACCESS-ADMINS & DATABASE-ADMINS & ADMINS
USERS --> METADATA-READERS & DDL-ADMINS & ACCESS-ADMINS

DATA-READERS["<b>DATA-READERS</b>
+SelectRow"
]

DATA-WRITERS["<b>DATA-WRITERS</b>
+UpdateRow
+EraseRow"
]

METADATA-READERS["<b>METADATA-READERS</b>
+DescribeSchema
+ReadAttributes"
]

DATABASE-ADMINS["<b>DATABASE-ADMINS</b>
+CreateDatabase
+DropDatabase"
]

ACCESS-ADMINS["<b>ACCESS-ADMINS</b>
+GrantAccessRights"
]

DDL-ADMINS["<b>DDL-ADMINS</b>
+CreateDirectory
+CreateTable
+CreateQueue
+WriteAttributes
+AlterSchema
+RemoveSchema"
]

USERS[<b>USERS</b>
+ConnectDatabase
]
ADMINS[<b>ADMINS</b>]
```

[//]: # (diplodoc support for mermaid lacks support for markdown in labels)
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<mxfile host="drawio.yandex-team.ru" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 YaBrowser/25.2.0.0 Safari/537.36" version="24.7.8">
<diagram name="Page-1" id="xOArDndSjSA-d0e_20V2">
<mxGraphModel dx="1985" dy="1409" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-30" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-28" target="DQRrSMZlwbo2s5G8Pi1W-29">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-41" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-28" target="DQRrSMZlwbo2s5G8Pi1W-39">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-28" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Cluster scheme root&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#bac8d3;strokeColor=#23445d;fontColor=#000000;" vertex="1" parent="1">
<mxGeometry width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-43" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-29" target="DQRrSMZlwbo2s5G8Pi1W-31">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-44" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-29" target="DQRrSMZlwbo2s5G8Pi1W-32">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-47" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-29" target="DQRrSMZlwbo2s5G8Pi1W-35">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-29" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Database 1&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7F7AA1;strokeColor=#7f7aa1;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="120" y="80" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-31" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Table 1&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#3399FF;" vertex="1" parent="1">
<mxGeometry x="240" y="160" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-45" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-32" target="DQRrSMZlwbo2s5G8Pi1W-33">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-46" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-32" target="DQRrSMZlwbo2s5G8Pi1W-34">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-32" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Directory 1&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7F7AA1;strokeColor=#7f7aa1;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="240" y="240" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-33" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Table 2&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#3399FF;" vertex="1" parent="1">
<mxGeometry x="360" y="320" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-34" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Table 3&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#3399FF;" vertex="1" parent="1">
<mxGeometry x="360" y="400" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-48" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-35" target="DQRrSMZlwbo2s5G8Pi1W-36">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-49" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-35" target="DQRrSMZlwbo2s5G8Pi1W-38">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-35" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Directory 2&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7F7AA1;strokeColor=#7f7aa1;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="240" y="480" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-50" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-36" target="DQRrSMZlwbo2s5G8Pi1W-37">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-36" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Directory 3&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7F7AA1;strokeColor=#7f7aa1;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="360" y="560" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-37" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;...&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="480" y="640" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-38" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;...&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="360" y="720" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-42" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000000;" edge="1" parent="1" source="DQRrSMZlwbo2s5G8Pi1W-39" target="DQRrSMZlwbo2s5G8Pi1W-40">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-39" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;Database 2&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7F7AA1;strokeColor=#7f7aa1;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="120" y="800" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="DQRrSMZlwbo2s5G8Pi1W-40" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;...&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="240" y="880" width="160" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 11 additions & 3 deletions ydb/docs/en/core/concepts/datamodel/index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
# Data model and schema
# Cluster structure

This section describes the entities that {{ ydb-short-name }} uses within DBs. The {{ ydb-short-name }} core lets you flexibly implement various storage primitives, so new entities may appear in the future.
This section describes the {{ ydb-short-name }} cluster scheme entities.

{{ ydb-short-name }} is a relational database where the data is stored in [tables](table.md) with each table consisting of rows and columns. Database objects in {{ ydb-short-name }} can be organized into a hierarchy of [folders](dir.md).
## {{ ydb-short-name }} cluster scheme {#cluster-scheme}

{{ ydb-short-name }} cluster scheme is a hierarchical namespace of a {{ ydb-short-name }} cluster. The only root element of this namespace is a **cluster scheme root**. A root of the cluster scheme can be a directory or a root database. Children elements of the cluster scheme root can be [databases](../../concepts/glossary.md#database) or other [scheme objects](../../concepts/glossary.md#scheme-object). Scheme objects can use nested directories to form a hierarchy.

![cluster scheme diagram](_assets/cluster-scheme.png =500x)

## {{ ydb-short-name }} scheme objects

Scheme objects in {{ ydb-short-name }} databases:

* [Folder](dir.md)
* [Table](table.md)
Expand Down
66 changes: 66 additions & 0 deletions ydb/docs/en/core/concepts/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,21 @@ Like in most database management systems, a **database** in {{ ydb-short-name }}

Another essential characteristic of {{ ydb-short-name }} databases is that they typically have dedicated compute resources allocated to them. Hence, creating an additional database is usually done externally by [DevOps engineers](../devops/index.md) or automation rather than via a SQL query.

{{ ydb-short-name }} has the following database types:

- [tenant databases](#tenant-database)
- [root databases](#root-database)

#### Tenant database {#tenant-database}

A **tenant database** is a logical container with an independent namespace for user-defined objects within the database.

Tenant databases are completely isolated from each other — they are processed by separate [database nodes](#database-node), they have separate [storage groups](#storage-group), and they can have separate [users](#access-user) with different [access rights](#access-right) and [access levels](#access-level).

#### Root database {#root-database}

A **root database** is a system database created for {{ ydb-short-name }}'s internal purposes at the [root of the cluster scheme](#scheme-root). This database contains service data such as [users](#access-user), [access levels](#access-level) and [access rights](#access-right), [tenant databases](#tenant-database), and more.

### Node {#node}

A {{ ydb-short-name }} **node** is a server process running an executable called `ydbd`. A physical server or virtual machine can run multiple {{ ydb-short-name }} nodes, which is common. Thus, in the context of {{ ydb-short-name }}, nodes are **not** synonymous with hosts.
Expand Down Expand Up @@ -262,6 +277,32 @@ An **external table** is a piece of metadata that describes a particular dataset

A **secret** is a sensitive piece of metadata that requires special handling. For example, secrets can be used in [external data source](#external-data-source) definitions and represent things like passwords and tokens.

### Authentication token {#auth-token}

An **authentication token** or **auth token** is a token that {{ ydb-short-name }} uses for [authentication](../security/authentication.md).

{{ ydb-short-name }} supports various [authentication modes](../security/authentication.md) and token types.

### User token {#user-token}

When a YDB node gets a request from a [user](#access-user), it requests the service where the user was created to validate the user's authentication token. Upon successful validation, the node creates and caches a **user token** for validating subsequent requests from that user instead of re-validating the authentication token.

### Cluster scheme {#scheme}

A **{{ ydb-short-name }} cluster scheme** is a hierarchical namespace of a {{ ydb-short-name }} cluster. The only root element of this namespace is a [cluster scheme root](#scheme-root). A root of the cluster scheme can be a [directory](#folder) or a [root database](#root-database). Children elements of the cluster scheme root can be [databases](#database) or other [scheme objects](#scheme-object). Scheme objects can use nested directories to form a hierarchy.

### Database scheme {#scheme-database}

A **database scheme** is a subset of the hierarchical namespace of a {{ ydb-short-name }} cluster that belongs to a database.

### Database root {#scheme-database-root}

A **database root** is a path to a database in a {{ ydb-short-name }} cluster scheme. This path acts as a root for database scheme objects.

### Scheme root {#scheme-root}

A **scheme root** is a root element of a [{{ ydb-short-name }} cluster scheme](datamodel/index.md#cluster-scheme). Children elements of the cluster scheme root can be [databases](#database) or other [scheme objects](#scheme-object).

### Scheme object {#scheme-object}

A database schema consists of **scheme objects**, which can be databases, [tables](#table) (including [external tables](#external-table)), [topics](#topic), [folders](#folder), and so on.
Expand Down Expand Up @@ -297,6 +338,24 @@ An **[access right](../security/authorization.md#right)** is an entity that repr

An **access control list** or **ACL** is a list of all [rights](#access-right) granted to [access subjects](#access-subject) (users and groups) for a specific [access object](#access-object).

### Access level {#access-level}

An **access level** determines additional privileges of an [access subject](#access-subject) for [scheme objects](#scheme-object) as well as privileges that are not related to [scheme objects](#scheme-object).

{{ ydb-short-name }} uses three access levels:

- viewer
- operator
- administrator

An access level is granted by adding an access subject to an [access level list](#access-level-list).

### Access level list {#access-level-list}

An **access level list** is a list of [SIDs](#access-sid) that grants a certain [access level](#access-level) to the associated [access subjects](#access-subject).

{{ ydb-short-name }} provides several [access level lists](../reference/configuration/security_config.md#security-access-levels) that collectively determine [access levels](#access-level) in the system.

### Owner {#access-owner}

An **[owner](../security/authorization.md#owner)** is an [access subject](#access-subject) ([user](#access-user) or [group](#access-group)) having full rights over a specific [access object](#access-object).
Expand All @@ -305,6 +364,13 @@ An **[owner](../security/authorization.md#owner)** is an [access subject](#acces

A **[user](../security/authorization.md#user)** is an individual utilizing {{ ydb-short-name }} to perform a specific function.

{{ ydb-short-name }} has the following types of users depending on their source:

- internal users in {{ ydb-short-name }} databases
- external users from third-party directory services

{{ ydb-short-name }} users are identified by their [SIDs](#access-sid).

### Group {#access-group}

A **[group](../security/authorization.md#group)** or **access group** is a named collection of [users](#access-user) with identical [access rights](#access-right) to certain [access objects](#access-object).
Expand Down
Loading