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. Выполнять эту команду разрешено только суперпользователям кластера.
Профиль определяет набор параметров, ограничивающих использование базы данных. В частности, профили 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.Если также установлен параметр
PASSWORD_GRACE_TIME, срок действия пароля продлевается на заданный период. В течение этого периода лояльности пользователю будет предлагаться сменить пароль, но при этом он сможет осуществлять вход.PASSWORD_GRACE_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;
Иногда удобно использовать существующий профиль в качестве шаблона для нового.