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

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

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

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

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

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

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

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

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

  • возвращает его в качестве результата;
  • изменяет его в БД.

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

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

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

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

SELECT * FROM rotate_password('User1');
Внимание!

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

Доработка

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

Ограничения

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

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

Сведения

Установка расширения может быть произведена в процессе развертывании СУБД Pangolin при использовании настроек по умолчанию (документ «Руководство по установке», раздел «Автоматизированная установка при помощи Ansible-скриптов»).

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

CREATE EXTENSION psql_rotate_password schema ext;

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

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

SELECT pg_reload_conf();
Внимание!

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

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

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

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

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

    rotate_password.valid_roles = 'user1, user2, user3'

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

SELECT pg_reload_conf();

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

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

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

    SELECT pg_reload_conf();
  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)