Reporting Services 针对验证的扩展保护

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

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

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

重要

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

Reporting Services 扩展保护概述

SSRS 支持和实行已在操作系统中启用的扩展保护功能。 如果操作系统不支持扩展保护或者尚未启用操作系统中的此功能,Reporting Services 扩展保护功能将无法进行身份验证。 Reporting Services 扩展保护还需要 TLS/SSL 证书。 有关详细信息,请参阅在本机模式报表服务器上配置 TLS 连接

重要

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

因更改扩展保护设置或所配置的设置不正确而导致的共同问题并不显示明显的错误消息或对话框窗口。 与扩展保护配置和兼容性相关的问题会导致身份验证失败并在 Reporting Services 跟踪日志中记录错误。

重要

某些数据访问技术可能不支持扩展保护。 数据访问技术用于连接到 SQL Server 数据源和 Reporting Services 目录数据库。 未能实现支持扩展保护的数据访问技术将在以下方面影响 Reporting Services:

  • 运行 Reporting Services 目录数据库的 SQL Server 无法启用扩展保护,或者,报表服务器将无法成功地连接到目录数据库并且将返回身份验证错误。
  • 所有用作 Reporting Services 报表数据源的 SQL Server 实例都无法启用扩展保护,或者报表服务器尝试连接到报表数据源时将失败并且返回身份验证错误。

用于数据访问技术的文档应该具有与支持扩展保护有关的信息。

升级

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

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

  • 设置 RSWindowsExtendedProtectionLevel 的默认值为 Off

  • 设置 RSWindowsExtendedProtectionScenario 的默认值为 Proxy

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

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

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

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

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

部署方案和建议

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

直接

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

场景 方案图 保护方式
直接 TLS 通信。

报表服务器实行“客户端到报表服务器”渠道绑定。
显示直接 TLS 通信的关系图。

1) 客户端应用程序

2) 报表服务器
RSWindowsExtendedProtectionLevel 设置为 AllowRequire

RSWindowsExtendedProtectionScenario 设置为 Direct



- 服务绑定不是必需的,因为 TLS 通道将用于通道绑定。
直接 HTTP 通信。 报表服务器实行“客户端到报表服务器”服务绑定。 显示 HTTP 通信的关系图。

1) 客户端应用程序

2) 报表服务器
RSWindowsExtendedProtectionLevel 设置为 AllowRequire

RSWindowsExtendedProtectionScenario 设置为 Any



\- 没有 TLS 通道,因此无法强制执行通道绑定。

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

代理和网络负载均衡

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

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

场景 方案图 保护方式
HTTP 通信。 报表服务器实行“客户端到报表服务器”服务绑定。 显示间接 HTTP 通信的关系图。

1) 客户端应用程序

2) 报表服务器

3) 代理
RSWindowsExtendedProtectionLevel 设置为 AllowRequire

RSWindowsExtendedProtectionScenario 设置为 Any



\- 没有 TLS 通道,因此无法强制执行通道绑定。

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

报表服务器实行“客户端到代理”渠道绑定和“客户端到报表服务器”服务绑定。
显示间接 SSL 通信的关系图。

1) 客户端应用程序

2) 报表服务器

3) 代理
设置
RSWindowsExtendedProtectionLevelAllowRequire

RSWindowsExtendedProtectionScenario 设置为 Proxy



\- 可以使用到代理的 TLS 通道,因此能够强制执行到代理的通道绑定。

\- 还可以实行服务绑定。

-报表服务器必须了解代理名称,报表服务器管理员应使用主机标头为代理创建一个 URL 预留,或在 Windows 注册表项 BackConnectionHostNames 中配置代理名称。
与安全代理之间的间接 HTTPS 通信。 报表服务器实行“客户端到代理”渠道绑定和“客户端到报表服务器”服务绑定。 显示使用安全代理进行间接 HTTPS 通信的关系图。

1) 客户端应用程序

2) 报表服务器

3) 代理
设置
RSWindowsExtendedProtectionLevelAllowRequire

