Безопасность
Профили пользователей
16
Авторские права
© Postgres Professional, 2023–2026
Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев, Игорь
Гнатюк
Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
edu@postgrespro.ru
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Запрет простых паролей
Профили пользователей
3
Запрет простых паролей
Модуль passwordcheck
4
Модуль passwordcheck
Проверка надежности паролей пользователей
CREATE ROLE
ALTER ROLE
\password
user123
R0cvjyfdnbrf+
passwordcheck
passwordcheck
Модуль passwordcheck проверяет надежность паролей, задаваемых
командами CREATE ROLE и ALTER ROLE, а также устанавливаемых
метакомандой \password в psql.
Модуль должен быть загружен с помощью shared_preload_librar ies или
командой LOAD.
Модуль passwordcheck проверяет, что пароль:
●
содержит не менее 8 символов;
●
содержит и буквы, и иные символы;
●
не содержит имя роли.
Модуль не предусматривает конфигурационных настроек.
6
Профили пользователей
Профиль
Попытки входа
Время жизни пароля
Уровень сложности пароля
7
Профиль
Профиль ограничивает использование системы
пользователем
количество неудачных попыток входа
время жизни пароля и время неактивности
уровень сложности пароля
По умолчанию к ролям применяется профиль default
не устанавливает никаких ограничений, но это можно изменить
Управление профилями
суперпользователи или роли, включенные в pg_manage_profiles
Ядро Postgres Pro обеспечивает гораздо более гибкое управление
парольными политиками, чем простое расширение passwordcheck.
Профиль ограничивает использование базы данных и устанавливает
парольную политику для ролей. Профили определяются на уровне
кластера баз данных и назначаются ролям. Новый профиль создает
команда CREATE PROFILE, изменяет — ALTER PROFILE, удаляет —
DROP PROFILE.
Профиль назначается при создании роли или командой ALTER ROLE.
Новым ролям по умолчанию назначается профиль default. Исходно
профиль default не устанавливает ограничений, но их можно добавить
командой ALTER PROFILE. Если роли назначен профиль, отличный от
default, рассмотренный выше модуль passwordcheck не работает.
Управлять профилями с помощью указанных команд разрешено
только суперпользователям или пользователям, включенным
в предустановленную роль pg_manage_profiles.
8
Попытки входа
FAILED_LOGIN_ATTEMPTS
количество неудачных попыток входа до блокировки пользователя
ALTER ROLE … ACCOUNT UNLOCK
FAILED_AUTH_KEEP_TIME
время в днях до сброса счетчика неудачных попыток
Параметр профиля FAILED_LOGIN_ATTEMPTS ограничивает
количество неудачных попыток входа. По превышении этого количества
пользователь блокируется. Суперпользователь может разблокировать
заблокированную роль командой ALTER ROLE с предложением
ACCOUNT UNLOCK.
Параметр профиля FAILED_AUTH_KEEP_TIME задает время в днях
с момента первой неудачной попытки входа; при попытке входа по
истечении этого времени счетчик неудачных попыток сбрасывается,
а пользователь разблокируется.
9
Время жизни пароля
смена пароля
VALID UNTIL /
PASSWORD_LIFE_TIME PASSWORD_GRACE_TIME
пароль действует пароль еще действует,
но выдаются предупреждения
о необходимости смены
последний
вход в сеанс
USER_INACTIVE_TIME
Параметр профиля PASSWORD_LIFE_TIME задает период в днях,
в течение которого пароль действителен. При установленном для роли
атрибуте VALID UNTIL будет выбираться наиболее короткий срок
действия пароля, исходя из этих двух значений.
Если установлен PASSWORD_GRACE_TIME, действие пароля
продлевается, но в течение этого периода выдаются предупреждение
о необходимости смены пароля. Если пароль так и не был изменен,
последующие попытки входа в сеанс будут отвергнуты.
Параметр профиля USER_INACTIVE_TIME задает максимальный
период в днях с момента последнего входа пользователя, в течение
которого пользователь должен снова войти в сеанс. В противном
случае пользователь блокируется.
10
Уровень сложности пароля
PASSWORD_MIN_UNIQUE_CHARS
минимальное количество уникальных символов
PASSWORD_MIN_LEN
минимальная длина
PASSWORD_REQUIRE_COMPLEX
проверка надежности пароля
PASSWORD_REUSE_TIME и PASSWORD_REUSE_MAX
время в днях и количество смен паролей, после которых старый пароль
можно использовать повторно
Параметры профиля PASSWORD_MIN_UNIQUE_CHARS и
PASSWORD_MIN_LEN ограничивают минимальное количество
уникальных символов в пароле и его минимальную длину.
Параметр PASSWORD_REQUIRE_COMPLEX требует, чтобы пароль
содержал и буквы, и небуквенные символы, а также не содержал имя
пользователя.
Параметры профиля PASSWORD_REUSE_TIME и
PASSWORD_REUSE_MAX определяют, когда пароль может быть
использован повторно: для этого должно пройти указанное время
и пароль должен быть сменен указанное количество раз.
12
Итоги
Расширение passwordcheck проверяет надежность паролей
Встроенный механизм профилей позволяет настраивать
политики использования системы пользователями
Профиль позволяет задавать уровень сложности пароля
и ограничивать время его жизни
Можно ограничивать количество неудачных попыток ввода
пароля
13
Практика
1. Создайте профиль с ограничением на минимальное
количество разных символов в пароле и проверьте его.
2. Установите ограничение в две неудачные попытки ввода
пароля для пользователя и проверьте его работу.
1. Создайте профиль mgr1 с ограничением
PASSWORD_MIN_UNIQUE_CHARS = 8. Зарегистрируйте пользователя
mgr1 с профилем mgr и проверьте возможность установки пароля не
менее, чем с восемью отличающимися символами.
2. Используйте настройку LIMIT FAILED_LOGIN_ATTEMPTS по
аналогии с демонстрацией.