pg_authid#

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

Поскольку этот каталог содержит пароли, он не должен быть общедоступным. pg_roles — это общедоступное представление в pg_authid, которое опустошает поле пароля.

Поскольку идентификаторы пользователей являются общекластерными, pg_authid распространяется на все базы данных кластера: на каждый кластер приходится только одна копия pg_authid, а не на каждую базу данных.

Таблица 53.8 Столбцы pg_authid

Столбец

Тип данных

Описание

oid

oid

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

rolname

name

имя роли

rolsuper

bool

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

rolinherit

bool

Role автоматически наследует привилегии ролей, членом которых он является

rolcreaterole

bool

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

rolcreatedb

bool

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

rolcanlogin

bool

Role может войти в систему. То есть эту роль можно задать в качестве первоначального идентификатора авторизации сеанса

rolreplication

bool

Role - роль репликации. Роль репликации может инициировать соединения репликации и создавать и удалять слоты репликации

rolbypassrls

bool

Role обходит все политики безопасности на уровне строк, см. Раздел 5.8 для получения дополнительной информации

rolconnlimit

int4

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

rolpassword

text

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

rolvaliduntil

timestamptz

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

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

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


SCRAM-SHA-256$<iteration count>:<salt>$<StoredKey>:<ServerKey>

где salt, StoredKey и ServerKey находятся в формате с кодировкой Base64. Этот формат идентичен формату, указанному в RFC 5803.

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