如何为 Postgres SSPI 设置 SPN

如何为 Postgres SSPI 设置 SPN

我正在尝试设置 Postgres 以支持 SSPI/Kerberos,但是我认为我还没有找到使其运行所需的正确 SPN。

背景详情:

  • postgres 的服务帐户:“postgres”
  • 域名:'testdomain.com'
  • 域控制器:'dc.testdomain.com'

我尝试过以下 SPN,但毫无效果:

  • setspn -A HOST/testdomain.com postgres
  • setspn -A HOST/testdomain postgres
  • setspn -A POSTGRES/testdomain.com postgres
  • setspn -A POSTGRES/testdomain postgres
  • setspn -A POSTGRES/dc.testdomain.com postgres

有人有什么建议吗?

答案1

SPN 不使用域名和/或域控制器的名称,而是使用将用于连接到服务的 FQDN。响应的 Web 服务器的 SPNwww.domain.com将是HTTP/www.domain.com

接下来,您需要将 SPN 分配给运行该服务的用户帐户;如果该服务作为域计算机运行LocalSystemNetworkService在域计算机上运行,​​那将是该计算机的机器帐户;否则它就是运行该服务的实际用户帐户。

您的问题中缺少的是运行 Postgres 的服务器的名称;假设它是servername.testdomain.com,则设置 SPN 的命令将是:

setspn -S POSTGRES/servername.testdomain.com postgres

或者(使用域 NetBIOS 名称并假设它是TESTDOMAIN

setspn -S POSTGRES/servername.testdomain.com TESTDOMAIN\postgres

资料来源:

https://wiki.postgresql.org/wiki/Configuring_for_single_sign-on_using_SSPI_on_Windows
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc731241(v=ws.11)

答案2

正确的做法是:

setspn -A postgres/machinename.domainname serviceaccount

相关内容