rotate_password. Генерация и установка постоянного пароля пользователя (включая ТУЗ)
Генерация пароля осуществляется функцией rotate_password
в соответствии с парольной политикой.
Функция генерации пароля rotate_password
создает новый пароль для выбранного пользователя и:
- возвращает его в качестве результата;
- изменяет его в БД.
Входные параметры функции rotate_password
:
- (обязательный)
Oid
или имя пользователя; - (не обязательный) длина пароля. При отсутствии будет сгенерирован по минимальной длине пароля согласно парольным политикам (случайная длина до 5 символов).
Выходной параметр: сгенерированный пароль.
Пример запроса генерации пароля для пользователя User1
:
SELECT * FROM rotate_password('User1');
Настройка
Функция генерации пароля доступна при установленном расширении psql_rotate_password
.
-
Откройте конфигурационный файл
postgersql.conf
. -
Добавьте или измените следующие параметры:
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)