---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/devops/configuration-management/configuration-v2/node-authorization.md?version=v25.4
  - https://ydb.tech/docs/ru/devops/configuration-management/configuration-v2/node-authorization.md?version=v25.4
  - href: ru/devops/configuration-management/configuration-v2/node-authorization.md
    type: text/markdown
    title: Markdown version
  - href: ../../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/devops/configuration-management/configuration-v2/node-authorization.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

<!-- source: ru/devops/configuration-management/_includes/node-authorization.md -->
# Аутентификация и авторизация узлов баз данных

Аутентификация узлов в кластере YDB обеспечивает проверку подлинности узлов баз данных при выполнении служебных вызовов к другим узлам по протоколу gRPC. Авторизация узлов обеспечивает проверку и предоставление необходимых полномочий при обработке служебных вызовов, включая операции регистрации запускаемых узлов в кластере и доступа к [конфигурации](https://ydb.tech/docs/ru/devops/configuration-management/configuration-v2/config-overview.md?version=v25.4). Использование аутентификации и авторизации узлов рекомендуется для всех кластеров YDB, поскольку позволяет избежать ситуаций несанкционированного доступа к данным через включение в кластер контролируемых злоумышленниками узлов.

Аутентификация и авторизация узлов баз данных осуществляется в следующем порядке:

1. Запускаемый узел базы данных открывает gRPC-подключение к одному из узлов хранения кластера, указанных в опции командной строки `--node-broker`. При подключении используется протокол TLS, и в настройках подключения в качестве клиентского сертификата используется сертификат запускаемого узла.
2. Узел хранения и узел базы данных осуществляют взаимные проверки подлинности с использованием протокола TLS: производится проверка цепочки доверия сертификата и проверка соответствия имени хоста значению поля «Subject Name» сертификата.
3. Узел хранения проверяет заполнение поля «Subject» сертификата на соответствие требованиям, [устанавливаемым настройками](https://ydb.tech/docs/ru/reference/configuration/client_certificate_authorization.md?version=v25.4) в статической конфигурации.
4. При успешном прохождении перечисленных выше проверок подключение со стороны узла базы данных считается аутентифицированным, и ему присваивается идентификатор субъекта доступа — [SID](https://ydb.tech/docs/ru/concepts/glossary.md?version=v25.4#access-sid), определяемый настройками.
5. Узел базы данных использует установленное gRPC-подключение для регистрации в составе кластера с использованием соответствующего служебного вызова. При регистрации узел базы данных передаёт свой сетевой адрес, предназначенный для взаимодействия с другими узлами кластера.
6. Узел хранения проверяет наличие SID, присвоенного gRPC-подключению, в списке допустимых. При успешном прохождении этой проверки узел хранения регистрирует узел базы данных в кластере, сопоставляя полученный сетевой адрес с идентификатором узла.
7. Узел базы данных входит в кластер, подключаясь через свой сетевой адрес и указывая идентификатор узла, полученный при регистрации. Попытки входа в кластер узлов с неизвестными сетевыми адресами или идентификаторами блокируются другими узлами.

Далее описаны настройки, необходимые для включения функции аутентификации и авторизации узлов.

## Пререквизиты для настройки

1. В развёрнутом кластере YDB должно быть [настроено шифрование трафика gRPC](https://ydb.tech/docs/ru/reference/configuration/tls.md?version=v25.4#grpc) с использованием протокола TLS.
2. При подготовке сертификатов узлов для кластера, в котором планируется использовать функции аутентификации и авторизации узлов, необходимо обеспечить единые правила заполнения поля «Subject» сертификатов, позволяющие идентифицировать сертификаты, выпущенные для узлов кластера. Более подробная информация приведена в [документации по настройке правил проверки сертификатов](https://ydb.tech/docs/ru/reference/configuration/client_certificate_authorization.md?version=v25.4).

    {% note info %}

    Предлагаемый [пример скрипта](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/tls_cert_gen/) для генерации самоподписанных сертификатов узлов YDB заполняет поле «Subject» значением `O=YDB` для всех сертификатов узлов. Приведённые далее примеры настроек подготовлены для сертификатов с именно таким заполнением поля «Subject».

    {% endnote %}

3. В параметры командной строки для [запуска узлов баз данных](https://ydb.tech/docs/ru/devops/deployment-options/manual/initial-deployment/index.md?version=v25.4#start-dynnode) необходимо добавить опции, задающие пути к файлам сертификатов доверенных центров сертификации, сертификата узла и ключа узла. Список дополнительных опций приведён в таблице ниже.

    | **Опция командной строки** | **Описание** |
    |----------------------------|--------------|
    | `--grpc-ca`                | Путь к файлу сертификатов доверенных центров сертификации `ca.crt`. |
    | `--grpc-cert`              | Путь к файлу сертификата узла `node.crt`. |
    | `--grpc-key`               | Путь к файлу секретного ключа узла `node.key`. |

    Пример команды для запуска узла базы данных с опциями, указывающими пути к ключам и сертификатам TLS для протокола gRPC:

    ```bash
    /opt/ydb/bin/ydbd server --config-dir /opt/ydb/cfg --tenant /Root/testdb \
        --grpcs-port 2136 --grpc-ca /opt/ydb/certs/ca.crt \
        --grpc-cert /opt/ydb/certs/node.crt --grpc-key /opt/ydb/certs/node.key \
        --ic-port 19002 --ca /opt/ydb/certs/ca.crt \
        --mon-port 8766 --mon-cert /opt/ydb/certs/web.pem \
        --node-broker grpcs://<ydb1>:2135 \
        --node-broker grpcs://<ydb2>:2135 \
        --node-broker grpcs://<ydb3>:2135
    ```

## Включение режима аутентификации и авторизации узлов

{% note info %}

Начиная с [версии 25.2](https://ydb.tech/docs/ru/changelog-server.md?version=v25.4#25-2), корректно настроенная аутентификация узлов баз данных является обязательной.

Регистрация узлов в кластере невозможна без выполнения аутентификации.

{% endnote %}

Для включения обязательной авторизации узлов баз данных в файл [конфигурации кластера](https://ydb.tech/docs/ru/reference/configuration/index.md?version=v25.4) необходимо добавить следующие блоки настроек:

1. На корневом уровне конфигурации добавьте блок `client_certificate_authorization`, в котором укажите требования к заполнению поля "Subject" доверенных сертификатов подключаемых узлов, например:

    ```yaml
    client_certificate_authorization:
      request_client_certificate: true
      client_certificate_definitions:
        - member_groups: ["registerNode@cert"]
          subject_terms:
          - short_name: "O"
            values: ["YDB"]
    ```

    При необходимости добавьте другие проверки сертификатов [в соответствии с документацией](https://ydb.tech/docs/ru/reference/configuration/client_certificate_authorization.md?version=v25.4).

    В случае успешной проверки сертификата и соответствия компонентов поля "Subject" сертификата требованиям, установленным в блоке `subject_terms`, подключению будут присвоены субъекты доступа, перечисленные в параметре `member_groups`. Чтобы отделить такие субъекты доступа от других групп и учётных записей, к их наименованию добавляется суффикс `@cert`.

1. В блок настроек аутентификации кластера `security_config` добавьте элемент `register_dynamic_node_allowed_sids`, указав список субъектов доступа, которым разрешена регистрация узлов баз данных. По техническим причинам в этом списке также должен присутствовать субъект доступа `root@builtin`. Пример:

    ```yaml
    security_config:
      enforce_user_token_requirement: true
      ...
      register_dynamic_node_allowed_sids:
      - "root@builtin" # требуется по техническим причинам
      - "registerNode@cert"
    ```

    Более подробная информация по настройке параметров аутентификации кластера приведена в [соответствующем разделе документации](https://ydb.tech/docs/ru/reference/configuration/index.md?version=v25.4#security-access-levels).

1. Обновите файлы статической конфигурации на всех узлах кластера вручную либо с помощью [плейбука Ansible](https://ydb.tech/docs/ru/devops/deployment-options/ansible/update-config.md?version=v25.4).

1. Выполните поэтапный перезапуск узлов хранения кластера [с помощью ydbops](https://ydb.tech/docs/ru/reference/ydbops/rolling-restart-scenario.md?version=v25.4) либо с использованием [плейбука Ansible](https://ydb.tech/docs/ru/devops/deployment-options/ansible/restart.md?version=v25.4).

1. Выполните поэтапный перезапуск узлов баз данных кластера с помощью ydbops либо с использованием плейбука Ansible.
<!-- endsource: ru/devops/configuration-management/_includes/node-authorization.md -->
