SQL Server Reporting Services 的标识委派 (SharePoint Server 2010)

 

适用于: SharePoint Server 2010

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

在该方案中,您在以 SharePoint 集成模式运行的扩展配置中配置一对负载平衡 SQL Server Reporting Services (SSRS) 服务器。这些服务器配置为接受 Kerberos 身份验证并且它们将身份验证委派给后端 SQL Server 群集。

在该方案中,SharePoint Server 服务器场和 Reporting Services 数据源位于同一域中;因此在该方案中,我们配置 Kerberos 约束委派以允许到后端数据源的标识委派。如果您需要向同一林内的其他域中的数据源进行身份验证,则必须配置基本(非约束)Kerberos 委派。请注意,Reporting Services 不利用 C2WTS,因此可以使用基本委派。

方案依赖关系

配置清单

配置区域 说明

Active Directory

创建 SSRS 服务帐户

配置 Kerberos 约束委派

SQL Server Reporting Services

在负载平衡的扩展模式下安装并配置 SSRS

修改 Web.Config

修改 ReportingServer.config

配置 SharePoint Server

配置 Reporting Services 集成

将报表服务器添加到集成中

设置服务器默认值

验证配置

为报告创建文档库

为 Reporting Services 配置网站集设置

在 SQL Server Business Intelligence Studio 中创建和发布测试报告

在 Internet Explorer 中查看测试报告

方案的环境详细信息

方案环境关系图

在该方案中,Internet Information Services (IIS) 应用程序池服务帐户配置为委派到 SQL Server Reporting Services (SSRS) 服务。SSRS 服务帐户配置为将凭据委派给 SQL Server 服务。请注意,SharePoint 集成模式下的 SQL Server Reporting Services 不利用服务器场内声明身份验证,并需要 Kerberos 身份验证才能进行委派验证。有关详细信息,请参阅声明身份验证和 Reporting Services

跨域 Kerberos 委派

在本例中,SSRS 连接到的数据源与 SSRS 服务器位于同一域中。有些情况下,您可能需要访问 SSRS 所在域外部的数据源。要使用跨域委派进行身份验证,您必须在 SSRS 服务帐户上配置基本(非约束)委派。请注意,这是可行的,因为 SSRS 服务不依赖于“声明为 Windows 令牌服务”(C2WTS),所以不需要通过 Kerberos 约束委派进行协议转换。还要注意,无法实现跨林委派,即使是基本委派也不行。

分步配置说明

配置 DNS

为环境中的 SSRS NLB 服务器组配置 DNS。在本例中,我们有两台 SSRS 服务器 VMSSRS01 和 VMSSRS02,它们已经过负载平衡并解析到同一 NLB VIP (192.168.24.180/24)。该 VIP 将映射到主机 FarmReports 并将具有 URL http://FarmReports

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

为 SSRS 主机配置新的 DNS A 记录。在本例中,我们具有一个配置为解析到负载平衡 VIP 的主机 FarmReports。

Active Directory 目录服务

创建 SSRS 服务帐户

作为最佳实践,SQL Server Reporting Services 应使用它自己的域标识运行。在本例中,创建了以下帐户:

服务 服务标识

SQL Server Reporting Services

vmlab\svcSQLRS

配置服务主体名称

为了让 SSRS 连接到外部数据源并使用 Kerberos 身份验证向其进行身份验证,必须为报表服务器 Web 服务和报表管理器服务帐户以及外部数据源的服务帐户配置服务主体名称。请参考此系列文章中的方案 1 和 2(核心配置SQL OLTP 的 Kerberos 身份验证),在 SharePoint Server Web 应用程序和 SQL Server 服务帐户上配置和验证所需的 SPNS。对于 SSRS 服务器,定义了以下 SPN:

DNS 主机 IIS 应用程序池标识 服务主体名称

FarmReports.vmlab.local

vmlab\svcSQLRS

HTTP/FarmReports

HTTP/ FarmReports.vmlab.local

在本例中,执行了以下命令:

SetSPN -S HTTP/FarmReports vmlab\svcSQLRS

SetSPN -S HTTP/FarmReports.vmlab.local vmlab\svcSQLRS

配置委派

