Reporting Services 身份验证的扩展保护

扩展保护是针对最新版本的 MicrosoftWindows 操作系统的一组增强功能。扩展保护增强了应用程序可用来保护凭据和身份验证的方式。此功能自身并不直接提供保护机制来防止特定攻击(如凭据转发),但它为诸如 Reporting Services 的应用程序提供了一种基础结构来对身份验证实行扩展保护。

作为扩展保护一部分的主要身份验证增强功能是服务绑定和渠道绑定。渠道绑定使用渠道绑定标记 (CBT),以验证在两个端点之间建立的渠道不会受到危害。服务绑定使用服务器主体名称 (SPN) 来验证身份验证标记的预期目的地。有关扩展保护的详细背景信息,请参阅 Integrated Windows Authentication with Extended Protection(将 Windows 身份验证与扩展保护相集成)

SQL Server 2008 R2 Reporting Services支持和实行已在操作系统中启用并在 Reporting Services 中配置的扩展保护。默认情况下,Reporting Services 接受指定 Negotiate 或 NTLM 身份验证的请求,因此,可能因操作系统中支持扩展保护以及 Reporting Services 扩展保护功能而受益。

重要说明重要提示

默认情况下,Windows 不启用扩展保护。有关如何在 Windows 中启用扩展保护的信息,请参阅身份验证的扩展保护。操作系统和客户端身份验证堆栈必须同时支持扩展保护,身份验证才能成功。对于较早的操作系统,您可能需要安装多个更新,才能获得完整的支持扩展保护功能的计算机。有关扩展保护的最新开发动态的信息,请参阅 updated information with Extended Protection(扩展保护的更新信息)

Reporting Services 扩展保护概述

SQL Server 2008 R2 Reporting Services 支持和实行已在操作系统中启用的扩展保护功能。 如果操作系统不支持扩展保护或者尚未启用操作系统中的此功能,Reporting Services 扩展保护功能将无法进行身份验证。 Reporting Services 扩展保护还需要 SSL 证书。有关详细信息,请参阅配置报表服务器用于安全套接字层 (SSL) 连接

重要说明重要提示

默认情况下,Reporting Services 不启用扩展保护。可以通过修改 rsreportserver.config 配置文件或使用 WMI API 来更新此配置文件,以启用此功能。SQL Server 2008 R2 Reporting Services不提供用于修改或查看扩展保护设置的用户界面。 有关详细信息,请参阅本主题中的配置设置部分。

因更改扩展保护设置或所配置的设置不正确而导致的共同问题并不显示明显的错误消息或对话框窗口。与扩展保护配置和兼容性相关的问题会导致身份验证失败并在 Reporting Services 跟踪日志中记录错误。有关排除 Reporting Services 扩展保护的故障和对此功能进行验证的信息,请参阅扩展保护故障排除 (Reporting Services)

重要说明重要提示

Microsoft SQL 客户端尚未更新,无法在 SQL Server 2008 R2 发布时支持扩展保护。使用 SQL 客户端可连接到 SQL Server 数据源和 Reporting Services 目录数据库。SQL 客户端中的限制会通过以下方式影响 Reporting Services:

运行 Reporting Services 目录数据库的 SQL Server 无法启用扩展保护,或者,报表服务器将无法成功地连接到目录数据库并且将返回身份验证错误。

所有用作 Reporting Services 报表数据源的 SQL Server 都无法启用扩展保护,或者报表服务器尝试连接到报表数据源时将失败并且返回身份验证错误。一个可能的解决办法是将 Reporting Services 数据源更改为使用本机提供程序,而非 SQL 客户端。例如,为 ODBC 驱动程序配置数据源,然后将使用 SQL Native Client(它的确支持扩展保护)。

升级

  • 将 Reporting Services 服务器升级到 SQL Server 2008 R2 可将具有默认值的配置设置添加到 rsreportserver.config 文件。如果设置已经存在,SQL Server 2008 R2 安装将在 rsreportserver.config 文件中保留它们。

  • 当将配置设置添加到 rsreportserver.config 配置文件时,默认行为是对于 Reporting Services 将扩展保护功能设置为关闭,您必须按本主题中所述启用此功能。 有关详细信息,请参阅本主题中的配置设置部分。

  • RSWindowsExtendedProtectionLevel 设置的默认值为 Off。

  • RSWindowsExtendedProtectionScenario 设置的默认值为 Proxy。

  • SQL Server 2008 R2 升级顾问不验证操作系统或 Reporting Services 的当前安装是否启用了扩展保护支持。

