Table of Contents
当客户端应用程序连接到数据库服务器时,它必须在握手请求中声明希望以哪个 PostgreSQL 数据库用户的身份进行连接。在 SQL 环境内部,生效的数据库用户名严格决定了其在各个数据库对象上的操作权限(详见 Chapter 21)。因此,严格把控哪些客户端能够连接到哪些用户账户,构成了系统安全的第一道防线。
正如 Chapter 21 中所述,PostgreSQL 在底层使用“角色”来统筹管理权限。在本章中,我们通篇使用数据库用户来专门指代“具有 LOGIN 登录权限的角色”。
身份认证(Authentication)是指数据库服务器核实客户端身份的物理校验过程,进而判定该客户端应用(或运行该应用的终端用户)是否被系统授权以所请求的数据库用户名建立连接。
PostgreSQL 提供了全套工业级的客户端认证方法。服务器可以根据客户端的来源物理 IP 地址、待连接的目标数据库以及请求登录的用户名等多个维度的组合,精细匹配并选用不同的认证方法。