auth_config
YDB позволяет использовать различные способы аутентификации пользователей в системе. Настройки аутентификации и провайдеров аутентификации задаются в секции auth_config файла конфигурации YDB.
Конфигурация аутентификации локальных пользователей YDB
Подробнее об аутентификации локальных пользователей см. в разделе про аутентификацию по логину и паролю. Для настройки аутентификации локальных пользователей по логину и паролю необходимо указать следующие параметры в секции auth_config:
|
Параметр |
Описание |
|
use_login_provider |
Флаг разрешает аутентификацию локальных пользователей по auth-токенам, полученным в результате входа по логину и паролю. Процедура входа в YDB — это обмен логина и пароля на аутентификационный токен. Возможные значения:
Значение по умолчанию: Примечание Для возможности создания и аутентификации локальных пользователей параметры |
|
enable_login_authentication |
Флаг разрешает создание локальных пользователей и получение для них аутентификационного токена в обмен на логин и пароль. Возможные значения:
Значение по умолчанию: |
|
domain_login_only |
Флаг определяет границы прав доступа локальных пользователей в кластере YDB. Возможные значения:
Значение по умолчанию: |
|
login_token_expire_time |
Время жизни аутентификационного токена, созданного в обмен на логин и пароль локального пользователя. Значение по умолчанию: |
Конфигурация блокировки пользователя при неправильно введённом пароле
YDB позволяет запретить пользователю аутентифицироваться, если он совершил несколько неудачных попыток ввода пароля. Для настройки условий блокировки пользователя необходимо заполнить секцию account_lockout.
Пример секции account_lockout:
auth_config:
#...
account_lockout:
attempt_threshold: 4
attempt_reset_duration: "1h"
#...
|
Параметр |
Описание |
|
attempt_threshold |
Количество неверных попыток ввода пароля, после которых учётная запись пользователя временно блокируется. Если пользователь ввёл неправильный пароль указанное количество раз подряд, ему запрещается аутентифицироваться на время, заданное в параметре Если параметр имеет значение Значение по умолчанию: |
|
attempt_reset_duration |
Период времени, в течение которого пользователь считается заблокированным. В течение этого периода пользователь не сможет аутентифицироваться в системе даже если введёт правильные имя пользователя и пароль. Период блокировки начинается с момента последней неверной попытки ввода пароля. Если указано нулевое значение ( Минимальный интервал времени блокировки 1 секунда. Поддерживаемые единицы измерения:
Не допускается комбинировать единицы измерения в одной строке. Например такая запись некорректна: Значение по умолчанию: |
Конфигурация требований к сложности пароля
YDB позволяет аутентифицировать пользователей по логину и паролю. Подробнее см. в разделе аутентификация по логину и паролю. Для повышения безопасности в YDB предусмотрена возможность настройки сложности используемых паролей локальных пользователей. Для конфигурирования требований к паролю необходимо описать секцию password_complexity.
Пример секции password_complexity:
auth_config:
#...
password_complexity:
min_length: 8
min_lower_case_count: 1
min_upper_case_count: 1
min_numbers_count: 1
min_special_chars_count: 1
special_chars: "!@#$%^&*()_+{}|<>?="
can_contain_username: false
#...
|
Параметр |
Описание |
|
min_length |
Минимальная длина пароля. Значение по умолчанию: 0 (не ограничено) |
|
min_lower_case_count |
Минимальное количество строчных букв в пароле. Значение по умолчанию: 0 (не ограничено) |
|
min_upper_case_count |
Минимальное количество прописных букв в пароле. Значение по умолчанию: 0 (не ограничено) |
|
min_numbers_count |
Минимальное количество цифр в пароле. Значение по умолчанию: 0 (не ограничено) |
|
min_special_chars_count |
Минимальное количество специальных символов в пароле из указанных в параметре Значение по умолчанию: 0 (не ограничено) |
|
special_chars |
Перечень специальных символов, допустимых при задании пароля. Валидные значения: Значение по умолчанию: пустая строка (допускает использование всех валидных специальных символов) |
|
can_contain_username |
Флаг определяет допустимость включения имени пользователя в пароль. Значение по умолчанию: |
Примечание
Любые изменения политики паролей не затрагивают уже действующие пароли пользователей, поэтому изменять существующие пароли не требуется, они будут приниматься в текущем виде.
Конфигурация LDAP аутентификации
Одним из способов аутентификации пользователей в YDB является использование LDAP-каталога. Подробнее о таком виде аутентификации написано в разделе про использование LDAP-каталога. Для конфигурирования LDAP-аутентификации необходимо описать секцию ldap_authentication.
Пример секции ldap_authentication:
auth_config:
...
ldap_authentication:
hosts:
- "ldap-hostname-01.example.net"
- "ldap-hostname-02.example.net"
- "ldap-hostname-03.example.net"
port: 389
base_dn: "dc=mycompany,dc=net"
bind_dn: "cn=serviceAccaunt,dc=mycompany,dc=net"
bind_password: "serviceAccauntPassword"
search_filter: "uid=$username"
use_tls:
enable: true
ca_cert_file: "/path/to/ca.pem"
cert_require: DEMAND
ldap_authentication_domain: "ldap"
scheme: "ldap"
requested_group_attribute: "memberOf"
extended_settings:
enable_nested_groups_search: true
refresh_time: "1h"
...
|
Параметр |
Описание |
|
|
Список имен хостов, на котором работает LDAP-сервер |
|
|
Порт для подключения к LDAP-серверу |
|
|
Корень поддерева в LDAP-каталоге, начиная с которого будет производиться поиск записи пользователя |
|
|
Отличительное имя (Distinguished Name, DN) сервисного аккаунта, от имени которого выполняется поиск записи пользователя |
|
|
Пароль сервисного аккаунта, от имени которого выполняется поиск записи пользователя |
|
|
Фильтр для поиска записи пользователя в LDAP-каталоге. В строке фильтра может встречаться последовательность символов $username, которая будет заменена на имя пользователя, запрошенное для аутентификации в базе данных |
|
|
Настройки для конфигурирования TLS-соединения между YDB и LDAP-сервером |
|
|
Определяет, будет ли произведена попытка установить TLS-соединение с использованием запроса |
|
|
Путь до файла сертификата удостоверяющего центра |
|
|
Уровень требований к сертификату LDAP-сервера. Возможные значения:
Значение по умолчанию: |
|
|
Идентификатор, прикрепляемый к имени пользователя, позволяющий отличать пользователей из LDAP-каталога от пользователей аутентифицируемых с помощью других провайдеров. Значение по умолчанию: |
|
|
Схема соединения с LDAP-сервером. Возможные значения:
Значение по умолчанию: |
|
|
Атрибут обратного членства в группе. По умолчанию |
|
|
Флаг определяет, будет ли выполнятся запрос для получения всего дерева групп, в которые входят непосредственные группы пользователя. Возможные значения:
Значение по умолчанию: |
|
|
Имя хоста, на котором работает LDAP-сервер. Это устаревший параметр, вместо него должен использоваться параметр |
Конфигурация аутентификации с использованием стороннего IAM-провайдера
YDB поддерживает аутентификацию пользователей с использованием сервиса Yandex Identity and Access Management (IAM), который используется в Yandex Cloud, или другого сервиса, совместимого с ним по API. Для конфигурирования IAM-аутентификации необходимо определить следующие параметры:
|
Параметр |
Описание |
|
use_access_service |
Флаг разрешает аутентификацию пользователей в Yandex Cloud через IAM с использованием AccessService. Значение по умолчанию: |
|
access_service_endpoint |
Адрес, по которому отправляются запросы в AccessService (IAM). Значение по умолчанию: |
|
use_access_service_tls |
Флаг включает использование TLS-соединений между YDB и AccessService. Значение по умолчанию: |
|
access_service_domain |
Суффикс «источника пользователя» в SID для пользователей, приходящих в YDB из Yandex Cloud IAM. Значение по умолчанию: |
|
path_to_root_ca |
Путь до файла сертификата удостоверяющего центра, используемого для взаимодействия с AccessService. Значение по умолчанию: |
|
access_service_grpc_keep_alive_time_ms |
Период времени, в миллисекундах, по истечении которого YDB посылает keepalive ping IAM-серверу, чтобы сохранить соединение. Значение по умолчанию: |
|
access_service_grpc_keep_alive_timeout_ms |
Период времени ожидания ответа от IAM-сервера на keepalive ping, в миллисекундах. Если по истечении срока ожидания ответ от IAM-сервера не приходит, YDB закрывает соединение. Значение по умолчанию: |
|
use_access_service_api_key |
Флаг разрешает использование API-ключей IAM. API-ключ — это секретный ключ, выписываемый в Yandex Cloud IAM для упрощённой авторизации сервисных аккаунтов в API Yandex Cloud. Его применяют, если нет возможности автоматически запрашивать IAM-токен. Значение по умолчанию: |
Настройки кеширования результатов аутентификации
В процессе аутентификации пользовательская сессия получает аутентификационной токен, который передается вместе с каждым запросом к кластеру YDB. Так как YDB — это распределенная система, то пользовательские запросы будут в конечном итоге обрабатываться на одном или нескольких узлах YDB. Каждый узел YDB, получив запрос от пользователя, проводит верификацию аутентификационного токена, и в случае успешной проверки, генерирует токен пользователя, который действует только внутри текущего узла YDB и используется для авторизации запрошенных пользователем действий. В рамках последующих запросов с тем же самым аутентификационным токеном на этот же узел YDB уже не требуют верификации аутентификационного токена, а выполняют под токеном пользователя.
Время жизни и другие важные аспекты работы токена пользователя настраиваются в конфигурации YDB с помощью следующих параметров:
|
refresh_period |
Определяет как часто узел YDB сканирует токены пользователей в кэше на достижение временных лимитов, указанных в параметрах Значение по умолчанию: |
|
refresh_time |
Определяет время, прошедшее с последнего обновления, когда узел YDB попытается обновить токен пользователя. Конкретное время обновления будет лежать в интервале от Значение по умолчанию: |
|
life_time |
Период хранения токена пользователя в кэше узла YDB с момента его последнего использования. Если запросы от пользователя, для которого создан токен, не приходили на узел YDB в течение указанного периода, узел удаляет этот токен пользователя из своего кэша. Значение по умолчанию: |
|
expire_time |
Период истечения срока действия токена пользователя, после которого токен удаляется из кэша узла YDB. Удаление происходит независимо от периода, указанного в параметре Важно Если сторонняя система успешно аутентифицировалась на узле YDB и с регулярностью чаще интервала Чем короче указанный период, тем чаще узел YDB заново аутентифицирует пользователей и обновляет их привилегии. Однако, чрезмерно частое повторение аутентификации пользователей замедляет работу YDB, особенно если речь идёт о внешних пользователях. Установка значения этого параметра в секундах нивелирует работу кэша для токенов пользователей. Значение по умолчанию: |
|
min_error_refresh_time |
Минимальный период, после которого повторяется попытка обновить токен пользователя, при получении которого уже происходила ошибка (временный сбой). Совместно с параметром Важно Не рекомендуется выставлять значение параметра в Значение по умолчанию: |
|
max_error_refresh_time |
Максимальный период, до истечения которого повторяется попытка обновить токен пользователя, при получении которого происходила ошибка (временный сбой). Совместно с параметром Значение по умолчанию: |