Skip to content

Commit

Permalink
Merge 17f962c into df99e52
Browse files Browse the repository at this point in the history
  • Loading branch information
azevaykin authored Jan 14, 2025
2 parents df99e52 + 17f962c commit 2132460
Show file tree
Hide file tree
Showing 46 changed files with 580 additions and 197 deletions.
Empty file.
23 changes: 13 additions & 10 deletions ydb/docs/en/core/concepts/auth.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ The following authentication modes are supported:
* [Authentication through a third-party IAM provider](#iam), for example, [Yandex Identity and Access Management]{% if lang == "en" %}(https://cloud.yandex.com/en/docs/iam/){% endif %}{% if lang == "ru" %}(https://cloud.yandex.ru/docs/iam/){% endif %}.
* Authentication by [username and password](#static-credentials).

## Anonymous authentication

Anonymous authentication allows you to connect to {{ ydb-short-name }} without specifying any credentials like username and password. This type of access should be used only for educational purposes in local databases that cannot be accessed over the network.

To enable anonymous authentication, use `false` in the `enforce_user_token_requirement` key of the cluster's [configuration file](../reference/configuration/index.md#auth).

## Authentication through a third-party IAM provider {#iam}

* **Anonymous**: Empty token passed in a request.
Expand Down Expand Up @@ -35,23 +41,20 @@ The token to specify in request parameters can be obtained in the IAM system tha

When using modes in which the {{ ydb-short-name }} client accesses the IAM system, the IAM URL that provides an API for issuing tokens can be set additionally. By default, existing SDKs and CLIs attempt to access the {{ yandex-cloud }} IAM API hosted at `iam.api.cloud.yandex.net:443`.

{% include [overlay/auth_choose.md](_includes/connect_overlay/auth_choose.md) %}

## Authenticating by username and password {#static-credentials}

Authentication by username and password includes the following steps:
This type of access implies that each database user has a username and password.
Only digits and lowercase Latin letters can be used in usernames. Passwords are not restricted; even empty passwords can be used.

1. The client accesses the database and presents their username and password to the {{ ydb-short-name }} authentication service.
The username and hashed password are stored in a table inside the authentication component. The password is hashed using the [Argon2](https://en.wikipedia.org/wiki/Argon2) method. In authentication mode, only the system administrator can use a username and password pair to access the table.

You can only use lower case Latin letters and digits in usernames. No restrictions apply to passwords (empty passwords can be used).
A token is returned in response to the username and password. Tokens have a default lifetime of 12 hours. To rotate tokens, the client, such as the [SDK](../reference/ydb-sdk/index.md), independently accesses the authentication service. Tokens accelerate authentication and enhance security.

Authentication by username and password includes the following steps:

1. The client accesses the database and presents their username and password to the {{ ydb-short-name }} authentication service.
1. The authentication service passes authentication data to the {{ ydb-short-name }} authentication component.
1. The component validates authentication data. If the data matches, it generates a token and returns it to the authentication service.

Tokens accelerate authentication and strengthen security. Tokens have a default lifetime of 12 hours. YDB SDK rotates tokens by accessing the authentication service.

The username and hashed password are stored in the table inside the authentication component. The password is hashed by the [Argon2]{% if lang == "en" %}(https://en.wikipedia.org/wiki/Argon2){% endif %}{% if lang == "ru" %}(https://ru.wikipedia.org/wiki/Argon2){% endif %} method. In authentication mode, only the system administrator can use a username/password pair to access the table.

1. The authentication system returns the token to the client.
1. The client accesses the database, presenting their token as authentication data.

Expand Down
6 changes: 5 additions & 1 deletion ydb/docs/redirects.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -184,11 +184,15 @@ common:

# Security-related redirects
- from: /cluster/access.md
to: /security/acess-management.md
to: /security/authorization.md
- from: /cluster/audit-log.md
to: /security/audit-log.md
- from: /cluster/short-access-control-notation.md
to: /security/short-access-control-notation.md
- from: /concepts/auth.md
to: /security/authentication.md
- from: /security/access-management.md
to: /security/authorization.md

# Contributors-related redirects
- from: /development/build-ya.md
Expand Down
8 changes: 8 additions & 0 deletions ydb/docs/ru/core/_includes/do-not-create-users-in-ldap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{% note info %}

Область действия команд `CREATE USER`, `ALTER USER`, `DROP USER` не распространяется на внешние каталоги пользователей.
Учитывайте это, если к {{ ydb-short-name }} подключаются пользователи со сторонней аутентификацией (например, LDAP).
Например, команда `CREATE USER` не создаст пользователя в LDAP-каталоге.
Подробнее про [взаимодействие {{ ydb-short-name }} с LDAP-каталогом](../security/authentication.md#ldap-auth-provider).

{% endnote %}
2 changes: 1 addition & 1 deletion ydb/docs/ru/core/changelog-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@

* Реализована [Knn UDF](./yql/reference/udf/list/knn.md) для точного поиска ближайших векторов.
* Разработан gRPC сервис QueryService, обеспечивающий возможность выполнения всех типов запросов (DML, DDL) и выборку неограниченных объёмов данных.
* Реализована [интеграция с LDAP протоколом](./concepts/auth.md) и возможность получения перечня групп из внешних LDAP-каталогов.
* Реализована [интеграция с LDAP протоколом](./security/authentication.md) и возможность получения перечня групп из внешних LDAP-каталогов.

### Встроенный UI

Expand Down
Empty file.
4 changes: 2 additions & 2 deletions ydb/docs/ru/core/concepts/federated_query/ydb.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

Для подключения к внешней базе {{ ydb-short-name }} со стороны другой базы {{ ydb-short-name }}, выступающей в роли движка обработки федеративных запросов, на последней требуется выполнить следующие шаги:

1. Подготовить аутентификационные данные для доступа к удалённой базе {{ ydb-short-name }}. В настоящее время в федеративных запросах к {{ ydb-short-name }} доступен метод аутентификации по [логину и паролю](../../concepts/auth.md#static-credentials) (остальные методы не поддерживаются). Пароль к внешней базе сохраняется в виде [секрета](../datamodel/secrets.md):
1. Подготовить аутентификационные данные для доступа к удалённой базе {{ ydb-short-name }}. В настоящее время в федеративных запросах к {{ ydb-short-name }} доступен метод аутентификации по [логину и паролю](../../security/authentication.md#static-credentials) (остальные методы не поддерживаются). Пароль к внешней базе сохраняется в виде [секрета](../datamodel/secrets.md):

```yql
CREATE OBJECT ydb_datasource_user_password (TYPE SECRET) WITH (value = "<password>");
Expand Down Expand Up @@ -93,4 +93,4 @@ SELECT * FROM ydb_datasource.<table_name>
|`Datetime`|`Datetime`|
|`Timestamp`|`Timestamp`|
|`Json`|`Json`|
|`JsonDocument`|`Json`|
|`JsonDocument`|`Json`|
36 changes: 36 additions & 0 deletions ydb/docs/ru/core/concepts/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,42 @@

Как и в файловых системах, **папка**, **каталог**, **folder** или **directory** является контейнером для других сущностей. В случае {{ ydb-short-name }}, эти сущности могут быть [таблицами](#table) (включая [внешние таблицы](#external-table)), [топиками](#topic), другими папками и т.д.

Папки организованы в иерархическую структуру, то есть могут содержать подпапки, и такая вложенность может быть произвольной глубины.

### Объект доступа {#access-object}

**Объект доступа** или **access object** при [авторизации](../security/authorization.md) — сущность, для которой настраиваются права и ограничения доступа. В {{ ydb-short-name }} объектами доступа являются [папки](#folder). У каждого объекта доступа есть [владелец](#access-owner) и [список разрешений](#access-control-list).

### Субъект доступа {#access-subject}

**Субъект доступа** или **access subject** — сущность, которая может обращаться к [объектам доступа](#access-object) или выполнять определённые действия в системе. Получение доступа при этих обращениях и действиях зависит от настроенных [списков разрешений](#access-control-list).

Субъектом доступа может быть [пользователь](#access-user) или [группа](#access-group).

### Право доступа {#access-right}

**[Право доступа](../security/authorization.md#right)** или **access right** — сущность, отражающая разрешение [субъекту доступа](#access-subject) выполнять конкретный набор операций в кластере или базе данных над конкретным [объектом доступа](#access-object).

### Список разрешений {#access-control-list}

**Список разрешений**, **access control list** или **ACL** — список всех [прав](#access-right), предоставленных [субъектам доступа](#access-subject) (пользователям и группам) на конкретный [объект доступа](#access-object).

### Владелец {#access-owner}

**[Владелец](../security/authorization.md#owner)** - [субъект доступа](#access-subject) ([пользователь](#access-user) или [группа](#access-group)) имеющий полный объем прав на конкретный [объект доступа](#access-object).

### Пользователь {#access-user}

**[Пользователь](../security/authorization.md#user)** - лицо, использующее {{ ydb-short-name }} для выполнения конкретной функции.

### Группа {#access-group}

**[Группа](../security/authorization.md#group)** или **группа доступа** - именованное множество [пользователей](#access-user) с одинаковыми [правами доступа](#access-right) к тем или иным [объектам доступа](#access-object).

### SID {#access-sid}

**SID** (**Security Identifier**) - строка вида `<login>[@<subsystem>]`, идентифицирующая [субъект доступа](../concepts/glossary.md#access-subject) в [списках разрешений](#access-control-list).

### Оптимизатор запросов {#optimizer}

[**Оптимизатор запросов**](https://ru.wikipedia.org/wiki/Оптимизация_запросов_СУБД) — набор компонентов {{ ydb-short-name }}, отвечающих за преобразование логического представления запроса в конкретный физически исполнимый план получения запрошенного результата. Основная цель оптимизатора — выбрать среди всех возможных планов выполнения запроса достаточно эффективный с точки зрения прогнозируемого времени исполнения и потребления ресурсов кластера. Он описан более подробно в отдельной статье [{#T}](optimizer.md).
Expand Down
2 changes: 0 additions & 2 deletions ydb/docs/ru/core/concepts/toc_i.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ items:
href: glossary.md
- name: Соединение с БД
href: connect.md
- name: Аутентификация
href: auth.md
- name: Модель данных и схема
href: datamodel/index.md
include:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Для выполнения примера с использованием любой доступной базы данных YDB вам потребуется знать [эндпоинт](../../../../concepts/connect.md#endpoint) и [путь базы данных](../../../../concepts/connect.md#database).

Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../concepts/auth.md) и получить секреты - токен или логин/пароль.
Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../security/authentication.md) и получить секреты - токен или логин/пароль.

Выполните команду по следующему образцу:

Expand Down
4 changes: 2 additions & 2 deletions ydb/docs/ru/core/dev/example-app/java/_includes/run_custom.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Для выполнения примера с использованием любой доступной базы данных {{ ydb-short-name }} вам потребуется знать [эндпоинт](../../../../concepts/connect.md#endpoint) и [путь базы данных](../../../../concepts/connect.md#database).

Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../concepts/auth.md) и получить секреты - токен или логин/пароль.
Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../security/authentication.md) и получить секреты - токен или логин/пароль.

Выполните команду по следующему образцу:

Expand All @@ -19,4 +19,4 @@

```bash
YDB_ACCESS_TOKEN_CREDENTIALS="..." java -jar ydb-java-examples/query-example/target/ydb-query-example.jar grpcs://ydb.example.com:2135/somepath/somelocation
```
```
2 changes: 1 addition & 1 deletion ydb/docs/ru/core/dev/example-app/java/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ mvn package -f ./ydb-java-examples
Основные параметры инициализации драйвера:

* Cтрока подключения с информацией об [эндпоинте](../../../concepts/connect.md#endpoint) и [базе данных](../../../concepts/connect.md#database). Единственный обязательный параметр.
* Провайдер [аутенфикации](../../../recipes/ydb-sdk/auth.md##auth-provider). В случае отсутствия прямого указания будет использоваться [анонимное подключение](../../../concepts/auth.md).
* Провайдер [аутенфикации](../../../recipes/ydb-sdk/auth.md##auth-provider). В случае отсутствия прямого указания будет использоваться [анонимное подключение](../../../security/authentication.md).
* Настройки [пула сессий](../../../recipes/ydb-sdk/session-pool-limit.md).

Фрагмент кода приложения для инициализации драйвера:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Для выполнения примера с использованием любой доступной базы данных {{ ydb-short-name }} вам потребуется знать [эндпоинт](../../../../concepts/connect.md#endpoint) и [путь базы данных](../../../../concepts/connect.md#database).

Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../concepts/auth.md) и получить секреты - токен или логин/пароль.
Если в базе данных включена аутентификация, то вам также понадобится выбрать [режим аутентификации](../../../../security/authentication.md) и получить секреты - токен или логин/пароль.

Выполните команду по следующему образцу:

Expand Down
6 changes: 3 additions & 3 deletions ydb/docs/ru/core/dev/terraform.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@
Где:
* `token` - указывается токен доступа к БД, если используется аутентификация, например, с использованием стороннего [IAM](../concepts/auth.md#iam) провайдера.
* `user` - имя пользователя для доступа к базе данных в случае использования аутентификации по [логину и паролю](../concepts/auth.md#static-credentials)
* `password` - пароль для доступа к базе данных в случае использования аутентификации по [логину и паролю](../concepts/auth.md#static-credentials)
* `token` - указывается токен доступа к БД, если используется аутентификация, например, с использованием стороннего [IAM](../security/authentication.md#iam) провайдера.
* `user` - имя пользователя для доступа к базе данных в случае использования аутентификации по [логину и паролю](../security/authentication.md#static-credentials).
* `password` - пароль для доступа к базе данных в случае использования аутентификации по [логину и паролю](../security/authentication.md#static-credentials).
## Использование Terraform провайдера {{ ydb-short-name }} {#work-with-tf}
Expand Down
Loading

0 comments on commit 2132460

Please sign in to comment.