Reporting Services 扩展保护不涵盖的内容

Reporting Services扩展保护功能不支持以下功能区和方案:

  • Reporting Services 自定义安全扩展插件的作者必须将对于扩展保护的支持添加到其自定义安全扩展插件。

  • Reporting Services安装添加或使用的第三方组件必须由第三方供应商进行更新以支持扩展保护功能。有关详细信息,请与第三方供应商联系。

部署方案和建议

以下各方案说明各种不同部署和拓扑,以及使用 Reporting Services 扩展保护来对它们进行保护的建议配置。

直接

此方案介绍直接连接到报表服务器(例如 Intranet 环境)。

方案

方案图

保护方式

直接 SSL 通信。

报表服务器将实行“客户端到报表服务器”渠道绑定。

具有 SSL 的扩展保护直接访问

1) 客户端应用程序

2) 报表服务器

  • 服务绑定不是必需的,因为将使用 SSL 渠道来进行渠道绑定。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Direct。

直接 HTTP 通信。报表服务器将实行“客户端到报表服务器”服务绑定。

扩展保护和直接访问

1) 客户端应用程序

2) 报表服务器

  • 没有 SSL 渠道,因此可能不实行渠道绑定。

  • 然而,可以使服务绑定生效,否则,由于没有渠道绑定,它将成为不完善的防御机制,服务绑定本身只防止基本威胁。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Any。

代理和网络负载平衡

客户端应用程序连接到执行 SSL 并向服务器传递凭据以进行身份验证的设备或软件,例如,Extranet、Internet 或安全 Intranet。客户端连接到代理,或者所有客户端都使用代理。

当您使用网络负载平衡 (NLB) 设备时,情形是相同的。

方案

方案图

保护方式

HTTP 通信。报表服务器将实行“客户端到报表服务器”服务绑定。

RS 扩展保护和间接访问

1) 客户端应用程序

2) 报表服务器

3) 代理

  • 没有 SSL 渠道,因此可能不实行渠道绑定。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Any。

  • 必须对报表服务器进行配置,使之识别代理服务器的名称,以确保正确实行服务绑定。

HTTP 通信。

报表服务器将实行“客户端到代理”渠道绑定和“客户端到报表服务器”服务绑定。

具有 SSL 的 RS 扩展保护间接访问

1) 客户端应用程序

2) 报表服务器

3) 代理

  • 到代理的 SSL 渠道是可用的,因此,可以与代理之间实行渠道绑定。

  • 还可以实行服务绑定。

  • 报表服务器必须了解代理名称,报表服务器管理员应使用主机标头为代理创建一个 URL 保留项,或在 Windows 注册表项 BackConnectionHostNames 中配置代理名称。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Proxy。

与安全代理之间的间接 HTTPS 通信。报表服务器将实行“客户端到代理”渠道绑定和“客户端到报表服务器”服务绑定。

扩展保护间接访问 SSL 和 HTTPS

1) 客户端应用程序

2) 报表服务器

3) 代理

  • 到代理的 SSL 渠道是可用的,因此,可以与代理之间实行渠道绑定。

  • 还可以实行服务绑定。

  • 报表服务器必须了解代理名称,报表服务器管理员应使用主机标头为代理创建一个 URL 保留项,或在 Windows 注册表项 BackConnectionHostNames 中配置代理名称。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Proxy。

网关

此方案介绍连接到执行 SSL 和对用户进行身份验证的设备或软件的客户端应用程序。接着,此设备或软件模拟用户上下文或其他用户上下文,之后对报表服务器发出请求。

方案

方案图

保护方式

间接 HTTP 通信。

网关将实行“客户端到网关”渠道绑定。此时具有“网关到报表服务器”服务绑定。

具有 SSL 的 RS 扩展保护间接访问

1) 客户端应用程序

2) 报表服务器

