psql_rotate_password. Функциональность генерации случайного пароля#

В исходном дистрибутиве установлено по умолчанию: нет.

Связанные компоненты: отсутствуют.

Схема размещения: ext.

Расширение psql_rotate_password добавляет функцию генерации случайного пароля удовлетворяющего парольной политике.

Функции расширения#

rotate_password. Генерация и установка постоянного пароля пользователя (включая ТУЗ)#

Функция генерации пароля rotate_password создает новый пароль для выбранного пользователя и:

  • возвращает его в качестве результата;

  • изменяет его в БД.

Входные параметры функции rotate_password:

  • (обязательный) OID или имя пользователя;

  • (не обязательный) длина пароля. При отсутствии будет сгенерирован по минимальной длине пароля согласно парольным политикам (случайная длина до 5 символов).

Выходной параметр: сгенерированный пароль (строковый тип данных).

Пример запроса генерации пароля для пользователя User1:

SELECT * FROM rotate_password('User1');

Внимание!

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

Доработка#

Доработка не проводилась.

Ограничения#

Ограничения отсутствуют.

Установка и активация расширения#

Установка расширения производится инсталлятором (документ «Руководство по установке», раздел «Установка»).

В случае ручной установки, создайте расширение psql_rotate_password командой:

CREATE EXTENSION psql_rotate_password schema ext;

Для активации расширения измените следующий параметр в конфигурационном файле postgersql.conf: rotate_password_enable = 'on' — включение функции генерации пароля;

После изменения параметра перечитайте конфигурацию (reload).

Внимание

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

Настройка парамеров#

Настраиваемые параметры для генерации пароля:

  • rotate_password.num_rounds = '' — количество попыток генерации пароля:

    rotate_password.num_rounds = '20'
    
  • rotate_password.valid_roles = '' — список пользователей (через запятую), для которых разрешена генерация пароля:

    rotate_password.valid_roles = 'user1, user2, user3'
    

При изменении параметров перечитайте конфигурацию.

Использование модуля#

Генерация пароля для нового пользователя при помощи функции rotate_password.

  1. Установите значение ('username') параметра rotate_password.valid_roles в конфигурационном файле. Для применения изменений перечитайте конфигурацию (reload).

  2. Создайте политики для пользователя. В примере политика создается с явно заданными параметрами, в качестве значений параметров взяты значения по умолчанию, при необходимости можно их изменить.

    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'));
    

    Пример ответа:

    -[ 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
    
  3. Сгенерируйте пароль для пользователя:

    SELECT *
    FROM rotate_password('username');
    

    Пример ответа:

    rotate_password
    --------------------
    x3<2BTf?ma3P119_fs
    (1 row)