Redrock Postgres 搜索 英文
版本: 11 / 12 / 13 / 14 / 15 / 16 / 17

20.7. SSPI 身份验证 #

SSPIWindows 的一项技术,用于进行安全身份验证和单点登录。PostgreSQL 将以 协商 模式使用 SSPI,这种模式尽可能使用 Kerberos,其他情况下会自动回退到 NTLMSSPIGSSAPI 可以作为客户端和服务器进行互操作,例如,SSPI 客户端可以向 GSSAPI 服务器进行身份验证。建议在 Windows 客户端和服务器上使用 SSPI,而在非 Windows 平台上使用 GSSAPI

使用 Kerberos 身份验证时,SSPI 的工作方式与 GSSAPI 相同;有关详细信息,请参阅第 20.6 节

对于 SSPI,支持以下配置选项

include_realm

如果设置为 0,通过用户名映射之前 (第 20.2 节) 会从已认证用户主体中删除领域名称。这是不推荐的做法,并且主要用于向后兼容,因为它在多领域环境中不安全,除非也使用 krb_realm。建议将 include_realm 保留为默认设置 (1),并通过 pg_ident.conf 提供明确映射,将主体名称转换为 PostgreSQL 用户名。

compat_realm

如果设置为 1,则会使用域的 SAM 兼容名称(也称为 NetBIOS 名称)作为 include_realm 选项。这是默认设置。如果设置为 0,则会使用 Kerberos 用户主体名称中的真实域名称。

除非服务器在域帐户下运行(这包括域成员系统上的虚拟服务帐户),并且所有通过 SSPI 进行身份验证的客户端也正在使用域帐户(否则身份验证会失败),否则不要禁用此选项。

upn_username

如果启用此选项且启用 compat_realm,则 Kerberos UPN 中的用户名将用于身份验证。如果禁用此选项(默认设置),则将使用 SAM 兼容的用户名。默认情况下,这两个名称对于新用户帐户是相同的。

请注意,如果未指定明确用户名,libpq 会使用 SAM 兼容的名称。如果您使用 libpq 或基于其的驱动程序,则应将此选项保留为禁用状态或在连接字符串中明确指定用户名。

map

允许在系统和数据库用户名之间进行映射。有关详情,请参见 第 20.2 节。对于 SSPI/Kerberos 主体(如 [email protected](或不太常见的 username/[email protected])),用于映射的用户名是 [email protected](或 username/[email protected]),除非 include_realm 已设置为 0,在这种情况下,username(或 username/hostbased) 在映射时将视为系统用户名。

krb_realm

设置与用户主体名称匹配的领域。如果设置此参数,则只会接受该领域的使用者。如果未设置此参数,则可以连接任何领域的使用者(具体取决于所执行的用户名映射)。