3) 网关设备

  • 从客户端到报表服务器的渠道绑定是不可能的,因为网关模拟上下文,并因此创建一个新的 NTLM 标记。

  • 此时,从网关到报表服务器没有 SSL,因此,无法实行渠道绑定。

  • 可以实行服务绑定。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Any。

  • 应由管理员配置网关设备以实行渠道绑定。

与安全网关之间的间接 HTTPS 通信。网关将实行“客户端到网关”渠道绑定,报表服务器将实行“网关到报表服务器”渠道绑定。

扩展保护间接访问 SSL 和 HTTPS

1) 客户端应用程序

2) 报表服务器

3) 网关设备

  • 从客户端到报表服务器的渠道绑定是不可能的,因为网关模拟上下文,并因此创建一个新的 NTLM 标记。

  • 从网关到报表服务器的 SSL 意味着可以实行渠道绑定。

  • 不需要服务绑定。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Direct。

  • 应由管理员配置网关设备以实行渠道绑定。

组合

此方案介绍客户端连接到代理的 Extranet 或 Internet 环境。这种环境与客户端在其中连接到报表服务器的 Intranet 环境相结合。

方案

方案图

保护方式

从客户端间接和直接访问报表服务器服务,在客户端到代理或客户端到报表服务器连接中均没有 SSL。

扩展保护混合环境

1) 客户端应用程序

2) 报表服务器

3) 代理

4) 客户端应用程序

  • 可以实行从客户端到报表服务器的服务绑定。

  • 报表服务器必须了解代理名称,报表服务器管理员应使用主机标头为代理创建一个 URL 保留项,或在 Windows 注册表项 BackConnectionHostNames 中配置代理名称。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Any。

从客户端间接和直接访问报表服务器,其中,客户端与代理或报表服务器建立 SSL 连接。

与 SSL 混合的扩展保护

1) 客户端应用程序

2) 报表服务器

3) 代理

4) 客户端应用程序

  • 可以使用渠道绑定

  • 报表服务器必须了解代理名称,报表服务器管理员应使用主机标头为代理创建一个 URL 保留项,或在 Windows 注册表项 BackConnectionHostNames 中配置代理名称。

将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。

将 RSWindowsExtendedProtectionScenario 设置为 Proxy。

配置 Reporting Rervices 扩展保护

rsreportserver.config 文件包含的配置值用于控制 Reporting Services 扩展保护的行为。

有关使用和编辑 rsreportserver.config 文件的详细信息,请参阅 RSReportServer 配置文件。还可以使用 WMI API 更改和检查扩展保护设置。有关详细信息,请参阅 SetExtendedProtectionSettings 方法 (WMI MSReportServer_ConfigurationSetting)

当对配置设置进行验证失败时,将在报表服务器上禁用身份验证类型 RSWindowsNTLM、RSWindowsKerberos 和 RSWindowsNegotiate。

Reporting Services 扩展保护的配置设置

下表提供有关在 rsreportserver.config 中显示的扩展保护配置设置的信息。

设置

说明

RSWindowsExtendedProtectionLevel

指定扩展保护的实行程度。有效值为 Off、Allow 和 Require。

默认值为 Off。

值为 Off 指定没有渠道绑定或服务绑定验证。

值为 Allow 支持扩展保护,但并不需要此功能。值为 Allow 时指定:

  • 将为在支持扩展保护的操作系统上运行的客户端应用程序实行扩展保护。实行保护的方式通过设置 RsWindowsExtendedProtectionScenario 来确定。

  • 对于在不支持扩展保护的操作系统上运行的应用程序而言,将允许进行身份验证。

值为 Require 时指定:

  • 将为在支持扩展保护的操作系统上运行的客户端应用程序实行扩展保护。

  • 对于在不支持扩展保护的操作系统上运行的应用程序而言,将允许进行身份验证。

RsWindowsExtendedProtectionScenario

指定使哪种格式的扩展保护生效:渠道绑定、服务绑定或这两者。有效值为 Any、Proxy 和 Direct。

默认值为 Proxy。

值为 Any 时指定:

  • 不要求 Windows NTLM、Kerberos 和 Negotiate 身份验证以及渠道绑定。

  • 实行服务绑定。

