阅读(4795) (0)

PostgreSQL pg_authid

2021-08-23 15:47:01 更新

目录pg_authid包含关于数据库授权标识符(角色)的信息。角色把用户的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管 rolcanlogin设置与否)都能够把其他角色作为成员,参见pg_auth_members

由于这个目录包含口令,它不能是公共可读的。pg_roles是在pg_authid上的一个公共可读视图,它隐去了口令域。

第 21 章包含关于用户和权限管理的详细信息。

由于用户标识符是集簇范围的,pg_authid在一个集簇的所有数据库之间共享:在一个集簇中只有一份pg_authid拷贝,而不是每个数据库一份。

表 51.8. pg_authid Columns

列类型

描述

oid oid

行标识符

rolname name

角色名

rolsuper bool

角色有超级用户权限

rolinherit bool

如果本角色是另一个角色的成员,本角色是否自动另一个角色的权限

rolcreaterole bool

角色能创建更多角色

rolcreatedb bool

角色能创建数据库

rolcanlogin bool

角色是否能登录。即该角色是否能够作为初始会话授权标识符

rolreplication bool

角色是一个复制角色。复制角色可以启动复制连接并且创建和删除复制槽。

rolbypassrls bool

角色是否可以绕过所有的行级安全性策略,详见第 5.8 节

rolconnlimit int4

对于可以登录的角色,本列设置该角色可以同时发起最大连接数。-1表示无限制。

rolpassword text

密码(可能被加密过),如果没有口令则为空。格式取决于使用的加密方法的形式。

rolvaliduntil timestamptz

口令过期时间(只用于口令鉴定),如果永不过期则为空


对于一个MD5加密的口令,rolpassword列将由字符串md5后面跟上一个32字符的十六进制MD5哈希值构成。MD5哈希值将是该用户的口令串接上它们的用户名。例如,如果用户joe的口令是xyzzy,则PostgreSQL将存储 xyzzyjoe的md5哈希。

如果口令采用SCRAM-SHA-256加密,它的格式是:

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

其中saltStoredKeyServerKey是Base64编码格式。这种格式与RFC 5803说明的格式相同。

不遵守上述格式的口令被假定为未加密。