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.

Однако если настроена аутентификация 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

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

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

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

Важно

Все буквы или их аналоги в языках без разделения на регистры (хинди, китайский и т.п.) в кодировке UTF-8 считаются строчными буквами.

Замечания

Изменить значения параметров профиля позволяет команда 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;

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

CREATE SERVER

CREATE SERVER — define a new foreign server

Synopsis

CREATE SERVER [IF NOT EXISTS] server_name [ TYPE 'server_type' ] [ VERSION 'server_version' ]
    FOREIGN DATA WRAPPER fdw_name
    [ OPTIONS ( option 'value' [, ... ] ) ]

Description

CREATE SERVER defines a new foreign server. The user who defines the server becomes its owner.

A foreign server typically encapsulates connection information that a foreign-data wrapper uses to access an external data resource. Additional user-specific connection information may be specified by means of user mappings.

The server name must be unique within the database.

Creating a server requires USAGE privilege on the foreign-data wrapper being used.

Parameters

IF NOT EXISTS

Do not throw an error if a server with the same name already exists. A notice is issued in this case. Note that there is no guarantee that the existing server is anything like the one that would have been created.

server_name

The name of the foreign server to be created.

server_type

Optional server type, potentially useful to foreign-data wrappers.

server_version

Optional server version, potentially useful to foreign-data wrappers.

fdw_name

The name of the foreign-data wrapper that manages the server.

OPTIONS ( option 'value' [, ... ] )

This clause specifies the options for the server. The options typically define the connection details of the server, but the actual names and values are dependent on the server's foreign-data wrapper.

Notes

When using the dblink module, a foreign server's name can be used as an argument of the dblink_connect function to indicate the connection parameters. It is necessary to have the USAGE privilege on the foreign server to be able to use it in this way.

Examples

Create a server myserver that uses the foreign-data wrapper postgres_fdw:

CREATE SERVER myserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'foo', dbname 'foodb', port '5432');

See postgres_fdw for more details.

Compatibility

CREATE SERVER conforms to ISO/IEC 9075-9 (SQL/MED).