CREATE PROFILE

CREATE PROFILE — создать профиль

Синтаксис

CREATE PROFILE [ IF NOT EXISTS ] имя [ LIMIT параметр значение [ ... ] ]

Здесь параметр:

      FAILED_LOGIN_ATTEMPTS
    | PASSWORD_REUSE_TIME
    | PASSWORD_REUSE_MAX
    | PASSWORD_LIFE_TIME
    | PASSWORD_GRACE_TIME
    | USER_INACTIVE_TIME
    | FAILED_AUTH_KEEP_TIME
    | PASSWORD_MIN_UNIQUE_CHARS
    | PASSWORD_MIN_LEN
    | PASSWORD_REQUIRE_COMPLEX

CREATE PROFILE [ IF NOT EXISTS ] имя FROM существующий_профиль

Описание

Команда CREATE PROFILE добавляет новый профиль в кластер баз данных Postgres Pro. Выполнять эту команду разрешено только суперпользователям базы данных или пользователям с правами роли pg_manage_profiles.

Профиль определяет набор параметров, ограничивающих использование базы данных. В частности, профили Postgres Pro позволяют установить парольную политику для пользователей, которым они назначены. Профили определяются на уровне кластера баз данных, поэтому они распространяются на все базы в кластере.

По умолчанию все параметры нового профиля принимают значения DEFAULT, то есть наследуют значения, установленные для встроенного профиля default. Изначально профиль default не устанавливает никаких ограничений, но это можно изменить, воспользовавшись командой ALTER PROFILE. Значение UNLIMITED указывает, что данный параметр не накладывает ограничений.

Когда роли назначается профиль, на неё распространяются все установленные в нём ограничения. Всем новым ролям по умолчанию назначается профиль default, но вы можете явно задать другой профиль при создании роли.

Параметры

имя

Имя нового профиля.

FAILED_LOGIN_ATTEMPTS значение

Задаёт число неудачных попыток входа, при котором роль блокируется. Суперпользователь может разблокировать заблокированную роль, выполнив команду ALTER ROLE с предложением ACCOUNT UNLOCK.

Обратите внимание, что при каждой попытке входа со стороны пользователя фактически может предприниматься несколько попыток входа. Например, когда пользователь пытается подключиться к серверу, поддерживающему SSL, клиенты на базе libpq по умолчанию дополнительно предпринимают попытку подключения без SSL, если подключиться через SSL не удаётся.

Возможные значения: положительные целые числа, DEFAULT (по умолчанию) и UNLIMITED (без ограничения).

PASSWORD_REUSE_TIME значение

Задаёт период (в днях), в течение которого нельзя будет использовать старый пароль. Возможные значения: неотрицательные действительные числа, значения типа interval, DEFAULT и UNLIMITED.

Этот параметр надо устанавливать вместе с PASSWORD_REUSE_MAX, так как они действуют в совокупности. Если они оба имеют значение UNLIMITED, повторное использование паролей никак не ограничивается. Если же только один из них равен UNLIMITED, повторно использовать старые пароли будет нельзя.

PASSWORD_REUSE_MAX значение

Задаёт количество смен паролей, после которого можно будет повторно использовать старый пароль. Возможные значения: неотрицательные целые числа, DEFAULT и UNLIMITED.

Этот параметр надо устанавливать вместе с PASSWORD_REUSE_TIME, так как они действуют в совокупности. Если они оба имеют значение UNLIMITED, повторное использование паролей никак не ограничивается. Если же только один из них равен UNLIMITED, повторно использовать старые пароли будет нельзя.

PASSWORD_LIFE_TIME значение

Задаёт период (в днях), в течение которого можно использовать пароль на ведущем сервере. Возможные значения: действительные числа, значения типа interval, DEFAULT и UNLIMITED. Пересчитанное в секунды значение должно быть больше 0. По истечении срока действия пароля последующие попытки подключения соответствующей роли будут отвергнуты. Разблокировать роль и вернуть ей возможность подключения можно с помощью команды ALTER ROLE.

Однако если настроена аутентификация LDAP и эта роль не заблокирована в ней, то она по-прежнему сможет подключаться к резервным серверам.

