Postgres 身份验证类型“本地”与“主机 127.0.0.1”

Postgres 身份验证类型“本地”与“主机 127.0.0.1”

我有一台 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 开销

相关内容