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