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.
Предполагается, что пароль, который не соответствует ни одному из этих форматов, не зашифрован.