PostgreSQL服务器配置之常用连接和认证方式

1. 连接设置

listen_addresses

指定服务器在哪些 TCP/IP 地址上监听客户端连接。值的形式是一个逗号分隔的主机名和/或数字 IP 地址列表。
默认值是localhost,它只允许建立本地 TCP/IP “环回”连接。特殊项*对应所有可用 IP 接口。项0.0.0.0允许监听所有 IPv4 地址并且::允许监听所有 IPv6 地址。
如果列表为空,服务器将根本不会监听任何 IP 接口,在这种情况中只能使用 Unix 域套接字来连接它。

password_encryption

当在CREATE USER或ALTER ROLE 中指定了一个密码时,这个参数决定加密密码所使用的算法。
默认值是md5, 它将密码存储为MD5哈希(也接受on作为md5的别名)。
将该参数设置为scram-sha-256将使用SCRAM-SHA-256加密密码。

max_connections

决定数据库的最大并发连接数。默认值通常是 100 个连接

2. 常用认证方式

信任认证(trust)

当trust认证被指定时,无条件通过认证,PostgreSQL假设任何可以连接到服务器的人都被授权使用他们指定的任何数据库用户名(即使是超级用户)访问数据库。
但是在database和 user列中设置的限制仍然适用。只有当在操作系统层对进入服务器的连接有足够保护时,才应该使用这种方法。

口令认证(scram-sha-256,md5 ,password)

方法scram-sha-256执行SCRAM-SHA-256认证。这是一种挑战-响应架构, 可防止密码在不可信连接上嗅探,并支持以密码散列的形式将密码存储在服务器上, 这种形式被认为是安全的。
这是目前提供的方法中最安全的方法。

方法md5使用自定义安全性较低的质询-响应机制。它使用加密密码进行认证,可以防止密码嗅探,并避免以纯文本形式将密码存储在服务器上,
但如果攻击者设法从服务器窃取密码哈希,则不提供保护。而且, MD5哈希算法现在不再被认为对于确定的攻击是安全的。

方法password用明文密码进行认证

Ident 认证

ident 认证方法通过从一个 ident 服务器获得客户端的操作系统用户名并且用它作为被允许的数据库用户名(和可选的用户名映射)来工作。
也就是说客户端操作系统中存在对应的用户。它只在 TCP/IP 连接上支持。 (即 host, hostssl, hostnossl)。通过更改map允许在系统和数据库用户名之间的映射。

Peer 认证

Peer 认证方法通过从内核获得客户端的操作系统用户名并把它用作被允许的数据库用户名(和可选的用户名映射)来工作。这种方法只在本地连接上支持。
同样需要客户端操作系统中存在对应的用户。通过更改map允许在系统和数据库用户名之间的映射。