Skip to content

Commit

Permalink
Merge 57abee9 into 6551911
Browse files Browse the repository at this point in the history
  • Loading branch information
azevaykin authored Jan 10, 2025
2 parents 6551911 + 57abee9 commit 7214ff2
Show file tree
Hide file tree
Showing 46 changed files with 576 additions and 196 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`|
16 changes: 16 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,22 @@

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

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

Папки являются [объектом доступа](../security/authentication.md#object) в [авторизации](../security/authentication.md). У каждого объекта доступа есть список разрешений — ACL (Access Control List) — он хранит все предоставленные [субъектам доступа](#subject) (пользователям и группам) [права](#right) на объект. У каждого [объекта доступа](../security/authentication.md#object) есть [владелец объекта](../security/authentication.md#owner).
Более подробно об [авторизации](../security/authentication.md).

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

Субъект доступа — сущность, которая может запрашивать доступ к объектам доступа или выполнять определенные действия в системе.
Субъектом доступа может быть [пользователь](../security/authentication.md#user) или [группа](../security/authentication.md#group).
Более подробно об [субъектах доступа](../security/authentication.md#subject).

### Право {#right}

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

### Оптимизатор запросов {#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
2 changes: 1 addition & 1 deletion ydb/docs/ru/core/devops/manual/initial-deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ sudo chmod 700 /opt/ydb/certs

Если в файле настроек кластера включен режим аутентификации, то перед началом работы с кластером {{ ydb-short-name }} необходимо выполнить первоначальную настройку учетных записей.

При первоначальной установке кластера {{ ydb-short-name }} автоматически создается учетная запись `root` с пустым паролем, а также стандартный набор групп пользователей, описанный в разделе [Управление доступом](../../security/access-management.md).
При первоначальной установке кластера {{ ydb-short-name }} автоматически создается учетная запись `root` с пустым паролем, а также стандартный набор групп пользователей, описанный в разделе [{#T}](../../yql/reference/syntax/alter-group.md#builtin).

Для выполнения первоначальной настройки учетных записей в созданном кластере {{ ydb-short-name }} выполните следующие операции:

Expand Down
2 changes: 1 addition & 1 deletion ydb/docs/ru/core/integrations/ingestion/logstash.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

## Конфигурация подключения плагинов к {{ ydb-short-name }}

Все плагины используют одни и те же параметры для настройки подключения к базе данных {{ ydb-short-name }}. Среди этих параметров обязателен только `connection_string`, а все остальные параметры опциональны и позволяют задать [режим аутентификации](../../concepts/auth.md). Если ни один из них не указан, то будет использоваться анонимная аутентификация.
Все плагины используют одни и те же параметры для настройки подключения к базе данных {{ ydb-short-name }}. Среди этих параметров обязателен только `connection_string`, а все остальные параметры опциональны и позволяют задать [режим аутентификации](../../security/authentication.md). Если ни один из них не указан, то будет использоваться анонимная аутентификация.

```ruby
# Пример указан для плагина ydb_storage, настройка подключения
Expand Down
Loading

0 comments on commit 7214ff2

Please sign in to comment.