SQL OLTP 的 Kerberos 身份验证 (SharePoint Server 2010)

 

适用于: SharePoint Server 2010

上一次修改主题: 2016-11-30

在该方案中,我们演练在示例环境中为 SQL Server 群集配置 Kerberos 身份验证的过程。该过程完成后,我们验证 SharePoint Server 服务是否使用 Kerberos 协议向该群集进行身份验证。

在本方案中,您将执行以下操作:

  • 将现有 SQL Server 2008 R2 群集配置为使用 Kerberos 身份验证

  • 验证客户端是否可以使用 Kerberos 身份验证向群集进行身份验证

  • 创建要在以后的方案中使用的测试数据库和示例数据

备注

不需要将 SQL Server 的 Kerberos 身份验证用于核心 SharePoint Server 数据服务(例如,与平台数据库的连接)。示例环境具有唯一的 SQL Server 群集,该群集承载以后的方案中用到的其他示例数据库。为了使委派在这些方案中正常工作,SQL Server 群集必须接受经过 Kerberos 身份验证的连接。

配置清单

配置区域 说明

配置 DNS

为 SQL Server 群集 IP 创建 DNS (A) 主机记录

配置 Active Directory

为 SQL Server 服务创建服务主体名称 (SPN)

验证 SQL Server Kerberos 配置

使用 SQL Server Management Studio 查询 SQL 连接元数据以确保使用了 Kerberos 身份验证协议

方案的环境详细信息

方案基础结构关系图

该方案演示配置为使用 SQL 别名的 SharePoint Server 服务器场,以便连接到配置为使用 Kerberos 身份验证的 SQL Server 群集。

分步配置说明

配置 DNS

为环境中的 SQL Server 群集配置 DNS。在该示例中,我们有一个 SQL Server 群集 MySqlCluster.vmlab.local,它运行在端口 1433 上(群集 IP 为 192.168.8.135/4)。该群集是主动/被动群集,SQL Server 数据库引擎运行在第一个节点的默认实例上。

有关如何配置 DNS 的常规信息,请参阅管理 DNS 记录(该链接可能指向英文页面)

在该示例中,我们为 SQL Server 群集配置了 DNS (A) 记录。

备注

从技术上讲,由于 SQL Server SPN 包括实例名称(如果您在同一台计算机上使用第二个命名实例),因此您可以作为 CNAME 别名注册该群集的 DNS 主机并避免附录 A Kerberos 配置的已知问题 (SharePoint Server 2010)中所述的 CNAME 问题。但是,如果您选择使用 CNAME,则必须使用 DNS (A) 记录主机名为 CNAME 别名注册 SPN。

配置 Active Directory

为使 SQL Server 使用 Kerberos 身份验证对客户端进行身份验证,您必须在运行 SQL Server 的服务帐户上注册服务主体名称 (SPN)。SQL Server 数据库引擎的服务主体名称对将使用默认实例而非 SQL Server 命名实例的配置使用以下格式:

MSSQLSvc/<FQDN>:port

有关为 SQL Server 2008 注册 SPN 的详细信息,请参阅注册服务主体名称

在本例中,我们使用以下 SetSPN 命令在 SQL Server 数据库引擎服务帐户 (vmlab\svcSQL) 上配置了 SQL Server SPN:

SetSPN -S MSSQLSVC/MySQLCluster.vmlab.local:1433 vmlab\svcSQL

SQL Server 命名实例

如果使用 SQL Server 命名实例而不是默认实例,则必须专门针对 SQL Server 实例和 SQL Server Browser 服务注册 SPN。请参阅以下文章,获取有关针对命名实例配置 Kerberos 身份验证的详细信息:

SQL 别名

作为最佳实践,在构建服务器场时,应考虑使用 SQL 别名来连接到您的 SQL Server 计算机。如果您选择使用 SQL 别名,这些连接的 Kerberos SPN 格式不会更改。您在 SQL Server 的 SPN 中继续使用注册的 DNS 主机名(A 记录)。例如,如果为“MySQLCluster.vmlab.local”注册别名“SPFARMSQL”,则当您连接到 SPFarmSQL 时,SPN 仍为“MSSQLSVC/MySQLCluster.vmlab.local:1433”。

验证 SQL Server Kerberos 配置

在配置 DNS 和服务主体名称时,您可以重新启动运行 SharePoint Server 的计算机并验证 SharePoint Server 服务现在是否使用 Kerberos 身份验证向 SQL Server 进行身份验证。

验证群集配置

  1. 重新启动运行 SharePoint Server 的计算机 — 该操作会重新启动所有服务并强制这些服务重新连接并使用 Kerberos 身份验证重新进行身份验证。

  2. 打开 SQL Server Management Studio 并运行以下查询:

    Select 
       s.session_id,
       s.login_name,
       s.host_name,
       c.auth_scheme
    from
    sys.dm_exec_connections c
    inner join
    sys.dm_exec_sessions s
    on c.session_id = s.session_id
    

    该查询返回有关每个会话和连接的元数据。会话数据可帮助识别连接源,会话信息可显示连接的身份验证方案。

  3. 验证是否使用 Kerberos 身份验证对 SharePoint Server 服务进行身份验证。如果 Kerberos 身份验证配置正确,查询结果的“auth_scheme”列中会显示“Kerberos”。

创建测试 SQL Server 数据库和测试表

要在本文档的方案中包含的各种 SharePoint Server 服务应用程序中测试委派,必须为要访问的这些服务配置一个测试数据源。在该方案的最后一步中,须配置一个名为“Test”(测试)的测试数据库以及一个名为“Sales”(销售额)的测试表,稍后会使用这个数据库和测试表。

  1. 在 SQL Server Management Studio 中,新建一个名为“Test”(测试)的数据库。在创建数据库时保留默认设置。

  2. 在“Test”(测试)数据库中,使用以下架构新建一个表:

    列名称 数据类型 是否允许 Null 值

    Region

    nvarchar(10)

    Year

    nvarchar(4)

    Amount

    money

    RowId

    int

  3. 使用名称“Sales”(销售额)保存该表。

  4. 在 Management Studio 中,使用测试数据填充该表。数据本身无关紧要,不会影响后面方案的功能。只需几行数据就够了。