summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbazeltsev <[email protected]>2022-07-22 18:28:23 +0300
committerbazeltsev <[email protected]>2022-07-22 18:28:23 +0300
commit87c6f45c83789bf0e399b6b64ca7ac7324c2abed (patch)
tree248c1f62d0cc178a3ede9f600fbf9fd3ca0981fb
parentfb0a507d4b1ba95626954c1d6c16e3aa898f14c1 (diff)
Add static credentials
updated updated initial
-rw-r--r--ydb/docs/ru/core/_assets/groups.svg3
-rw-r--r--ydb/docs/ru/core/cluster/access.md40
-rw-r--r--ydb/docs/ru/core/cluster/toc_i.yaml2
-rw-r--r--ydb/docs/ru/core/concepts/_includes/connect.md105
-rw-r--r--ydb/docs/ru/core/concepts/auth.md37
-rw-r--r--ydb/docs/ru/core/concepts/connect.md42
-rw-r--r--ydb/docs/ru/core/concepts/toc_i.yaml4
-rw-r--r--ydb/docs/ru/core/deploy/configuration/config.md22
-rw-r--r--ydb/docs/ru/core/getting_started/_includes/auth.md2
-rw-r--r--ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_docker/01_intro.md4
-rw-r--r--ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_local.md2
-rw-r--r--ydb/docs/ru/core/reference/ydb-cli/_includes/connect.md2
-rw-r--r--ydb/docs/ru/core/reference/ydb-cli/profile/_includes/create.md2
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md16
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/example/go/_includes/run_custom.md2
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md2
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md2
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/example/python/_includes/run_custom.md2
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/_includes/static.md9
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/static.md23
-rw-r--r--ydb/docs/ru/core/toc_i.yaml1
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/alter-group.md13
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/alter-user.md14
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/create-group.md11
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/create-user.md14
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/drop-group.md12
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/drop-user.md12
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/toc_i.yaml6
28 files changed, 269 insertions, 137 deletions
diff --git a/ydb/docs/ru/core/_assets/groups.svg b/ydb/docs/ru/core/_assets/groups.svg
new file mode 100644
index 00000000000..cb8c96f2071
--- /dev/null
+++ b/ydb/docs/ru/core/_assets/groups.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="421px" height="361px" viewBox="-0.5 -0.5 421 361" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="140" y="0" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 141px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px ; white-space: pre"><span>ADMINS</span></div></div></div></div></foreignObject><text x="200" y="24" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">ADMINS</text></switch></g><path d="M 200 80 L 200 46.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 200 41.12 L 203.5 48.12 L 200 46.37 L 196.5 48.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="140" y="80" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 100px; margin-left: 141px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px ; white-space: pre"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><span>DATABASE-ADMINS</span></div></div></div></div></div></foreignObject><text x="200" y="104" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DATABASE-ADMINS</text></switch></g><path d="M 60 160 L 60 150 Q 60 140 70 140 L 160 140 Q 170 140 170 133.18 L 170 126.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 170 121.12 L 173.5 128.12 L 170 126.37 L 166.5 128.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="160" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px ; white-space: pre"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><span>ACCESS-ADMINS</span></div></div></div></div></div></div></foreignObject><text x="60" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">ACCESS-ADMINS</text></switch></g><path d="M 200 160 L 200 126.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 200 121.12 L 203.5 128.12 L 200 126.37 L 196.5 128.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="140" y="160" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 141px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px ; white-space: pre"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><span>DDL-ADMINS</span></div></div></div></div></div></div></div></foreignObject><text x="200" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DDL-ADMINS</text></switch></g><path d="M 360 80 L 360 70 Q 360 60 350 60 L 210 60 Q 200 60 200 53.18 L 200 46.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 200 41.12 L 203.5 48.12 L 200 46.37 L 196.5 48.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="300" y="80" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 100px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px ; white-space: pre"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><span>DATA-WRITERS</span></div></div></div></div></div></div></div></foreignObject><text x="360" y="104" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DATA-WRITERS</text></switch></g><path d="M 360 160 L 360 126.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 360 121.12 L 363.5 128.12 L 360 126.37 L 356.5 128.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="300" y="160" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px ; white-space: pre"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><span>DATA-READERS</span></div></div></div></div></div></div></div></foreignObject><text x="360" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DATA-READERS</text></switch></g><path d="M 360 240 L 360 206.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 360 201.12 L 363.5 208.12 L 360 206.37 L 356.5 208.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 360 240 L 360 230 Q 360 220 350 220 L 240 220 Q 230 220 230 213.18 L 230 206.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 230 201.12 L 233.5 208.12 L 230 206.37 L 226.5 208.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="300" y="240" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 260px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px ; white-space: pre"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><span>METADATA-READERS</span></div></div></div></div></div></div></div></foreignObject><text x="360" y="264" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">METADATA-READERS</text></switch></g><path d="M 200 320 L 200 206.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 200 201.12 L 203.5 208.12 L 200 206.37 L 196.5 208.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 200 320 L 200 310 Q 200 300 210 300 L 350 300 Q 360 300 360 293.18 L 360 286.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 360 281.12 L 363.5 288.12 L 360 286.37 L 356.5 288.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 200 320 L 200 270 Q 200 260 190 260 L 70 260 Q 60 260 60 250 L 60 206.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 201.12 L 63.5 208.12 L 60 206.37 L 56.5 208.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="140" y="320" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 340px; margin-left: 141px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px ; white-space: pre"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><span>USERS</span></div></div></div></div></div></div></div></foreignObject><text x="200" y="344" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">USERS</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file
diff --git a/ydb/docs/ru/core/cluster/access.md b/ydb/docs/ru/core/cluster/access.md
new file mode 100644
index 00000000000..35861aacd2b
--- /dev/null
+++ b/ydb/docs/ru/core/cluster/access.md
@@ -0,0 +1,40 @@
+# Управление доступом
+
+{{ ydb-short-name }} поддерживает аутентификацию по логину паролю. Подробнее читайте в разделе [{#T}](../concepts/auth.md).
+
+## Встроенные группы {#builtin}
+
+Кластер {{ ydb-short-name }} имеет встроенные группы, предоставляющие заранее определенные наборы ролей:
+
+Группа | Описание
+--- | ---
+`ADMINS` | Неограниченные права на всю схему кластера.
+`DATABASE-ADMINS` | Права на создание и удаление баз данных (`CreateDatabase`, `DropDatabase`).
+`ACCESS-ADMINS` | Права на управление правами других пользователей (`GrantAccessRights`).
+`DDL-ADMINS` | Права на изменение схемы баз данных (`CreateDirectory`, `CreateTable`, `WriteAttributes`, `AlterSchema`, `RemoveSchema`).
+`DATA-WRITERS` | Права на изменение данных (`UpdateRow`, `EraseRow`).
+`DATA-READERS` | Права на чтение данных (`SelectRow`).
+`METADATA-READERS` | Права на чтение метаинформации, без доступа к данным (`DescribeSchema` и `ReadAttributes`).
+`USERS` | Права на подключение к базам данных (`ConnectDatabase`).
+
+Все пользователи по умолчанию входят в группу `USERS`. Пользователь `root` по умолчанию входит в группу `ADMINS`.
+
+Ниже показано, как группы наследуют разрешения друг друга. Например, в `DATA_WRITERS` входят все разрешения `DATA_READERS`:
+
+![groups](../_assets/groups.svg)
+
+## Управление группами {#groups}
+
+Для создания, изменения или удаления группы воспользуйтесь операторами YQL:
+
+* [{#T}](../yql/reference/syntax/create-group.md).
+* [{#T}](../yql/reference/syntax/alter-group.md).
+* [{#T}](../yql/reference/syntax/drop-group.md).
+
+## Управление пользователями {#users}
+
+Для создания, изменения или удаления пользователя воспользуйтесь операторами YQL:
+
+* [{#T}](../yql/reference/syntax/create-user.md).
+* [{#T}](../yql/reference/syntax/alter-user.md).
+* [{#T}](../yql/reference/syntax/drop-user.md).
diff --git a/ydb/docs/ru/core/cluster/toc_i.yaml b/ydb/docs/ru/core/cluster/toc_i.yaml
index b2ade5eb578..ed0c1f762ac 100644
--- a/ydb/docs/ru/core/cluster/toc_i.yaml
+++ b/ydb/docs/ru/core/cluster/toc_i.yaml
@@ -1,6 +1,8 @@
items:
- name: Развертывание
include: { mode: link, path: ../deploy/toc_p.yaml }
+- name: Управление доступом
+ href: access.md
- name: Обслуживание дисковой подсистемы кластера
include: { mode: link, path: ../maintenance/manual/toc_p.yaml }
- name: Встроенный UI
diff --git a/ydb/docs/ru/core/concepts/_includes/connect.md b/ydb/docs/ru/core/concepts/_includes/connect.md
deleted file mode 100644
index 45fcc4bde55..00000000000
--- a/ydb/docs/ru/core/concepts/_includes/connect.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Соединение с базой данных
-
-{% include [overlay/ui.md](connect_overlay/ui.md) %}
-
-Для соединения с БД {{ ydb-short-name }} из {{ ydb-short-name }} CLI или приложения, использующего {{ ydb-short-name }} SDK, вам потребуется предоставить следующие данные:
-
-1. Эндпоинт.
-1. Аутентификационная информация.
-1. Путь базы данных.
-
-## Эндпоинт {#endpoint}
-
-Эндпоинт (endpoint) - строка в формате `protocol://host:port`, предоставляемая владельцем кластера {{ ydb-short-name }} для корректной маршрутизации запросов клиента к его базам данных через сетевую инфраструктуру и установки сетевого соединения. Для облачных баз данных endpoint показывается в консоли управления на странице требуемой БД, а также обычно может быть получен через CLI облачного поставщика. В корпоративных окружениях имена эндпоинтов {{ ydb-short-name }} предоставляются командой администраторов или также могут быть получены в консоли управления внутренним облаком.
-
-{% include [overlay/endpoint.md](connect_overlay/endpoint.md) %}
-
-Примеры:
-
-* `grpc://localhost:7135` — протокол обмена данными без шифрования (gRPC), сервер запущен на том же хосте что и клиент, принимает соединения на порту 7135.
-* `grpcs://ydb.somecorp-int.ru` — протокол обмена данными с шифрованием (gRPCs), сервер запущен на хосте ydb.somecorp-int.ru в изолированной корпоративной интрасети компании «SomeCorp», принимает соединения на порту YDB по умолчанию 2135.
-* `grpcs://ydb.serverless.yandexcloud.net:2135` — протокол обмена данными с шифрованием (gRPCs), публичный сервер Serverless YDB {{ yandex-cloud }} ydb.serverless.yandexcloud.net, порт 2135.
-
-{% include [overlay/endpoint_example.md](connect_overlay/endpoint_example.md) %}
-
-## Аутентификационная информация {#auth}
-
-После успешной установки сетевого соединения сервер принимает к обработке запросы от клиента, в которых передается аутентификационная информация. На ее основании сервер определяет учетную запись (аккаунт) клиента и проверяет доступ на выполнение запроса.
-
-Основная схема работы предполагает наличие отдельной системы управления учетными данными и доступами - [IAM (Identity and Access Management)](https://en.wikipedia.org/wiki/Identity_management). IAM выдает привязанный к учетной записи токен, который передается клиентом {{ ydb-short-name }} на сервер вместе с запросом. Сервер {{ ydb-short-name }} обращается к IAM для проверки токена и доступа на выполнение запрошенной операции и кеширует результат.
-
-Также {{ ydb-short-name }} поддерживает аутентификацию по логину и паролю без взаимодействий с IAM, но практическое применение такой схемы ограничено простыми конфигурациями, в первую очередь локальными.
-
-### Режимы аутентификации {#auth-modes}
-
-Клиент {{ ydb-short-name }} (CLI или SDK) поддерживают следующие режимы выбора токена для передачи в запросах:
-
-* **Anonymous** — в запросах передается пустой токен.
-* **Access Token** — параметром для клиента (SDK или CLI) задается фиксированный токен, который передается в запросы.
-* **Refresh Token** — параметром для клиента (SDK или CLI) задается [OAuth токен](https://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them/) персональной учетной записи, на основании которого клиент периодически в фоновом режиме обращается к IAM API для ротации (получения следующего) токена, передаваемого в запросы.
-* **Service Account Key** — параметром для клиента (SDK или CLI) задаются атрибуты сервисной учетной записи и ключ для подписи, на основании которых клиент периодически в фоновом режиме обращается к IAM API для ротации (получения следующего) токена, передаваемого в запросы.
-* **Metadata** — клиент (SDK или CLI) периодически обращается к локальному сервису для ротации (получения следующего) токена, передаваемого в запросы.
-
-Любой обладатель валидного токена может получить доступ на выполнение операций, поэтому главная задача системы безопасности — обеспечение секретности токена и предотвращение его компрометации.
-
-Режимы аутентификации с ротацией токена **Refresh Token** и **Service Account Key** обеспечивают больший уровень безопасности по сравнению с режимом с фиксированным токеном **Access Token**, так как на сервер {{ ydb-short-name }} по сети передаются только короткоживущие секреты.
-
-Максимальная безопасность и производительность обеспечивается при использовании режима **Metadata**, так как он исключает необходимость работы с секретами при развертывании приложения, а также позволяет обратиться к IAM и закешировать токен заранее, до запуска приложения.
-
-При выборе режима аутентификации среди поддерживаемых сервером и окружением, следует руководствоваться следующими рекомендациями:
-
-* **Anonymous** обычно применяется на самостоятельно разворачиваемых локальных кластерах {{ ydb-short-name }}, недоступных по сети.
-* **Access Token** применяется при отсутствии поддержки других режимов на стороне сервера или в настроечных/отладочных целях. Он не требует взаимодействий клиента с IAM. Однако, если IAM поддерживает API для ротации токенов, то обычно выдаваемые таким IAM фиксированные токены имеют короткий срок жизни, что вынуждает регулярно обновлять их в IAM вручную заново.
-* **Refresh Token** может применяться при выполнении разовых ручных операций под персональной учетной записью, например, связанных с обслуживанием данных в БД, выполнением ad-hoc операций в CLI, или запусками приложений с рабочей станции. Такой токен можно получить вручную в IAM один раз на долгий срок и сохранить в переменной окружения на личной рабочей станции для автоматического применения при запуске CLI без дополнительных параметров аутентификации.
-* **Service Account Key** применяется в первую очередь для приложений, рассчитанных на эксплуатацию в окружениях, где поддерживается режим **Metadata**, при их тестировании вне таких окружений (например, на рабочей станции). Также он может применяться для приложений вне таких окружений, работая как аналог **Refresh Token** для сервисных учетных записей. В отличие от персональной учетной записи, объекты доступа и роли сервисной учетной записи могут быть ограничены.
-* **Metadata** применяется при разворачивании приложений в облаках. В настоящее время этот режим поддерживается на виртуальных машинах и в {{ sf-name }} {{ yandex-cloud }}.
-
-Токен для указания в параметрах может быть получен в системе IAM, с которой связана конкретная установка {{ ydb-short-name }}. В частности, для сервиса {{ ydb-short-name }} в {{ yandex-cloud }} применяется Yandex.Passport OAuth и сервисные аккаунты {{ yandex-cloud }}. При использовании {{ ydb-short-name }} в корпоративных контекстах могут применяться стандартные для данной организации системы централизованной аутентификации.
-
-{% include [overlay/auth_choose.md](connect_overlay/auth_choose.md) %}
-
-При использовании режимов, предусматривающих обращение клиента {{ ydb-short-name }} к IAM, дополнительно может быть задан URL IAM, предоставляющий API выдачи токенов. По умолчанию в существующих SDK и CLI производится попытка обращения к API IAM {{ yandex-cloud }}, размещенному на `iam.api.cloud.yandex.net:443`.
-
-## Путь базы данных {#database}
-
-Путь базы данных (`database`) - строка, определяющая где на кластере {{ ydb-short-name }} находится база данных, к которой адресован запрос. Имеет структуру [пути к файлу]{% if lang == "en" %}(https://en.wikipedia.org/wiki/Path_(computing)){% endif %}{% if lang == "ru" %}(https://ru.wikipedia.org/wiki/Путь_к_файлу){% endif %}, с использованием символа `/` в качестве разделителя. Начинается всегда с символа `/`.
-
-На кластере {{ ydb-short-name }} может быть развернуто множество баз данных, и их пути определяются конфигурацией кластера. Как и эндпоинт, для облачных баз данных `database` показывается в консоли управления на странице требуемой БД, а также обычно может быть получен через CLI облачного поставщика.
-
-При использовании облачных решений базы данных на кластере {{ ydb-short-name }} создаются и размещаются в режиме самообслуживания, не требуя участия владельца и администраторов кластера.
-
-{% include [overlay/database.md](connect_overlay/database.md) %}
-
-{% note warning %}
-
-Приложения не должны как-либо интерпретировать количество и значение каталогов в `database`, так как они определяются конфигурацией кластера {{ ydb-short-name }}. Например, при работе с сервисом {{ ydb-short-name }} в {{ yandex-cloud }} `database` сейчас имеет структуру `region_name/cloud_id/database_id`, однако этот формат может быть изменен в будущем для новых БД.
-
-{% endnote %}
-
-Примеры:
-
-* `/ru-central1/b1g8skpblkos03malf3s/etn01q5ko6sh271beftr` — база данных {{ yandex-cloud }} с идентификатором `etn01q3ko8sh271beftr` в облаке `b1g8skpbljhs03malf3s`, развернутая в регионе `ru-central1`.
-* `/local` — база данных по умолчанию при самостоятельном развертывании [с использованием Docker](../../getting_started/self_hosted/ydb_docker.md).
-
-{% include [overlay/database_example.md](connect_overlay/database_example.md) %}
-
-## Конфигурация параметров соединения на клиенте {#client-config}
-
-В специализированных статьях описано, как определять параметры соединения на клиенте:
-
-* [Соединение с БД и аутентификация в {{ ydb-short-name }} CLI](../../reference/ydb-cli/connect.md).
-* [Аутентификация в {{ ydb-short-name }} SDK](../../reference/ydb-sdk/auth.md).
-
-## Дополнительная информация {#addition}
-
-### Корневой сертификат для TLS {#tls-cert}
-
-При использовании протокола с шифрованием ([gRPC over TLS](https://grpc.io/docs/guides/auth/), или grpcs) продолжение сетевого соединения возможно только в том случае, если клиент уверен в том, что ему действительно отвечает подлинный сервер, с которым он пытается установить соединение, а не кто-то посередине, перехвативший запрос в сети. Это обеспечивается проверкой через [цепочки доверия]{% if lang == "en" %}(https://en.wikipedia.org/wiki/Chain_of_trust){% endif %}{% if lang == "ru" %}(https://ru.wikipedia.org/wiki/Цепочка_доверия){% endif %}, для работы которой на клиенте должен быть установлен т.н. корневой сертификат.
-
-В состав операционных систем, на которых запускается клиент, уже входит набор корневых сертификатов от основных мировых центров сертификации. Однако, владелец кластера {{ ydb-short-name }} может использовать свой центр сертификации, не связанный ни с одним из мировых, что часто встречается в корпоративных окружениях, и почти всегда применяется при самостоятельном развертывании кластеров с поддержкой шифрования на соединениях. В этом случае владелец кластера должен каким-либо образом передать свой корневой сертификат для использования на стороне клиента. Такой сертификат может быть установлен в хранилище сертификатов операционной системы, где запускается клиент (вручную пользователем или корпоративной командой администраторов ОС), или встроен в состав самого клиента (как это сделано для {{ yandex-cloud }} в {{ ydb-short-name }} CLI и SDK).
-
-### API получения токенов IAM {#token-refresh-api}
-
-Для ротации токенов {{ ydb-short-name }} SDK и CLI используют gRPC-запрос к {{ yandex-cloud }} IAM API [IamToken - create]{% if lang == "en" %}(https://cloud.yandex.com/en/docs/iam/api-ref/grpc/iam_token_service#Create){% endif %}{% if lang == "ru" %}(https://cloud.yandex.ru/docs/iam/api-ref/grpc/iam_token_service#Create){% endif %}. В режиме **Refresh Token** заданный параметром OAuth токен передается в атрибуте `yandex_passport_oauth_token`. В режиме **Service Account Key** на основании заданных атрибутов сервисной учетной записи и ключа шифрования формируется короткоживущий JWT-токен и передается в атрибуте `jwt`. Исходный код формирования JWT-токена доступен в составе SDK (например, метод `get_jwt()` в [коде на Python](https://github.com/ydb-platform/ydb-python-sdk/blob/main/ydb/iam/auth.py)).
-
-{{ ydb-short-name }} SDK и CLI позволяют подменить хост для обращения к API получения токенов, что дает возможность реализовать аналогичный API в корпоративных контекстах.
diff --git a/ydb/docs/ru/core/concepts/auth.md b/ydb/docs/ru/core/concepts/auth.md
new file mode 100644
index 00000000000..6f8b229d5ae
--- /dev/null
+++ b/ydb/docs/ru/core/concepts/auth.md
@@ -0,0 +1,37 @@
+# Аутентификация
+
+После успешной установки сетевого соединения сервер принимает к обработке запросы от клиента, в которых передается аутентификационная информация. На ее основании сервер определяет учетную запись (аккаунт) клиента и проверяет доступ на выполнение запроса.
+
+Поддерживаются следующие режимы аутентификации:
+
+* Анонимный доступ — включен по умолчанию и доступен сразу после [установки кластера](../deploy/index.md).
+* Аутентификация с использованием стороннего IAM-провайдера, например [Yandex Identity and Access Management](https://cloud.yandex.ru/docs/iam/).
+* Аутентификация по [логину и паролю](#static-credentions).
+
+{% include [overlay/auth_choose.md](_includes/connect_overlay/auth_choose.md) %}
+
+## Аутентификация по логину и паролю {#static-credentions}
+
+Процесс аутентификации по логину и паролю включает следующие шаги:
+
+1. Клиент обращается к БД и передает логин и пароль пользователя сервису аутентификации {{ ydb-short-name }}.
+
+ Имя пользователя может содержать только строчные буквы латинского алфавита и цифры. Требования к паролю не предъявляются, пароль может быть пустым.
+1. Сервис аутентификации передает аутентификационные данные в компонент аутентификации {{ ydb-short-name }}.
+1. Компонент валидирует аутентификационные данные, при успешном сопоставлении создает токен и возвращает его сервису аутентификации.
+
+ Использование токена ускоряет процесс аутентификации и повышает безопасность. Время жизни токена по умолчанию 12 часов. Для ротации токенов YDB SDK самостоятельно обращается к сервису аутентификации.
+
+ Имя пользователя и хеш пароля хранятся в таблице внутри компонента аутентификации. Пароль хеширован методом [Argon2](https://ru.wikipedia.org/wiki/Argon2). В режиме аутентификации по логину и паролю доступ к таблице имеет только администратор системы.
+1. Сервис аутентификации возвращает токен клиенту.
+1. Клиент обращается к БД, передавая в качестве аутентификационной информации токен.
+
+Для включения аутентификации по логину и паролю укажите значение `true` для ключа `enforce_user_token_requirement` в [конфигурационном файле](../deploy/configuration/config.md#auth) кластера.
+
+Об управлении ролями и пользователями читайте в [{#T}](../cluster/access.md).
+
+<!-- ### API получения токенов IAM {#token-refresh-api}
+
+Для ротации токенов {{ ydb-short-name }} SDK и CLI используют gRPC-запрос к {{ yandex-cloud }} IAM API [IamToken - create]{% if lang == "en" %}(https://cloud.yandex.com/en/docs/iam/api-ref/grpc/iam_token_service#Create){% endif %}{% if lang == "ru" %}(https://cloud.yandex.ru/docs/iam/api-ref/grpc/iam_token_service#Create){% endif %}. В режиме **Refresh Token** заданный параметром OAuth токен передается в атрибуте `yandex_passport_oauth_token`. В режиме **Service Account Key** на основании заданных атрибутов сервисной учетной записи и ключа шифрования формируется короткоживущий JWT-токен и передается в атрибуте `jwt`. Исходный код формирования JWT-токена доступен в составе SDK (например, метод `get_jwt()` в [коде на Python](https://github.com/ydb-platform/ydb-python-sdk/blob/main/ydb/iam/auth.py)).
+
+{{ ydb-short-name }} SDK и CLI позволяют подменить хост для обращения к API получения токенов, что дает возможность реализовать аналогичный API в корпоративных контекстах. -->
diff --git a/ydb/docs/ru/core/concepts/connect.md b/ydb/docs/ru/core/concepts/connect.md
index c0cae8a17ba..5a23dfd9992 100644
--- a/ydb/docs/ru/core/concepts/connect.md
+++ b/ydb/docs/ru/core/concepts/connect.md
@@ -1,2 +1,42 @@
+# Соединение с БД
-{% include [connect.md](_includes/connect.md) %}
+Для соединения с БД {{ ydb-short-name }} из {{ ydb-short-name }} CLI или приложения, использующего {{ ydb-short-name }} SDK, необходимо указать [эндпоинт](#endpoint) и [путь базы данных](#database).
+
+## Эндпоинт {#endpoint}
+
+Эндпоинт (endpoint) - строка в формате `protocol://host:port`, предоставляемая владельцем кластера {{ ydb-short-name }} для корректной маршрутизации запросов клиента к его базам данных через сетевую инфраструктуру и установки сетевого соединения. Для облачных баз данных endpoint показывается в консоли управления на странице требуемой БД, а также обычно может быть получен через CLI облачного поставщика. В корпоративных окружениях имена эндпоинтов {{ ydb-short-name }} предоставляются командой администраторов или также могут быть получены в консоли управления внутренним облаком.
+
+{% include [overlay/endpoint.md](_includes/connect_overlay/endpoint.md) %}
+
+Примеры:
+
+* `grpc://localhost:7135` — протокол обмена данными без шифрования (gRPC), сервер запущен на том же хосте что и клиент, принимает соединения на порту 7135.
+* `grpcs://ydb.example.com` — протокол обмена данными с шифрованием (gRPCs), сервер запущен на хосте ydb.example.com в изолированной корпоративной интрасети, принимает соединения на порту YDB по умолчанию 2135.
+* `grpcs://ydb.serverless.yandexcloud.net:2135` — протокол обмена данными с шифрованием (gRPCs), публичный сервер Serverless YDB {{ yandex-cloud }} ydb.serverless.yandexcloud.net, порт 2135.
+
+## Путь базы данных {#database}
+
+Путь базы данных (`database`) - строка, определяющая где на кластере {{ ydb-short-name }} находится база данных, к которой адресован запрос. Имеет структуру [пути к файлу]{% if lang == "en" %}(https://en.wikipedia.org/wiki/Path_(computing)){% endif %}{% if lang == "ru" %}(https://ru.wikipedia.org/wiki/Путь_к_файлу){% endif %}, с использованием символа `/` в качестве разделителя. Начинается всегда с символа `/`.
+
+На кластере {{ ydb-short-name }} может быть развернуто множество баз данных, и их пути определяются конфигурацией кластера. Как и эндпоинт, для облачных баз данных `database` показывается в консоли управления на странице требуемой БД, а также обычно может быть получен через CLI облачного поставщика.
+
+При использовании облачных решений базы данных на кластере {{ ydb-short-name }} создаются и размещаются в режиме самообслуживания, не требуя участия владельца и администраторов кластера.
+
+{% include [overlay/database.md](_includes/connect_overlay/database.md) %}
+
+{% note warning %}
+
+Приложения не должны как-либо интерпретировать количество и значение каталогов в `database`, так как они определяются конфигурацией кластера {{ ydb-short-name }}. Например, при работе с сервисом {{ ydb-short-name }} в {{ yandex-cloud }} `database` сейчас имеет структуру `region_name/cloud_id/database_id`, однако этот формат может быть изменен в будущем для новых БД.
+
+{% endnote %}
+
+Примеры:
+
+* `/ru-central1/b1g8skpblkos03malf3s/etn01q5ko6sh271beftr` — база данных {{ yandex-cloud }} с идентификатором `etn01q3ko8sh271beftr` в облаке `b1g8skpbljhs03malf3s`, развернутая в регионе `ru-central1`.
+* `/local` — база данных по умолчанию при самостоятельном развертывании [с использованием Docker](../getting_started/self_hosted/ydb_docker.md).
+
+## Корневой сертификат для TLS {#tls-cert}
+
+При использовании протокола с шифрованием ([gRPC over TLS](https://grpc.io/docs/guides/auth/), или grpcs) продолжение сетевого соединения возможно только в том случае, если клиент уверен в том, что ему действительно отвечает подлинный сервер, с которым он пытается установить соединение, а не кто-то посередине, перехвативший запрос в сети. Это обеспечивается проверкой через [цепочки доверия]{% if lang == "en" %}(https://en.wikipedia.org/wiki/Chain_of_trust){% endif %}{% if lang == "ru" %}(https://ru.wikipedia.org/wiki/Цепочка_доверия){% endif %}, для работы которой на клиенте должен быть установлен т.н. корневой сертификат.
+
+В состав операционных систем, на которых запускается клиент, уже входит набор корневых сертификатов от основных мировых центров сертификации. Однако, владелец кластера {{ ydb-short-name }} может использовать свой центр сертификации, не связанный ни с одним из мировых, что часто встречается в корпоративных окружениях, и почти всегда применяется при самостоятельном развертывании кластеров с поддержкой шифрования на соединениях. В этом случае владелец кластера должен каким-либо образом передать свой корневой сертификат для использования на стороне клиента. Такой сертификат может быть установлен в хранилище сертификатов операционной системы, где запускается клиент (вручную пользователем или корпоративной командой администраторов ОС), или встроен в состав самого клиента (как это сделано для {{ yandex-cloud }} в {{ ydb-short-name }} CLI и SDK).
diff --git a/ydb/docs/ru/core/concepts/toc_i.yaml b/ydb/docs/ru/core/concepts/toc_i.yaml
index d5799ce1bd5..8ac9dac2cf5 100644
--- a/ydb/docs/ru/core/concepts/toc_i.yaml
+++ b/ydb/docs/ru/core/concepts/toc_i.yaml
@@ -1,7 +1,9 @@
items:
- { name: Обзор, href: index.md }
- { name: Термины и определения, href: databases.md }
-- { name: Соединение с БД и аутентификация, href: connect.md }
+- { name: Соединение с БД, href: connect.md }
+- name: Аутентификация
+ href: auth.md
- name: Модель данных и схема
include: { path: datamodel/toc_p.yaml, mode: link }
- { name: Режимы работы Serverless и Dedicated, href: serverless_and_dedicated.md }
diff --git a/ydb/docs/ru/core/deploy/configuration/config.md b/ydb/docs/ru/core/deploy/configuration/config.md
index f8425568333..2ce92dbae3e 100644
--- a/ydb/docs/ru/core/deploy/configuration/config.md
+++ b/ydb/docs/ru/core/deploy/configuration/config.md
@@ -125,15 +125,17 @@ hosts:
## domains_config - Домен кластера {#domains-config}
-Данный раздел содержит конфигурацию корневого домена кластера YDB, включая конфигурации Blob Storage (хранилища бинарных объектов) и State Storage (хранилища состояний).
+Данный раздел содержит конфигурацию корневого домена кластера YDB, включая [конфигурации Blob Storage](#domains-blob) (хранилища бинарных объектов), [State Storage](#domains-state) (хранилища состояний) и [аутентификации](#auth).
**Синтаксис**
+
``` yaml
domains_config:
domain:
- name: <имя корневого домена>
storage_pool_types: <конфигурация Blob Storage>
state_storage: <конфигурация State Storage>
+ security_config: <конфигурация аутентификации>
```
### Конфигурация Blob Storage {#domains-blob}
@@ -205,6 +207,24 @@ state_storage:
Для `nto_select` должны использоваться нечетные числа, так как использование четных чисел не улучшает отказоустойчивость по сравнению с ближайшим меньшим нечетным числом.
+### Конфигурация аутентификации {#auth}
+
+[Режим аутентификации](../../concepts/auth.md) на кластере {{ ydb-short-name }} задается в разделе `domains_config.security_config`.
+
+Синтаксис:
+
+``` yaml
+domains_config:
+ ...
+ security_config:
+ enforce_user_token_requirement: Bool
+ ...
+```
+
+Ключ | Описание
+--- | ---
+`enforce_user_token_requirement` | Требовать токен пользователя.</br>Допустимые значения:</br><ul><li>`false` — режим аутентификации анонимный, токен не требуется;</li><li>`true` — режим аутентификации по логину и паролю, для выполнения запроса требуется валидный токен пользователя.</li></ul>
+
### Примеры {#domains-examples}
{% list tabs %}
diff --git a/ydb/docs/ru/core/getting_started/_includes/auth.md b/ydb/docs/ru/core/getting_started/_includes/auth.md
index 9141f7fc80a..ef2bc74c203 100644
--- a/ydb/docs/ru/core/getting_started/_includes/auth.md
+++ b/ydb/docs/ru/core/getting_started/_includes/auth.md
@@ -1,6 +1,6 @@
# Аутентификация - Начало работы
-Разворачиваемая сценариями самостоятельного развертывания локальная база данных YDB не требует аутентификации, то есть работает в [анонимном режиме](../../concepts/connect.md#auth-modes).
+Разворачиваемая сценариями самостоятельного развертывания локальная база данных YDB не требует аутентификации, то есть работает в [анонимном режиме](../../concepts/auth.md).
Полная информация о всех доступных способах аутентификации приведена в статье [Соединение с базой данных](../../concepts/connect.md) в разделе Концепции.
diff --git a/ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_docker/01_intro.md b/ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_docker/01_intro.md
index 0448289c857..07a342619c2 100644
--- a/ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_docker/01_intro.md
+++ b/ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_docker/01_intro.md
@@ -12,12 +12,12 @@
- [Эндпоинт](../../../../concepts/connect.md#endpoint): `grpc://localhost:2136`
- [Путь базы данных](../../../../concepts/connect.md#database): `/local`
- - [Аутентификация](../../../../concepts/connect.md#auth-modes): Анонимная (без аутентификации)
+ - [Аутентификация](../../../../concepts/auth.md): Анонимная (без аутентификации)
- gRPCs/TLS
- [Эндпоинт](../../../../concepts/connect.md#endpoint): `grpcs://localhost:2135`
- [Путь базы данных](../../../../concepts/connect.md#database): `/local`
- - [Аутентификация](../../../../concepts/connect.md#auth-modes): Анонимная (без аутентификации)
+ - [Аутентификация](../../../../concepts/auth.md): Анонимная (без аутентификации)
{% endlist %}
diff --git a/ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_local.md b/ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_local.md
index 7a48650ab87..012f252abae 100644
--- a/ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_local.md
+++ b/ydb/docs/ru/core/getting_started/self_hosted/_includes/ydb_local.md
@@ -8,7 +8,7 @@
- [Эндпоинт](../../../concepts/connect.md#endpoint): `grpc://localhost:2136`
- [Путь базы данных](../../../concepts/connect.md#database): `/Root/test`
-- [Аутентификация](../../../concepts/connect.md#auth-modes): Анонимная (без аутентификации)
+- [Аутентификация](../../../concepts/auth.md): Анонимная (без аутентификации)
## Установка {#install}
diff --git a/ydb/docs/ru/core/reference/ydb-cli/_includes/connect.md b/ydb/docs/ru/core/reference/ydb-cli/_includes/connect.md
index ccae8c378e6..bec65700fab 100644
--- a/ydb/docs/ru/core/reference/ydb-cli/_includes/connect.md
+++ b/ydb/docs/ru/core/reference/ydb-cli/_includes/connect.md
@@ -2,7 +2,7 @@
Большинство команд {{ ydb-short-name }} CLI относится к операциям над базой данных {{ ydb-short-name }} и требует соединения с ней для исполнения.
-{{ ydb-short-name }} CLI определяет, с какой БД необходимо соединиться и какой [режим аутентификации](../../../concepts/connect.md#auth-modes) использовать из следующих источников (в порядке убывания приоритета):
+{{ ydb-short-name }} CLI определяет, с какой БД необходимо соединиться и какой [режим аутентификации](../../../concepts/auth.md) использовать из следующих источников (в порядке убывания приоритета):
1. Командной строки
2. Профиля, выбранного опцией командной строки `--profile`
diff --git a/ydb/docs/ru/core/reference/ydb-cli/profile/_includes/create.md b/ydb/docs/ru/core/reference/ydb-cli/profile/_includes/create.md
index dfd9095c516..cafaa17530e 100644
--- a/ydb/docs/ru/core/reference/ydb-cli/profile/_includes/create.md
+++ b/ydb/docs/ru/core/reference/ydb-cli/profile/_includes/create.md
@@ -95,7 +95,7 @@
Если вы не уверены какой режим аутентификации выбрать, воспользуйтесь рецептом из статьи [Аутентификация](../../../../getting_started/auth.md) в разделе "Начало работы".
- Все доступные методы аутентификации описаны в статье [Соединение с БД и аутентификация](../../../../concepts/connect.md#auth-modes). Набор методов и текст подсказок может отличаться от приведенного в данном примере.
+ Все доступные методы аутентификации описаны в статье [{#T}](../../../../concepts/auth.md). Набор методов и текст подсказок может отличаться от приведенного в данном примере.
Если выбранный вами метод подразумевает указание дополнительного параметра, вам будет предложено его ввести. Например, если вы выбрали `4` (Use service account key file):
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md
index c5c238a6f4f..2feccf74364 100644
--- a/ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md
+++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md
@@ -1,10 +1,10 @@
# Аутентификация в SDK
-Как описано в статье о [подключении к серверу {{ ydb-short-name }}](../../../concepts/connect.md), клиент с каждым запросом должен отправить [аутентификационный токен](../../../concepts/connect.md#auth). Аутентификационный токен проверяется сервером и, в случае успешной аутентификации, запрос авторизуется и выполняется, иначе возвращается ошибка `Unauthenticated`.
+Как описано в статье о [подключении к серверу {{ ydb-short-name }}](../../../concepts/connect.md), клиент с каждым запросом должен отправить [аутентификационный токен](../../../concepts/auth.md). Аутентификационный токен проверяется сервером и, в случае успешной аутентификации, запрос авторизуется и выполняется, иначе возвращается ошибка `Unauthenticated`.
{{ ydb-short-name }} SDK использует объект, отвечающий за генерацию таких токенов. SDK предоставляет встроенные cпособы получения такого объекта:
-1. Методы с явной передачей параметров, каждый из методов реализует один из [режимов аутентификации](../../../concepts/connect.md#auth-modes).
+1. Методы с явной передачей параметров, каждый из методов реализует один из [режимов аутентификации](../../../concepts/auth.md).
2. Метод определения режима аутентификации и необходимых параметров из переменных окружения.
Обычно объект генерации токенов создается перед инициализацией драйвера {{ ydb-short-name }} и передается параметром в его конструктор. C++ и Go SDK дополнительно позволяют через один драйвер работать с несколькими БД и объектами генерации токенов.
@@ -19,7 +19,7 @@
- Python
- [Режим](../../../concepts/connect.md#auth-modes) | Метод
+ Режим | Метод
----- | -----
Anonymous | [`ydb.AnonymousCredentials()`](https://github.com/yandex-cloud/ydb-python-sdk/tree/master/examples/anonymous-credentials)
Access Token | [`ydb.AccessTokenCredentials( token )`](https://github.com/yandex-cloud/ydb-python-sdk/tree/master/examples/access-token-credentials)
@@ -29,7 +29,7 @@
- Go
- [Режим](../../../concepts/connect.md#auth-modes) | Пакет | Метод
+ Режим | Пакет | Метод
----- | ----- | ----
Anonymous | [ydb-go-sdk/v3](https://github.com/ydb-platform/ydb-go-sdk/blob/master/go.mod) | [`ydb.WithAnonymousCredentials()`](https://github.com/ydb-platform/ydb-go-examples/tree/master/cmd/auth/anonymous_credentials)
Access Token | [ydb-go-sdk/v3](https://github.com/ydb-platform/ydb-go-sdk/blob/master/go.mod) | [`ydb.WithAccessTokenCredentials( token )`](https://github.com/ydb-platform/ydb-go-examples/tree/master/cmd/auth/access_token_credentials)
@@ -39,7 +39,7 @@
- Java
- [Режим](../../../concepts/connect.md#auth-modes) | Метод
+ Режим | Метод
----- | -----
Anonymous | [`com.yandex.ydb.core.auth.NopAuthProvider.INSTANCE`](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/anonymous_credentials)
Access Token | [`com.yandex.ydb.auth.iam.CloudAuthProvider.newAuthProvider(`</br>&nbsp;&nbsp;&nbsp;&nbsp;`yandex.cloud.sdk.auth.provider.IamTokenCredentialProvider`</br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`.builder()`</br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`.token(accessToken)`</br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`.build()`</br>`);`](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/access_token_credentials)
@@ -49,7 +49,7 @@
- Node.js
- [Режим](../../../concepts/connect.md#auth-modes) | Метод
+ Режим | Метод
----- | -----
Anonymous | [`new 'ydb-sdk'.AnonymousAuthService()`](https://github.com/ydb-platform/ydb-nodejs-sdk/tree/main/examples/auth/anonymous-credentials)
Access Token | [`new 'ydb-sdk'.TokenAuthService( accessToken, database )`](https://github.com/ydb-platform/ydb-nodejs-sdk/tree/main/examples/auth/access-token-credentials)
@@ -59,8 +59,8 @@
- Rust
- [Режим](../../../concepts/connect.md#auth-modes) | Метод
- ----- | -----
+ Режим | Метод
+ ----- | -----
Anonymous | ydb::StaticToken("")
Access Token | ydb::StaticToken(token)
Metadata | ydb::GCEMetadata, ydb::YandexMetadata
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/go/_includes/run_custom.md b/ydb/docs/ru/core/reference/ydb-sdk/example/go/_includes/run_custom.md
index bd254cb43fd..c7659b15542 100644
--- a/ydb/docs/ru/core/reference/ydb-sdk/example/go/_includes/run_custom.md
+++ b/ydb/docs/ru/core/reference/ydb-sdk/example/go/_includes/run_custom.md
@@ -1,6 +1,6 @@
Для выполнения примера с использованием любой доступной базы данных YDB вам потребуется знать [эндпоинт](../../../../../concepts/connect.md#endpoint) и [путь базы данных](../../../../../concepts/connect.md#database).
-Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../../concepts/connect.md#auth-modes) и получить секреты - токен или логин/пароль.
+Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../../concepts/auth.md) и получить секреты - токен или логин/пароль.
Выполните команду по следующему образцу:
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md b/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md
index 26b44ddf2db..f13482889c6 100644
--- a/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md
+++ b/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md
@@ -1,6 +1,6 @@
Для выполнения примера с использованием любой доступной базы данных YDB вам потребуется знать [эндпоинт](../../../../../concepts/connect.md#endpoint) и [путь базы данных](../../../../../concepts/connect.md#database).
-Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../../concepts/connect.md#auth-modes) и получить секреты - токен или логин/пароль.
+Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../../concepts/auth.md) и получить секреты - токен или логин/пароль.
Выполните команду по следующему образцу:
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md b/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md
index ea42ad5aadc..3a46fa0a687 100644
--- a/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md
+++ b/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md
@@ -27,7 +27,7 @@ git clone https://github.com/yandex-cloud/ydb-java-sdk
Основные параметры инициализации драйвера
* Cтрока подключения с информацией об [эндпоинте](../../../../concepts/connect.md#endpoint) и [базе данных](../../../../concepts/connect.md#database). Единственный обязательный параметр.
-* Провайдер [аутенфикации](../../auth.md##auth-provider). В случае отсутствия прямого указания будет использоваться [анонимное подключение](../../../../concepts/connect.md#auth-modes).
+* Провайдер [аутенфикации](../../auth.md##auth-provider). В случае отсутствия прямого указания будет использоваться [анонимное подключение](../../../../concepts/auth.md).
* Настройки [пула сессий](../../recipes/session_pool_limit/index.md)
Фрагмент кода приложения для инициализации драйвера:
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/python/_includes/run_custom.md b/ydb/docs/ru/core/reference/ydb-sdk/example/python/_includes/run_custom.md
index b592d46ad1f..6352f3f580d 100644
--- a/ydb/docs/ru/core/reference/ydb-sdk/example/python/_includes/run_custom.md
+++ b/ydb/docs/ru/core/reference/ydb-sdk/example/python/_includes/run_custom.md
@@ -1,6 +1,6 @@
Для выполнения примера с использованием любой доступной базы данных YDB вам потребуется знать [эндпоинт](../../../../../concepts/connect.md#endpoint) и [путь базы данных](../../../../../concepts/connect.md#database).
-Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../../concepts/connect.md#auth-modes) и получить секреты - токен или логин/пароль.
+Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../../concepts/auth.md) и получить секреты - токен или логин/пароль.
Выполните команду по следующему образцу:
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/_includes/static.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/_includes/static.md
deleted file mode 100644
index 4aa76e771df..00000000000
--- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/_includes/static.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Аутентификация при помощи логина и пароля
-
-{% include [work in progress message](../../_includes/addition.md) %}
-
-Ниже приведены примеры кода аутентификации при помощи логина и пароля в разных {{ ydb-short-name }} SDK.
-
-{% list tabs %}
-
-{% endlist %}
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/static.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/static.md
index 6ee75b91869..4939dade65a 100644
--- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/static.md
+++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth/static.md
@@ -1,2 +1,23 @@
+# Аутентификация при помощи логина и пароля
-{% include [index.md](_includes/static.md) %}
+{% include [work in progress message](../_includes/addition.md) %}
+
+Ниже приведены примеры кода аутентификации при помощи логина и пароля в разных {{ ydb-short-name }} SDK.
+
+{% list tabs %}
+
+- C++
+
+ ```c++
+ auto driverConfig = NYdb::TDriverConfig()
+ .SetEndpoint(endpoint)
+ .SetDatabase(database)
+ .SetCredentialsProviderFactory(NYdb::CreateLoginCredentialsProviderFactory({
+ .User = "user",
+ .Password = "password",
+ }));
+
+ NYdb::TDriver driver(driverConfig);
+ ```
+
+{% endlist %}
diff --git a/ydb/docs/ru/core/toc_i.yaml b/ydb/docs/ru/core/toc_i.yaml
index a0dbc5d2fba..34c24b798cd 100644
--- a/ydb/docs/ru/core/toc_i.yaml
+++ b/ydb/docs/ru/core/toc_i.yaml
@@ -16,7 +16,6 @@ items:
- { name: Управление базами данных, include: { mode: link, path: db/toc_p.yaml } }
- { name: Управление кластером, include: { mode: link, path: cluster/toc_p.yaml } }
-
# References
- { name: YQL, include: { mode: link, path: yql/toc_p.yaml } }
- { name: Работа с YDB CLI, include: { mode: link, path: reference/ydb-cli/toc_p.yaml } }
diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/alter-group.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/alter-group.md
new file mode 100644
index 00000000000..e5c3b414efa
--- /dev/null
+++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/alter-group.md
@@ -0,0 +1,13 @@
+# ALTER GROUP
+
+Добавляет или удаляет группу указанному пользователю. Для одного оператора вы можете указать несколько пользователей.
+
+Синтаксис:
+
+```yql
+ALTER GROUP role_name ADD USER user_name [, ... ]
+ALTER GROUP role_name DROP USER user_name [, ... ]
+```
+
+* `role_name` — имя группы.
+* `user_name` — имя пользователя.
diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/alter-user.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/alter-user.md
new file mode 100644
index 00000000000..a4e60c14c0c
--- /dev/null
+++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/alter-user.md
@@ -0,0 +1,14 @@
+# ALTER USER
+
+Изменяет пароль пользователя.
+
+Синтаксис:
+
+```yql
+ALTER USER user_name [ WITH ] option [ ... ]
+```
+
+* `user_name` — имя пользователя.
+* `option` — пароль пользователя:
+ * `PASSWORD 'password'` — создает пользователя с паролем `password`. Опция `ENCRYPTED` всегда включена.
+ * `PASSWORD NULL` — создает пользователя с пустым паролем.
diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/create-group.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/create-group.md
new file mode 100644
index 00000000000..c0c86aa2375
--- /dev/null
+++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/create-group.md
@@ -0,0 +1,11 @@
+# CREATE GROUP
+
+Создает группу с указанным именем.
+
+Синтаксис:
+
+```yql
+CREATE GROUP group_name
+```
+
+* `group_name` — имя группы. Может содержать строчные буквы латинского алфавита и цифры.
diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/create-user.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/create-user.md
new file mode 100644
index 00000000000..50a42023200
--- /dev/null
+++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/create-user.md
@@ -0,0 +1,14 @@
+# CREATE USER
+
+Создает пользователя с указанным именем и паролем.
+
+Синтаксис:
+
+```yql
+CREATE USER user_name [option]
+```
+
+* `user_name` — имя пользователя. Может содержать строчные буквы латинского алфавита и цифры.
+* `option` — пароль пользователя:
+ * `PASSWORD 'password'` — создает пользователя с паролем `password`. Опция `ENCRYPTED` всегда включена.
+ * `PASSWORD NULL` — создает пользователя с пустым паролем.
diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/drop-group.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/drop-group.md
new file mode 100644
index 00000000000..d27f6230e08
--- /dev/null
+++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/drop-group.md
@@ -0,0 +1,12 @@
+# DROP GROUP
+
+Удаляет указанную группу. Для одного оператора вы можете указать несколько групп.
+
+Синтаксис:
+
+```yql
+DROP GROUP [ IF EXISTS ] group_name [, ...]
+```
+
+* `IF EXISTS` — не выводить ошибку, если группа не существует.
+* `group_name` — имя группы, которого нужно удалить.
diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/drop-user.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/drop-user.md
new file mode 100644
index 00000000000..e2fe7270c8c
--- /dev/null
+++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/drop-user.md
@@ -0,0 +1,12 @@
+# DROP USER
+
+Удаляет указанного пользователя. Для одного оператора вы можете указать несколько пользователей.
+
+Синтаксис:
+
+```yql
+DROP USER [ IF EXISTS ] user_name [, ...]
+```
+
+* `IF EXISTS` — не выводить ошибку, если пользователь не существует.
+* `user_name` — имя пользователя, которого нужно удалить.
diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/toc_i.yaml b/ydb/docs/ru/core/yql/reference/yql-core/syntax/toc_i.yaml
index eb3d15839f6..69428ff88d8 100644
--- a/ydb/docs/ru/core/yql/reference/yql-core/syntax/toc_i.yaml
+++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/toc_i.yaml
@@ -3,12 +3,18 @@ items:
- { name: Лексическая структура, href: lexer.md }
- { name: Выражения, href: expressions.md }
- { name: ACTION, href: action.md }
+- { name: ALTER GROUP, href: alter-group.md }
- { name: ALTER TABLE, href: alter_table.md, when: feature_map_tables }
+- { name: ALTER USER, href: alter-user.md }
+- { name: CREATE GROUP, href: create-group.md }
- { name: CREATE TABLE, href: create_table.md }
+- { name: CREATE USER, href: create-user.md }
- { name: DECLARE, href: declare.md }
- { name: DELETE, href: delete.md, when: feature_map_tables }
- { name: DISCARD, href: discard.md }
+- { name: DROP GROUP, href: drop-group.md }
- { name: DROP TABLE, href: drop_table.md }
+- { name: DROP USER, href: drop-user.md }
- { name: GROUP BY, href: group_by.md }
- { name: EXPORT и IMPORT, href: export_import.md, when: feature_mapreduce }
- { name: FLATTEN, href: flatten.md }