必须为 SSRS 配置 Kerberos 委派才能将客户端的标识委派给后端数据源。在本例中,SSRS 使用客户端的标识从 SQL Server 事务性数据库查询数据,因此不需要 Kerberos 委派。Kerberos 约束委派 (KCD) 在该方案中不是必需的(因为不需要协议转换),但作为最佳实践,我们还是配置了 KCD。

运行 SSRS 服务的 SSRS 服务帐户必须受信任才能将凭据委派给每个后端服务。在本例中,需要以下委派路径:

主体类型 主体名称 委派给服务

用户

Vmlab\svcPortal10App

HTTP/FarmReports

HTTP/FarmReports.vmlab.local

用户

Vmlab\svcSQLRS

MSSQLSVC/MySqlCluster.vmlab.local:1433

或者,如果您希望根据 Analysis Services 数据源进行报告,请配置以下委派路径:

主体类型 主体名称 委派给服务

用户

Vmlab\svcSQLRS

MSOLAPSvc.3/MySqlCluster.vmlab.local

配置约束委派

  1. 在“Active Directory 用户和计算机”中打开 Active Directory 对象的属性。

  2. 导航到“委派”选项卡。

  3. 选择“仅信任此用户作为指定服务的委派”。

    备注

    对于 SSRS 服务帐户,如果您需要对位于同一林内但在 SSRS 服务器所在的域之外的数据源进行身份验证,请配置基本委派而非约束委派。为此,请选择“信任此计算机来委派任何服务”。请注意,无法实现跨林 Kerberos 委派。

  4. 也可以选择“使用任何身份验证协议”。这会启用协议转换。

  5. 单击“添加”按钮选择可委派到的服务主体。

  6. 选择“用户和计算机”。

  7. 选择运行您希望委派到的服务的服务帐户。在本例中,它是 SQL Server Reporting Service 的服务帐户。

    备注

    所选的服务帐户必须已应用 SPN。在本例中,此帐户的 SPN (HTTP/FarmReports.vmlab.local) 是在该方案的前面部分配置的。

  8. 单击“确定”。随后系统会在下一页上要求您选择希望委派的 SPN。

  9. 选择相应服务或“全选”,然后单击“确定”。

    现在,应该会在“可以由此帐户提供委派凭据的服务”列表中看到所选 SPN。

  10. 对本节前面提到的每个委派路径重复这些步骤。必须配置从 SQL Server Reporting Services 服务帐户到一个或多个后端数据源(在我们的方案中为 SQL OLTP 或 SQL AS)的委派。

    备注

    对于 SSRS 服务帐户,如果您需要对位于同一林内但在 SSRS 服务器所在的域之外的数据源进行身份验证,请配置基本委派而非约束委派。为此,请选择“信任此计算机来委派任何服务”。请注意,无法实现跨林 Kerberos 委派。

验证在 SQL Server 上运行服务的服务帐户的 MSSQLSVC SPN(在方案 2 中执行)

使用以下 SetSPN 命令验证 Analysis Services 服务帐户的 SPN (vmlab\svcSQL) 是否存在:

SetSPN -L vmlab\svcSQL

应看到以下内容:

MSSQLSVC/MySqlCluster MSSQLSVC/MySqlCluster.vmlab.local:1433

验证在 SQL Server Analysis Services 服务器上运行 SSAS 服务的服务帐户的 MSOLAPSvc.3 SPN(在方案 3 中执行)

使用以下 SetSPN 命令验证 SQL Server 服务帐户的 SPN (vmlab\svcSQLAS) 是否存在:

SetSPN -L vmlab\svcSQLAS

应看到以下内容:

MSOLAPSvc.3/MySqlCluster MSOLAPSvc.3/MySqlCluster.vmlab.local

SQL Server Reporting Services

安装 SharePoint Server 2010

SQL Server Reporting Services 需要在每台 SSRS 服务器上安装 SharePoint Server 2010 才能在 SharePoint 集成模式下运行 SSRS。在每台报表服务器上安装 SharePoint Server 2010 并将每台服务器加入 SharePoint Server 服务器场。

在负载平衡的扩展模式下安装并配置 SSRS

