Перейти к основному содержимому

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)