Если также установлен параметр PASSWORD_GRACE_TIME, срок действия пароля продлевается на заданный период. В течение этого периода лояльности пользователю будет предлагаться сменить пароль, но при этом он сможет осуществлять вход.

PASSWORD_GRACE_TIME значение

Задаёт период (в днях), в течение которого будет выдаваться предупреждение об истечении срока действия пароля, но использование этого пароля будет разрешено. Задать срок действия пароля можно в атрибуте VALID UNTIL роли или в параметре PASSWORD_LIFE_TIME профиля.

Возможные значения: неотрицательные действительные числа, значения типа interval, DEFAULT и UNLIMITED. Если для параметра PASSWORD_GRACE_TIME задано значение UNLIMITED, срок действия пароля по сути не ограничен.

USER_INACTIVE_TIME значение

Задаёт максимальный период (в днях) с момента последнего входа пользователя, в течение которого пользователь должен осуществить очередное подключение. В случае отсутствия подключений по истечении этого периода роль пользователя блокируется. Суперпользователь может разблокировать заблокированную роль командой ALTER ROLE с предложением ACCOUNT UNLOCK. Возможные значения: действительные числа, значения типа interval, DEFAULT и UNLIMITED. Пересчитанное в секунды значение должно быть больше 0.

FAILED_AUTH_KEEP_TIME значение

Задаёт период (в днях), в течение которого хранится информация о первой ошибке аутентификации пользователя. Возможные значения: действительные числа, значения типа interval, DEFAULT или UNLIMITED. Пересчитанное в секунды значение должно быть больше 0. При попытке пользователя войти в систему по истечении этого периода, счётчик неудачных попыток входа (см. параметр FAILED_LOGIN_ATTEMPTS) сбрасывается, и пользователь разблокируется, если он был заблокирован ранее из-за ошибок аутентификации.

PASSWORD_MIN_UNIQUE_CHARS значение

Задаёт минимальное количество уникальных символов в пароле. Возможные значения: положительные целые числа, DEFAULT и UNLIMITED.

PASSWORD_MIN_LEN значение

Задаёт минимальное количество символов в пароле. Возможные значения: положительные целые числа, DEFAULT и UNLIMITED.

PASSWORD_REQUIRE_COMPLEX [значение]

Определяет, проверяется ли сложность пароля. Если эта проверка включена, пароль должен соответствовать следующим требованиям:

  • Пароль содержит и буквы, и небуквенные символы

  • Пароль не содержит имя пользователя

Возможные значения: логические значения или DEFAULT. Если значение параметра опущено, подразумевается true.

IF NOT EXISTS

Не считать ошибкой, если профиль с таким именем уже существует.

существующий_профиль

Имя копируемого существующего профиля. Новый профиль получит те же свойства, что и существующий, но будет независимым объектом.

Замечания

Изменить значения параметров профиля позволяет команда ALTER PROFILE, а удалить профиль — DROP PROFILE. Все параметры, задаваемые в CREATE PROFILE, можно изменить позже с помощью команды ALTER PROFILE.

Предупреждение

Параметры PASSWORD_REUSE_TIME и PASSWORD_REUSE_MAX могут не работать, если при установлении пароля он передаётся в зашифрованном виде. Так, в частности, устанавливает пароль команда \password в psql (за подробностями обратитесь к Подразделу «Метакоманды»). Если пароль хешируется с применением MD5, его можно в зашифрованном виде сравнить с предыдущим, и таким образом контролировать его в соответствии с параметрами PASSWORD_REUSE_TIME и PASSWORD_REUSE_MAX. Однако сравнивать пароли, зашифрованные алгоритмом SCRAM-SHA-256, не представляется возможным.

Предупреждение

Параметры PASSWORD_MIN_UNIQUE_CHARS, PASSWORD_MIN_LEN и PASSWORD_REQUIRE_COMPLEX не работают, если при смене пароля он передаётся в зашифрованном виде.

Примеры

Создание профиля admin_profile:

CREATE PROFILE admin_profile
    LIMIT PASSWORD_REUSE_MAX 10
          PASSWORD_REUSE_TIME 30;

Создание роли с профилем admin_profile:

CREATE ROLE admin WITH PROFILE admin_profile;

Создать новый профиль из существующего:

CREATE PROFILE administrator FROM admin_profile;

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