CREATE PROFILE
CREATE PROFILE — создать профиль
Синтаксис
CREATE PROFILE [ IF NOT EXISTS ]name
[ 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 ]name
FROMсуществующий_профиль
Описание
Команда CREATE PROFILE
добавляет новый профиль в кластер баз данных Postgres Pro. Выполнять эту команду разрешено только суперпользователям базы данных или пользователям с правами роли pg_manage_profiles
.
Профиль определяет набор параметров, ограничивающих использование базы данных. В частности, профили Postgres Pro позволяют установить парольную политику для пользователей, которым они назначены. Профили определяются на уровне кластера баз данных, поэтому они распространяются на все базы в кластере.
По умолчанию все параметры нового профиля принимают значения DEFAULT
, то есть наследуют значения, установленные для встроенного профиля default
. Изначально профиль default
не устанавливает никаких ограничений, но это можно изменить, воспользовавшись командой ALTER PROFILE
. Значение UNLIMITED
указывает, что данный параметр не накладывает ограничений.
Когда роли назначается профиль, на неё распространяются все установленные в нём ограничения. Всем новым ролям по умолчанию назначается профиль default
, но вы можете явно задать другой профиль при создании роли.
Параметры
name
Имя нового профиля.
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.Если также установлен параметр
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;
Иногда удобно использовать существующий профиль в качестве шаблона для нового.