Postgres Pro Enterprise 13
Профили пользователей
13
Авторские права
© Postgres Professional, 2023 год.
Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания 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_libraries или
LOAD.
Модуль passwordcheck выполняет следующие проверки паролей на
простоту:
пароль должен содержать не менее 8 символов;
пароль не должен содержать имя роли;
пароль должен содержать и буквы, и иные символы.
Модуль не предусматривает конфигурационных настроек.
6
Профили пользователей
Профиль
Попытки входа
Время жизни пароля
Уровень сложности пароля
7
Профиль
Профиль ограничивает использование системы
пользователем
количество неудачных попыток входа
время жизни пароля и время неактивности
уровень сложности пароля
По умолчанию к ролям применяется профиль default
не устанавливает никаких ограничений, но это можно изменить
Ядро Postgres Pro обеспечивает гораздо более гибкое управление
парольными политиками, чем простое расширение passwordcheck.
Профиль ограничивает использование базы данных и устанавливает
парольную политику для ролей. Профили определяются на уровне
кластера баз данных и назначаются ролям. Создает новый профиль
команда CREATE PROFILE, изменяет — ALTER PROFILE, удаляет
профиль — DROP PROFILE.
Профиль назначается при создании роли или командой ALTER ROLE.
Новым ролям по умолчанию назначается профиль default. Исходно
профиль default не устанавливает ограничений, их можно добавить
командой ALTER PROFILE. Если роли назначен профиль, отличный от
default, модуль passwordcheck, рассмотренный ранее, не работает.
8
Попытки входа
FAILED_LOGIN_ATTEMPTS
количество неудачных попыток входа до блокировки пользователя
ALTER ROLE … ACCOUNT UNLOCK
FAILED_AUTH_KEEP_TIME
время в днях до сброса счетчика неудачных попыток
Параметр профиля FAILED_LOGIN_ATTEMPTS ограничивает
количество неудачных попыток входа в сеанс. По превышении этого
количества пользователь блокируется. Суперпользователь может
разблокировать заблокированную роль командой ALTER ROLE
с предложением ACCOUNT UNLOCK.
Параметр профиля FAILED_AUTH_KEEP_TIME задает время в днях
с момента первой неудачной попытки входа; при попытке входа по
истечении этого времени счетчик неудачных попыток сбрасывается,
а пользователь разблокируется.
9
Время жизни пароля
смена пароля
PASSWORD_LIFE_TIME PASSWORD_GRACE_TIME
пароль действует пароль еще действует,
но выдаются предупреждения
о необходимости смены
последний
вход в сеанс
USER_INACTIVE_TIME
Параметр профиля PASSWORD_LIFE_TIME задает период в днях,
в течение которого пароль действителен.
Если установлен 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 по
аналогии с демонстрацией.