Функции управления парольными политиками#
set_role_policies (создание или изменение парольной политики)#
Функция для создания или изменения парольной политики.
Примечание
Для изменения параметра policy_enable используйте функции активации и деактивации политики.
Формат:
set_role_policies(name role_name, policy1[, policy2[, ...]])— по имени роли;set_role_policies_by_id(oid role_id, policy1[, policy2[, ...]])— по идентификатору роли.
Входные параметры:
role_name– имя роли;role_id– идентификатор роли;policy1, policy2, …– значение настройки парольной политики, задается специальной функцией.
Имя настройки парольной политики |
Функция и ее синонимы |
POSIX шаблон для |
|---|---|---|
reusetime |
|
|
inhistory |
|
|
maxage |
|
|
minage |
|
|
graceloginlimit |
|
|
gracelogintimelimit |
|
|
expirewarning |
|
|
lockout |
|
|
lockoutduration |
|
|
maxfailure |
|
\d+ |
failurecountinterval |
|
|
checksyntax |
|
|
minlength |
|
|
illegalvalues |
|
|
alphanumeric |
|
|
minalphachars |
|
|
minspecialchars |
|
|
minuppercase |
|
|
minlowercase |
|
|
maxrptchars |
|
|
policyenable |
|
|
tracklogin |
|
|
maxinactivity |
|
|
usepasswordstrengthestimator |
|
|
passwordstrengthestimatorscore |
|
[0-4] |
customfunction |
|
[\w\d]+ |
Пример:
Создадим для пользователя user_test настройку парольной политики reuse_time со значением 3 дня по имени роли.
Команда:
SELECT * FROM set_role_policies('user_test',reuse_time('3 days'));
Пример ответа:
-[ RECORD 1 ]---------------------+----------
roleid | user_test
reuse_time | 3 days
...
enable_policy (активация парольной политики)#
Формат:
enable_policy(name role_name)— по имени роли;enable_policy(oid role_id)— по идентификатору роли.
Входные параметры:
role_name– имя роли;role_id– идентификатор роли.
Пример:
Активация настроек парольной политики для пользователя по идентификатору роли.
Команда:
SELECT * FROM enable_policy_by_id('17917');
Пример ответа:
-[ RECORD 1 ]---------------------+----------
roleid | user_test
reuse_time | 365 days
...
policy_enable | t
...
disable_policy (деактивация парольной политики)#
Формат:
disable_policy(name role_name)— по имени роли;disable_policy(oid role_id)— по идентификатору роли.
Входные параметры:
role_name– имя роли;role_id– идентификатор роли.
Пример:
Деактивация настроек парольной политики для пользователя по имени роли.
Команда:
SELECT * FROM disable_policy('user_test');
Пример ответа:
-[ RECORD 1 ]---------------------+----------
roleid | user_test
reuse_time | 365 days
...
policy_enable | f
...
recognize_password_policy (вывод парольной политики, примененной для пользователя или роли)#
Вывод политики, приписанной этой роли.
Формат:
recognize_password_policy(name role_name)— по имени роли;recognize_password_policy_by_id(oid role_id)— по идентификатору роли.
Входные параметры:
role_name– имя роли;role_id– идентификатор роли.
Возвращаемое значение:
Таблица с полями:
policy_name— имя настройки;value— значение настройки;source_type— источник, из которого получено значение параметраvalue:config— значение берется из конфигурационного файлаpostgresql.conf;role— значение берется из политики, назначенной роли, указанной в полеsource.
source— имя роли, из которой получено значение настройки. Пусто, если значение поляsource_type = config.
Команда:
SELECT * FROM recognize_password_policy('user2');
Результат:
Параметр |
Значение |
Параметр |
Значение |
|---|---|---|---|
|
user2 |
|
7 |
|
3 days |
|
f |
|
3 |
|
2 |
|
5 days |
|
2 |
|
2 days |
|
3 |
|
3 |
|
4 |
|
4 days |
|
1 |
|
3 days |
|
3 |
|
t |
|
t |
|
3 days |
|
t |
|
2 |
|
4 days |
|
5 days |
|
t |
|
f |
|
4 |
|
testf2 |
- |
- |
recognize_password_policy_detailed (вывод детализированной информации по примененной парольной политике для пользователя или роли)#
Вывод эффективной политики, получившейся в сценарии (выбор политики для пользователя) с указанием, какая политика из какой роли (или из postgresql.conf) действует.
Формат:
recognize_password_policy_detailed(name role_name)— по имени роли;recognize_password_policy_detailed_by_id(oid role_id)— по идентификатору роли.
Входные параметры:
role_name— имя роли;role_id— идентификатор роли.
Возвращаемое значение:
Таблица, где каждый столбец — параметр парольной политики и его значение.
Пример:
Команда:
SELECT * FROM recognize_password_policy_detailed('user_12');
Результат:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 days |
3 |
5 days |
2 days |
3 |
4 days |
3 days |
t |
3 days |
2 |
5 days |
f |
7 |
f |
|
|
|
|
|
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
2 |
2 |
3 |
4 |
1 |
3 |
00:00:00 |
t |
4 days |
t |
4 |
testf2 |
select_all_password_policies (вывод всех политик)#
Поиск всех ролей, к которым прикреплены политики паролей.
Формат:
select_all_password_policies()
Входные параметры:
Нет
Возвращаемое значение:
Кортеж со всеми найденными ролями.
unblock_role (разблокировка пользователя или роли)#
Разблокировать пользователя, заблокированного в результате превышения максимального количества неудачных попыток аутентификации по паролю или долгой неактивности.
Для заданного пользователя или роли изменяется значение полей:
failcounter = 0;unblockexpirytime = <текущее время на сервере>;is_blocked;lastfailtime;check_lockout_text.
Формат:
unblock_role(name role_name)— по имени роли;unblock_role_by_id(oid role_id)— по идентификатору роли.
Входные параметры:
role_name– имя роли;role_id– идентификатор роли.
Возвращаемое значение:
Всегда возвращает true.
Пользовательская функция проверки пароля#
Пользователь может создать PL/pgSQL функцию проверки пароля.
Требования к пользовательской функции.
Требование |
Описание |
|---|---|
Применимо к механизмам |
Создание или изменение роли |
Не применимо к механизмам |
Аутентификация по паролю |
Требования к вызову |
Пользовательская функция проверки пароля должна вызываться из PSQL: |
Прототип |
|
Входные атрибуты |
|
Требование к возвращаемому значению |
|
Примечание:
Зашифрованный пароль приходит, если СУБД Pangolin подключен к сторонней системе аутентификации.