51.8. pg_authid

В каталоге pg_authid содержится информация об идентификаторах для авторизации (ролях). Роль включает в себя концепции «пользователей» и «групп». Пользователь по существу представляет собой частный случай роли, с флагом rolcanlogin. Любая роль (с или без флага rolcanlogin) может включать другие роли в качестве членов; см. pg_auth_members.

Так как в этом каталоге содержатся пароли, он не должен быть открыт для всех. Для общего пользования предназначено представление pg_roles на базе pg_authid, в котором поле пароля очищено.

За подробной информацией о пользователях и управлении правами обратитесь к Главе 20.

Так как пользователи определяются глобально, каталог pg_authid разделяется всеми базами данных кластера; есть только единственная копия pg_authid в кластере, а не отдельные в каждой базе данных.

Таблица 51.8. Столбцы pg_authid

Тип столбца

Описание

oid oid

Идентификатор строки

rolname name

Имя роли

rolsuper bool

Роли имеет права суперпользователя

rolinherit bool

Роль автоматически наследует права ролей, в которые она включена

rolcreaterole bool

Роль может создавать другие роли

rolcreatedb bool

Роль может создавать базы данных

rolcanlogin bool

Роль может подключаться к серверу. То есть эта роль может быть указана в качестве начального идентификатора авторизации сеанса.

rolreplication bool

Роль является ролью репликации. Такие роли могут устанавливать соединения для репликации и создавать/удалять слоты репликации.

rolbypassrls bool

Роль не подчиняется никаким политикам защиты на уровне строк; за подробностями обратитесь к Разделу 5.8.

rolconnlimit int4

Для ролей, которые могут подключаться к серверу, это значение задаёт максимально разрешённое для этой роли число одновременных подключений. При значении -1 ограничения нет.

rolprofile regprofile (ссылается на pg_profile.oid)

OID профиля пользователя

rolloginattempts int4

Число следующих подряд неудачных попыток входа пользователя. Это число равно 0, если параметр FAILED_LOGIN_ATTEMPTS соответствующего профиля равен UNLIMITED (см. CREATE PROFILE). После успешного входа значение rolloginattempts также сбрасывается в 0.

rolstatus int2

Состояние роли: 0 — роль активна, 1 — роль заблокирована вручную (см. параметр ACCOUNT LOCK в ALTER ROLE), 2 — роль заблокирована из-за бездействия (см. параметр USER_INACTIVE_TIME в CREATE PROFILE), 4 — роль заблокирована из-за превышения предельного числа неудачных попыток входа (см. параметр FAILED_LOGIN_ATTEMPTS в CREATE PROFILE)

rollastlogin timestamptz

Время последнего подключения пользователя роли

rolfirstfailedauth timestamptz

Время первой неудачной попытки подключения пользователя роли

rolpassword text

Пароль (возможно зашифрованный); NULL, если он не задан. Его формат зависит от используемого вида шифрования.

rolvaliduntil timestamptz

Срок действия пароля (используется только при аутентификации по паролю); NULL, если срок действия не ограничен

rolpasssetat timestamptz

Время установления текущего пароля (используется только при аутентификации по паролю); null, если пароль не установлен.


Если пароль зашифрован MD5, значение в rolpassword начинается со строки md5, за которой идёт 32-символьный шестнадцатеричный хеш MD5. Этот хеш вычисляется для пароля пользователя с добавленным за ним его именем. Например, если у пользователя joe пароль xyzzy, Postgres Pro сохранит в этом поле md5-хеш строки xyzzyjoe.

Если пароль зашифрован по алгоритму SCRAM-SHA-256, он имеет формат:

SCRAM-SHA-256$<число итераций>:<соль>$<СохранённыйКлюч>:<КлючСервера>

Здесь соль, СохранённыйКлюч и КлючСервера кодируются в формате Base64. Этот формат соответствует стандарту RFC 5803.

Пароль, не удовлетворяющий ни одному из этих форматов, считается незашифрованным.