值为 Proxy 时指定:

  • 当存在渠道绑定标记时,使用 Windows NTLM、Kerberos 和 Negotiate 身份验证。

  • 实行服务绑定。

值为 Direct 时指定:

  • 当 CBT 存在、与当前服务之间存在 SSL 连接并且用于 SSL 连接的 CBT 与 NTLM、Kerberos 或 Negotiate 标记的 CBT 匹配时,应使用 Windows NTLM、Kerberos 和 Negotiate 身份验证。

  • 不实行服务绑定。

注意注意
如果 RsWindowsExtendedProtectionLevel 设置为 OFF,则忽略此设置。

rsreportserver.config 配置文件中的示例条目:

<Authentication>
         <RSWindowsExtendedProtectionLevel>Allow</RSWindowsExtendedProtectionLevel>
         <RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionLevel>
</Authentication>

服务绑定和所包含的 SPN

服务绑定使用服务主体名称或 SPN 来验证身份验证标记的预期目的地。Reporting Services 使用现有 URL 保留项信息来生成被视为有效的 SPN 的列表。使用 URL 保留项信息来验证 SPN 和 URL 保留项使系统管理员能够从单个位置管理这两者。

当报表服务器启动、扩展保护的配置设置更改或回收应用程序域时,将更新有效 SPN 的列表。

SPN 的有效列表特定于每个应用程序。例如,报表管理器和报表服务器每个都将计算不同的有效 SPN 列表。

为应用程序计算的有效 SPN 列表由以下元素确定:

  • 每个 URL 保留项。

  • 从域控制器为 Reporting Services 服务帐户检索的每个 SPN。

  • 如果 URL 保留项包含通配符(“*”或“+”),则报表服务器将从 Hosts 集合添加每个条目。

Hosts 集合来源。

下表列出了 Hosts 集合的潜在来源。

源类型

说明

ComputerNameDnsDomain

分配给本地计算机的 DNS 域的名称。如果本地计算机为群集中的节点,则将使用群集虚拟服务器的 DNS 域名。

ComputerNameDnsFullyQualified

唯一标识本地计算机的完全限定 DNS 名称。此名称是 DNS 主机名和 DNS 域名的组合,格式为 HostName.DomainName。如果本地计算机为群集中的节点,则将使用群集虚拟服务器的完全限定 DNS 名称。

ComputerNameDnsHostname

本地计算机的 DNS 主机名。如果本地计算机为群集中的节点,则将使用群集虚拟服务器的 DNS 主机名。

ComputerNameNetBIOS

本地计算机的 NetBIOS 名称。如果本地计算机为群集中的节点,则将使用群集虚拟服务器的 NetBIOS 主机名。

ComputerNamePhysicalDnsDomain

分配给本地计算机的 DNS 域的名称。如果本地计算机为群集中的节点,则将使用本地计算机的 DNS 域名,而不使用群集虚拟服务器的名称。

ComputerNamePhysicalDnsFullyQualified

唯一标识计算机的完全限定 DNS 名称。如果本地计算机为群集中的节点,则将使用本地计算机的完全限定 DNS 名称,而不使用群集虚拟服务器的名称。

此完全限定的 DNS 名称是 DNS 主机名和 DNS 域名的组合,格式为 HostName.DomainName。

ComputerNamePhysicalDnsHostname

本地计算机的 DNS 主机名。如果本地计算机为群集中的节点,则将使用本地计算机的 DNS 主机名,而不使用群集虚拟服务器的名称。

ComputerNamePhysicalNetBIOS

本地计算机的 NetBIOS 名称。如果本地计算机为群集中的节点,则将使用本地计算机的 NetBIOS 主机名,而不使用群集虚拟服务器的名称。

当添加 SPN 时,将向跟踪日志添加类似如下内容的条目:

rshost!rshost!10a8!01/07/2010-19:29:38:: i INFO:SPN 白名单添加了 <ComputerNamePhysicalNetBIOS> - <theservername>。

rshost!rshost!10a8!01/07/2010-19:29:38:: i INFO:SPN 白名单添加了 <ComputerNamePhysicalDnsHostname> - <theservername>。

有关详细信息,请参阅如何为报表服务器注册服务主体名称 (SPN)关于 URL 保留和注册 (Reporting Services)