rotate_password. Генерация и установка постоянного пароля пользователя (включая ТУЗ)#
Генерация пароля осуществляется функцией rotate_password в соответствии с парольной политикой.
Функция генерации пароля rotate_password создает новый пароль для выбранного пользователя и:
возвращает его в качестве результата;
изменяет его в БД.
Входные параметры функции rotate_password:
(обязательный)
Oidили имя пользователя;(не обязательный) длина пароля. При отсутствии будет сгенерирован по минимальной длине пароля согласно парольным политикам (случайная длина до 5 символов).
Выходной параметр: сгенерированный пароль.
Пример запроса генерации пароля для пользователя User1:
SELECT * FROM rotate_password('User1');
Настройка#
Функция генерации пароля доступна при установленном расширении psql_rotate_password.
Откройте конфигурационный файл
postgersql.conf.Добавьте или измените следующие параметры:
rotate_password_enable = 'on'— включение функции генерации пароля;rotate_password_num_rounds:'20'— количество попыток генерации пароля;rotate_password.valid_roles = 'user1, user2, user3'— список пользователей (через запятую), для которых разрешена генерация пароля.
При изменении параметров перечитайте конфигурацию (reload).
Диагностика ошибок#
При использовании функции могут возникать следующие ошибки:
Исчерпано количество попыток: превышено значение параметра
rotate_password_num_rounds;Пользователь не входит в список ролей: убедитесь, что пользователь указан в параметре
rotate_password.valid_roles; Невозможно сгенерировать подходящий пароль: комбинация синтаксических требований и длины пароля не позволяет создать соответствующий требованиям пароль.
Сценарии использования#
Установите значение („username“) параметра
rotate_password.valid_rolesв конфигурационном файле. Для применения изменений перечитайте конфигурацию (reload).Создайте политики для пользователя. В примере указаны значения для параметров по умолчанию, при необходимости можно их изменить.
SELECT * FROM set_role_policies('username', policy_enable(1::boolean), check_syntax(1::boolean), min_length(16), illegal_values(0::boolean), alpha_numeric(5), min_alpha_chars(1), min_special_chars(1), min_uppercase(1), min_lowercase(1), max_rpt_chars(2), use_password_strength_estimator(0::boolean), transport_password_life_time('3 days')) \gxПример вывода:
-[ RECORD 1 ]---------------------+------- roleid | username reuse_time | in_history | max_age | min_age | grace_login_limit | grace_login_time_limit | expire_warning | lockout | lockout_duration | max_failure | failure_count_interval | check_syntax | t min_length | 16 illegal_values | f alpha_numeric | 5 min_alpha_chars | 1 min_special_chars | 1 min_uppercase | 1 min_lowercase | 1 max_rpt_chars | 2 policy_enable | t track_login | max_inactivity | use_password_strength_estimator | f password_strength_estimator_score | custom_function | transport_password_life_time | 3 daysСгенерируйте пароль для пользователя:
SELECT * FROM rotate_password('username');Пример вывода:
rotate_password -------------------- x3<2BTf"ma3P119`fs (1 row)