我有一台 Postgres v10 服务器,只能与其建立本地连接。在文档我找到了两种配置此类身份验证过程的方法pg_hba.conf
:当地的和主持人使用 127.0.0.1:
# Allow any user on the local system to connect to any database with
# any database user name using Unix-domain sockets (the default for local
# connections).
#
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
# The same using local loopback TCP/IP connections.
#
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 trust
我应该选择哪种类型(Unix 域套接字还是 TCP/IP 套接字),是否存在最佳实践或安全问题,因为它们似乎都适用于我的用例?当然,我会选择除“信任”之外的另一种身份验证方法。
答案1
如果数据库客户端支持,我始终更喜欢使用 Unix 域套接字进行本地连接,原因如下:
- 您可以通过文件系统限制来保护对 Unix 域套接字的访问(具体取决于您的操作系统)
- 您可以使用 Unix 对等凭证安全地使用无密码访问
- 当允许通过 127.0.0.1 进行 TCP 访问时,所有本地进程都有权访问,因此您还必须使用密码验证或类似方法(除非您使用一些相当奇特的 iptables 插件)
- 您可以避免 TCP 开销