有关如何在负载平衡的扩展配置中配置 SQL Server Reporting Services 的详细分步说明不在本文档的讨论范围之内。有关如何安装 SSRS 的详细说明,请参阅 SharePoint 集成模式下的 Reporting Services 的部署拓扑。安装 SSRS 后,请务必完成下面所述的其他 SSRS 配置步骤以完成安装。

在 SSRS 服务器上修改 Web.config

必须在每台 SSRS 服务器上对 web.config 文件进行如下更改。可在安装 SSRS 的 Program Files 目录中找到 web.config 文件:

添加 <machineKey> 元素

负载平衡配置中的 SSRS 服务器需要在所有服务器上设置同一计算机密钥。应将计算机密钥元素作为 web.config 文件中 <system.web> 元素的子元素添加。下面是一个计算机密钥示例:

<machineKey
validationKey="54AEBD3BC893726E9B84D30F4970CB58F2086C2DAEE2F8D34A65A0632F4676DDBBC38779F2972C6596931E
13BD07A772BD4B9395BE38A43E461079E45D594E53"
decryptionKey=""
validation="SHA1"
decryption="AES"
/>

重要

请勿使用我们环境中的示例计算机密钥。应为您的环境生成自己的密钥值。

修改 ReportingServer.config

必须在每台 SSRS 服务器上对 ReportingServer.config 文件进行如下更改。可在安装 SSRS 的 Program Files 目录中找到 ReportingServer.config 文件:

启用 Kerberos 身份验证

若要启用 Kerberos 身份验证,请将身份验证类型设置为“RSWindowsNegotiate”。更改 <AuthenticationTypes/> 元素并添加 <RSWindowsNegotiate/>

<AuthenticationTypes>
    <RSWindowsNegotiate/>
</AuthenticationTypes>

修改 URL 根

将报表服务器的 URL 添加到 <UrlRoot> 标记中,可在 ReportingServer.Config 的 <service> 标记中找到该标记

<UrlRoot>http://FarmReports/reportserver</UrlRoot>

在注册表中配置 BackConnectionHostNames

要允许 SQL Server Reporting Services 在单台计算机上相互进行身份验证,需要解决 NTLM 环回检测。最佳实践是在每台 SSRS 服务器的注册表中配置 BackConnectionHostNames 值,而不是禁用环回检测。有关 BackConnectionHostNames 的详细信息,请参阅在使用 SQL Server 2008 Reporting Services 时收到错误消息

在本例中,我们为 BackConnectionHostNames 配置以下值:

  • FarmReports

  • FarmReports.vmlab.local

在设置 BackConnectionHostNames 值后,重新启动 SSRS 服务器。

配置 SharePoint Server

在管理中心中,查找 SSRS 的服务器场配置选项。请注意,在 SharePoint Server 2010 中,您无需为 SSRS 管理和 Web 部件安装单独的 SSRS 组件。若要访问 SSRS 场选项,请导航至管理中心,然后查看“一般应用程序设置”部分的“Reporting Services”。

向 Reporting Services 服务帐户授予对 Web 应用程序内容数据库的权限

在 SharePoint 集成模式下配置 SQL Server Reporting Services 的一个必需步骤是允许 Reporting Services 服务帐户访问承载报表的 Web 应用程序内容数据库。在本例中,我们通过 Windows PowerShell 向 Reporting Services 帐户授予访问“portal”Web 应用程序内容数据库的权限。

从 SharePoint 2010 Management Shell 中运行以下命令:

$w = Get-SPWebApplication -Identity http://portal

$w.GrantAccessToProcessIdentity("vmlab\svcSQLRS")

配置 Reporting Services 集成

在“Reporting Service 集成”对话框中,指定报表服务器的负载平衡 URL。另外,请选择“激活现有网站集中的所有功能”选项以自动激活网站集中的 Reporting Services 功能。

将每台报表服务器添加到集成中

在“将报表服务器添加到集成”对话框中,指定 Reporting Services NLB 组的每个节点。必须为要添加到集成的每台服务器打开该对话框;无法在单个操作中添加多台服务器。

设置服务器默认值

此时应配置 SSRS 集成。若要验证配置,请打开“服务器默认值”页。本文档中的示例不需要进行任何更改。

验证配置

为报告创建文档库

