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"
scheme: "ldap"
requested_group_attribute: "memberOf"
extended_settings:
enable_nested_groups_search: true
enable_sasl_external_bind: true
use_tls:
enable: true
ca_cert_file: "/path/to/ca.pem"
cert_require: DEMAND
cert_file: "/path/to/client-cert.pem"
key_file: "/path/to/client-key.pem"
ldap_authentication_domain: "ldap"
refresh_time: "1h"
...
|
Параметр |
Описание |
|
|
Список имен хостов, на котором работает LDAP-сервер |
|
|
Порт для подключения к LDAP-серверу |
|
|
Корень поддерева в LDAP-каталоге, начиная с которого будет производиться поиск записи пользователя |
|
|
Отличительное имя (Distinguished Name, DN) сервисного аккаунта, от имени которого выполняется поиск записи пользователя |
|
|
Пароль сервисного аккаунта, от имени которого выполняется поиск записи пользователя. Не задаётся при |
|
|
Фильтр для поиска записи пользователя в LDAP-каталоге. В строке фильтра может встречаться последовательность символов $username, которая будет заменена на имя пользователя, запрошенное для аутентификации в базе данных |
|
|
Настройки для конфигурирования TLS-соединения между YDB и LDAP-сервером |
|
|
Определяет, будет ли произведена попытка установить TLS-соединение с использованием запроса |
|
|
Путь до файла сертификата удостоверяющего центра |
|
|
Уровень требований к сертификату LDAP-сервера. Возможные значения:
Значение по умолчанию: |
|
|
Путь до файла клиентского сертификата. Используется в качестве аутентификационной информации для сервисного аккаунта. |
|
|
Путь до файла ключа клиентского сертификата |
|
|
Схема соединения с LDAP-сервером. Возможные значения:
Значение по умолчанию: |
|
|
Атрибут обратного членства в группе. По умолчанию |
|
|
Флаг определяет, будет ли выполнятся запрос для получения всего дерева групп, в которые входят непосредственные группы пользователя. Возможные значения:
Значение по умолчанию: |
|
|
Флаг определяет, будет ли выполняться аутентификация сервисного аккаунта по протоколу SASL с механизмом EXTERNAL. Возможные значения:
Значение по умолчанию: |
|
|
Имя хоста, на котором работает LDAP-сервер. Это устаревший параметр, вместо него должен использоваться параметр |
|
|
Суффикс имени пользователя, позволяющий отличать пользователей из LDAP-каталога от пользователей аутентифицируемых с помощью других провайдеров. Значение по умолчанию: |
Конфигурация аутентификации по клиентскому сертификату
YDB поддерживает аутентификацию по клиентскому сертификату. Правила проверки сертификатов задаются в секции client_certificate_authorization. Дополнительно в секции auth_config может указываться суффикс имён пользователей, аутентифицированных по сертификату:
|
Параметр |
Описание |
|
|
Суффикс имени пользователя, позволяющий отличать пользователей, аутентифицированных по клиентскому сертификату, от пользователей, аутентифицируемых другими способами. Значение по умолчанию: |
Конфигурация аутентификации с использованием стороннего 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 кеширует результаты проверки в токенах пользователей. Подробнее см. в статье Кеширование результатов аутентификации.
Время жизни и другие аспекты работы токена пользователя настраиваются с помощью следующих параметров. Значения временных параметров задаются числом с суффиксом единицы измерения: ms — миллисекунды, s — секунды, m — минуты, h — часы, d — дни. Например, 300ms, 30s, 10m, 1h или 2d.
|
refresh_period |
Определяет как часто узел YDB сканирует токены пользователей в кэше на достижение временных лимитов, указанных в параметрах Значение по умолчанию: |
|
refresh_time |
Максимальный интервал между успешным обновлением токена пользователя и следующей попыткой обновления. Конкретное время обновления выбирается в диапазоне от Например, после первого запроса с корректным аутентификационным токеном узел создаёт токен пользователя. Через интервал, выбранный случайно в диапазоне от Параметр применяется к обновляемым аутентификационным токенам, например к токенам входа по логину и паролю и токенам внешнего провайдера идентификации. Значение по умолчанию: |
|
life_time |
Период хранения токена пользователя в кэше узла YDB с момента его последнего использования. Если запросы от пользователя, для которого создан токен, не приходили на узел YDB в течение указанного периода, узел удаляет этот токен пользователя из своего кэша. Значение по умолчанию: |
|
expire_time |
Период действия результата успешной проверки для большинства типов аутентификационных токенов. После успешного обновления отсчёт начинается заново. По истечении периода запись удаляется из кеша независимо от Для токенов входа по логину и паролю и токенов внешнего провайдера идентификации используется срок действия самого аутентификационного токена. Для запросов с подписью ключом доступа применяется отдельный параметр Значение по умолчанию: |
|
as_signature_expire_time |
Период действия результата проверки запроса, аутентифицированного с помощью подписи ключом доступа. Значение по умолчанию: |
|
min_error_refresh_time |
Начальный интервал между повторными проверками после ретрабельной ошибки обновления токена пользователя. После ретрабельной ошибки первая повторная проверка выполняется немедленно. Если она также завершается ретрабельной ошибкой, задержка перед следующей проверкой выбирается случайным образом в диапазоне от Важно Не рекомендуется выставлять значение параметра в Значение по умолчанию: |
|
max_error_refresh_time |
Ограничивает увеличение интервала между повторными проверками после ретрабельных ошибок обновления токена пользователя. Не ограничивает общую продолжительность повторных проверок. Значение по умолчанию: |
Пример для аутентификации по логину и паролю:
auth_config:
refresh_period: "1s"
refresh_time: "1h"
life_time: "2h"
expire_time: "6h"
login_token_expire_time: "12h"
min_error_refresh_time: "1s"
max_error_refresh_time: "1m"
После создания токена пользователя следующая плановая проверка выполняется через интервал, случайно выбранный в диапазоне от 30m до 1h (refresh_time). Выполнение этого условия проверяется раз в 1s (refresh_period). После успешной проверки интервал выбирается заново. При возникновении ретрабельной ошибки первая повторная проверка выполняется немедленно. Если она также завершается ретрабельной ошибкой, следующая проверка выполняется через интервал, случайно выбранный в диапазоне от 500ms до 1s (min_error_refresh_time). Затем текущий интервал удваивается, но не превышает 59s (max_error_refresh_time - min_error_refresh_time). Фактическая задержка каждый раз выбирается случайным образом в диапазоне от половины до полного текущего интервала.
Для аутентификационного токена, полученного по логину и паролю, параметр expire_time не применяется: срок действия такого токена задаётся login_token_expire_time, поэтому он перестаёт быть действительным через 12h. Кешированная запись перестаёт использоваться при ближайшей проверке после этого условия, но может быть удалена раньше из-за отсутствия запросов в течение 2h (life_time) или постоянной ошибки.
Пример для запросов с подписью ключом доступа:
auth_config:
refresh_period: "1s"
life_time: "30m"
as_signature_expire_time: "1h"
Токен пользователя для запроса с подписью ключом доступа не обновляется планово. Запись считается действительной 1h (as_signature_expire_time) с момента успешной проверки и удаляется при ближайшей проверке кеша. При указанных значениях она будет удалена не позднее чем через 1h + 1s (as_signature_expire_time + refresh_period). Запись может быть удалена раньше из-за отсутствия запросов в течение 30m (life_time).
Конфигурация токена регистрации узлов
YDB позволяет настраивать тип аутентификации узлов баз данных при их регистрации в кластере. Настройка этого типа осуществляется через параметр node_registration_token секции auth_config.
|
Параметр |
Описание |
|
node_registration_token |
Определяет тип аутентификации узлов баз данных при их регистрации в кластере YDB. Возможные значения:
|
Пример секции auth_config с настройкой регистрации узлов по сертификату:
auth_config:
...
node_registration_token: ""
...