【问题标题】:Microsoft SQL Server auth_scheme do not show Kerberos [closed]Microsoft SQL Server auth_scheme 不显示 Kerberos [关闭]
【发布时间】:2020-03-09 06:11:27
【问题描述】:

我在 AWS 中安装了一个小型测试环境,以使用 GitHub 上的 SQL Server Cli 测试 Kerberos 身份验证。我按照一些简单的步骤进行了设置。

  1. 使用 Windows Server 2019 Base 安装了 Active Directory 节点。
  2. 使用 Windows Server 2012-R2 和 SQL Server 2016 SP2 Enterprise 安装了第二个节点。
  3. 我将 SQL Server 节点加入了 AD,并将身份验证部分更改为使用我的 AD。
  4. 我运行这个查询来测试 Kerberos

    select auth_scheme from sys.dm_exec_connections where session_id=@@spid
    

此查询仅返回 NTLM。有没有办法解决这个问题,还是我在设置中遗漏了一些明显的东西?

编辑:向问题添加了 Raghavendra 查询。

SQL\Administrator           TSQL    NTLM    SQL Microsoft SQL Server Management Studio - Query
NT SERVICE\SQLSERVERAGENT   TSQL    NTLM    SQL SQLAgent - Generic Refresher
NT SERVICE\SQLSERVERAGENT   TSQL    NTLM    SQL SQLAgent - Email Logger
SQL\Administrator           TSQL    NTLM    SQL Microsoft SQL Server Management Studio
NT SERVICE\SQLTELEMETRY     TSQL    NTLM    SQL SQLServerCEIP
SQL\Administrator           TSQL    NTLM    SQL Microsoft SQL Server Management Studio - Query

setspn -L 的输出

PS C:\Users\Administrator> setspn -L sql
Registered ServicePrincipalNames for CN=SQL,CN=Computers,DC=mydomain,DC=com:
        TERMSRV/SQL
        TERMSRV/sql.mydomain.com
        MSSQLSvc/sql.mydomain.com:1433
        MSSQLSvc/sql.mydomain.com
        WSMAN/sql
        WSMAN/sql.mydomain.com
        RestrictedKrbHost/SQL
        HOST/SQL
        RestrictedKrbHost/sql.mydomain.com
        HOST/sql.mydomain.com

【问题讨论】:

  • 安装 AD 时,您为域选择了哪个名称?
  • 我用过 mydomain.com

标签: sql-server windows amazon-web-services active-directory sql-server-2016


【解决方案1】:

您可以尝试使用以下查询吗?

SELECT
    a.session_id,
    b.connect_time,
    a.login_time,
    a.login_name,
    b.protocol_type,
    b.auth_scheme,
    a.HOST_NAME,
    a.program_name
FROM sys.dm_exec_sessions a
JOIN sys.dm_exec_connections b
ON a.session_id = b.session_id

更多信息请参考link

【讨论】:

  • 将输出添加到问题中
【解决方案2】:

为了让“Kerberos”成为auth_scheme,至少您需要以 AD 用户身份登录,而不是本地用户。从我在sys.dm_exec_sessions 输出中看到的内容来看,所有连接都是在NT Service 下建立的,这是一个本地服务帐户,或者是本地用户(“本地”意味着它是在您的 SQL 框上创建的,而不是在 AD 中)。

您需要创建一个域用户,例如 MyDomain\TestUser,并使用其凭据登录到您的 SQL 框(或至少运行您的查询工具)。

如果这还不够,您应该咨询此help article 以了解其他配置步骤。特别是,请查看适用于 SQL Server 的 Kerberos 配置管理器(其下载链接可在上述页面上找到)。 如果我没记错的话,除了 SPN 之外,您还需要为 SQL Server 服务帐户设置一些标志,但我不记得它们的确切名称 - “帐户受信任用于委派”或类似的东西。

【讨论】:

  • 谢谢你,罗杰。我将 SQL 服务更改为在域管理员帐户下运行,重新启动,然后以该帐户登录并运行与上述相同的查询。 auth_scheme 仍然只在两个查询中返回 NTLM。 login_name 现在改为显示 MYDOMAIN\petter。
猜你喜欢
  • 2019-08-12
  • 1970-01-01
  • 2023-03-21
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 2023-03-08
相关资源
最近更新 更多