在 SharePoint 网站中创建一个文档库来承载 SSRS 报表。在本例中,我们假定 http://portal/reports 上存在一个名为“reports”的文档库。

验证 Reporting Services 的网站集设置

在浏览器中,导航至将承载用于 SSRS 报表的文档库的网站的“网站设置”。在“网站设置”中,应看到一个名为“Reporting Services”的新类别。

如果在网站集功能类别中看不到 Reporting Services 功能,可能需要从管理中心将其激活。有关详细信息,请参阅如何在 SharePoint 管理中心激活报表服务器功能 (https://go.microsoft.com/fwlink/?linkid=196878&clcid=0x804)。

单击 Reporting Services 网站设置链接以确保可以访问这些设置。

备注

本演示不需要对“Reporting Services 网站设置”进行任何更改。

在 SQL Server Business Intelligence Development Studio 中创建并发布测试报告

在配置 SSRS 以及与 SharePoint Server 的集成后,可以创建一个测试报告来确保标识委派正常运行。

  1. 打开 SQL Server Business Intelligence Development Studio。单击“文件”,指向“新建”,然后单击“项目”。

  2. 选择“报表服务器项目向导”并输入项目名称。

  3. 接下来,配置一个新数据源。选择“Microsoft SQL Server”类型并单击“编辑”按钮。

  4. 在“连接属性”中,输入相关信息以连接到在方案 2 中创建的演示 SQL Server 群集。

  5. 打开查询设计器,右键单击查询窗口并选择“添加表”。

  6. 选择“销售”表(在方案 2 中创建)并选择“所有列”。

  7. 选择一个表格式报表类型。

  8. 在本例中,我们按区域分组;如果需要,您可以跳过此步骤。

  9. 在创建项目后,在“项目”菜单上打开项目属性。

  10. 配置以下项目属性:

    1. TargetDatasetFolder — 设置为之前创建的测试报告文件夹

    2. TargetReportFolder — 设置为之前创建的测试报告文件夹

    3. TargetReportPartFolder — 设置为之前创建的测试报告文件夹

    4. TargetServerURL — 设置为将承载该报告的 Web 应用程序 URL

  11. 将报告部署到 SharePoint 库。在生成菜单上选择“部署 <project name>”。

  12. 如果操作成功,您会在“输出”窗口中看到部署成功的消息。

在 Internet Explorer 中查看测试报告

在浏览器中打开在该方案的前面步骤中创建的报告文档库。您应该看到刚刚发布的报告文件。如果看不到该报告,则可能需要在网站集中激活 Reporting Services 功能。有关详细信息,请参阅如何在 SharePoint 管理中心激活报表服务器功能 (https://go.microsoft.com/fwlink/?linkid=196878&clcid=0x804)。

单击该报告,它将呈现在浏览器中。

若要进一步验证委派和数据连接,请在 SQL Server Management Studio 中更改数据源并在浏览器中刷新 SSRS 报表数据连接。所做的数据更改应该会在报表中反映出来。

Reporting Services 的 SSL 配置

在某些环境中,可能需要使用 SSL 保护前端 Web 与 SSRS 服务器之间的通信。有关如何为 Reporting Services 配置 SSL 的详细演练不在本文的讨论范围之内,但概括来说,您必须采取以下步骤:

  1. 配置每个报表服务器用于 SSL。请参阅配置报表服务器用于安全套接字层 (SSL) 连接 (https://go.microsoft.com/fwlink/?linkid=196881&clcid=0x804)。

  2. 更新 ReportingServer.config。将 <UrlRoot> 更改为新的 https:// URL。

  3. 重新启动 SQL Server Reporting Services 服务。

  4. 在管理中心中,更改 Reporting Services 集成设置并将报表服务器 Web 服务 URL 更改为新的 https:// URL。

  5. 在运行 Web 应用程序服务的每个 SharePoint Server 实例上重新启动 IIS。

不需要更改在之前的步骤中使用 HTTP 配置 Reporting Services 时创建的任何 SPN。使用 SSL 的 HTTP 服务的 SPN 仍然为 HTTP/<service>。通过使用 NetMon 查看正与 Reporting Services 服务器通信的前端 Web 服务器,可以看到这一点。