RSWindowsExtendedProtectionScenario 设置为 Proxy



\- 可以使用到代理的 TLS 通道,因此能够强制执行到代理的通道绑定。

\- 还可以实行服务绑定。

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

网关

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

场景 方案图 保护方式
间接 HTTP 通信。

网关实行“客户端到网关”渠道绑定。 此时具有“网关到报表服务器”服务绑定。
显示间接 SSL 通信的关系图。

1) 客户端应用程序

2) 报表服务器

3) 网关设备
RSWindowsExtendedProtectionLevel 设置为 AllowRequire

RSWindowsExtendedProtectionScenario 设置为 Any



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

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

\- 可以实行服务绑定。

- 应由管理员配置网关设备以实行渠道绑定。
与安全网关之间的间接 HTTPS 通信。 网关实行“客户端到网关”渠道绑定,报表服务器实行“网关到报表服务器”渠道绑定。 显示使用安全网关进行间接 HTTPS 通信的关系图。

1) 客户端应用程序

2) 报表服务器

3) 网关设备
RSWindowsExtendedProtectionLevel 设置为 AllowRequire

RSWindowsExtendedProtectionScenario 设置为 Direct



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

\- 从网关到报表服务器的 TLS 意味着可以强制执行通道绑定。

- 不需要服务绑定。

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

组合

此方案描述了客户端连接代理的 Extranet 或内部网环境,以及客户端连接到报表服务器的内部网环境。

场景 方案图 保护方式
从客户端间接和直接访问报表服务器服务,其中客户端没有与代理或报表服务器建立 TLS 连接。 1) 客户端应用程序

2) 报表服务器

3) 代理

4) 客户端应用程序
RSWindowsExtendedProtectionLevel 设置为 AllowRequire

RSWindowsExtendedProtectionScenario 设置为 Any



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

-报表服务器必须了解代理名称,报表服务器管理员应使用主机标头为代理创建一个 URL 预留,或在 Windows 注册表项 BackConnectionHostNames 中配置代理名称。
从客户端间接和直接访问报表服务器,其中客户端与代理或报表服务器建立 TLS 连接。 显示从客户端到报表服务器进行间接和直接访问的关系图。

1) 客户端应用程序

2) 报表服务器

3) 代理

4) 客户端应用程序
RSWindowsExtendedProtectionLevel 设置为 AllowRequire

RSWindowsExtendedProtectionScenario 设置为 Proxy



\- 可以使用渠道绑定

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

配置 Reporting Services 扩展保护

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

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

当对配置设置进行验证失败时,将在报表服务器上禁用身份验证类型 RSWindowsNTLMRSWindowsKerberosRSWindowsNegotiate

Reporting Services 扩展保护的配置设置

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

设置 说明
RSWindowsExtendedProtectionLevel 指定扩展保护的实行程度。 有效值是:

Off:默认值。 指定没有渠道绑定或服务绑定验证。

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

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

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

Require 指定以下项:

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

- 对于在不支持扩展保护的操作系统上运行的应用程序而言,允许进行身份验证。
RsWindowsExtendedProtectionScenario 指定要验证哪些形式的扩展保护:渠道绑定、服务绑定,或两者。 有效值是:

Proxy:默认值。 指定:

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

\- 实行服务绑定。

Any 指定以下项:

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

\- 实行服务绑定。

Direct 指定以下项:

\- 如果 CBT 存在、与当前服务建立了 TLS 连接,且用于 TLS 连接的 CBT 与 NTLM、Kerberos 或协商令牌的 CBT 一致,应使用 Windows NTLM、Kerberos 和协商身份验证。

- 不实行服务绑定。



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

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

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

服务绑定和所包含的 SPN

服务绑定使用服务器主体名称或 SPN 来验证身份验证标记的预期目标。 Reporting Services 使用现有的 URL 预留信息来生成被视为有效的 SPN 的列表。 用来验证 SPN 和 URL 预留的 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)关于 URL 预留和注册(报表服务器配置管理器)