扩展保护是针对最新版本的 Microsoft Windows 操作系统的一组增强功能。 扩展保护可增强应用程序如何保护凭据和身份验证。 该功能本身不会直接提供针对凭据转发等特定攻击的保护,而是为 Reporting Services 等应用程序提供基础结构,以强制实施针对身份验证的扩展保护。
作为扩展保护一部分的主要身份验证增强功能是服务绑定和渠道绑定。 通道绑定使用通道绑定令牌(CBT)来验证在两个终结点之间建立的通道未被破坏。 服务绑定使用服务器主体名称 (SPN) 来验证身份验证标记的预期目的地。 有关扩展保护的详细信息,请参阅 集成 Windows 身份验证与扩展保护。
SQL Server 2019 (15.x) Reporting Services 支持并强制执行已在作系统中启用并在 Reporting Services 中配置的扩展保护。 默认情况下,Reporting Services 接受指定 Negotiate 或 NTLM 身份验证的请求,因此,可能因操作系统中支持扩展保护以及 Reporting Services 扩展保护功能而受益。
重要
默认情况下,Windows 不启用扩展保护。 有关如何在 Windows 中启用扩展保护的信息,请参阅 用于身份验证的扩展保护。 操作系统和客户端身份验证堆栈必须同时支持扩展保护,身份验证才能成功。 对于较早的操作系统,您可能需要安装多个更新,才能获得完整的支持扩展保护功能的计算机。 有关扩展保护的最新开发的信息,请参阅 扩展保护的更新信息。
Reporting Services 扩展保护概述
SQL Server 2019 (15.x) Reporting Services 支持并强制实施已在操作系统中启用的扩展保护。 如果操作系统不支持扩展保护或操作系统中的功能尚未启用,Reporting Services 扩展保护功能将无法进行身份验证。 Reporting Services 扩展保护还需要 SSL 证书。 有关详细信息,请参阅 在本机模式报表服务器上配置 SSL 连接
重要
默认情况下,Reporting Services 不启用扩展保护。 可以通过修改 rsreportserver.config 配置文件或使用 WMI API 更新配置文件来启用该功能。 SQL Server 2019 (15.x)Reporting Services 不提供用于修改或查看扩展保护设置的用户界面。 有关详细信息,请参阅本主题中的 配置设置 部分。
由于扩展保护设置或配置错误设置的更改而出现的常见问题不会公开明显的错误消息或对话框窗口。 与扩展保护配置和兼容性相关的问题会导致身份验证失败并在 Reporting Services 跟踪日志中记录错误。
重要
某些数据访问技术可能不支持扩展保护。 数据访问技术用于连接到 SQL Server 数据源和 Reporting Services 目录数据库。 未能实现支持扩展保护的数据访问技术将在以下方面影响 Reporting Services:
- 运行 Reporting Services 目录数据库的 SQL Server 无法启用扩展保护,或者,报表服务器将无法成功地连接到目录数据库并且将返回身份验证错误。
- 用作 Reporting Services 报表数据源的 SQL Server 无法启用扩展保护,或者报表服务器尝试连接到报表数据源将失败并返回身份验证错误。
用于数据访问技术的文档应该具有与支持扩展保护有关的信息。
升级
将 Reporting Services 服务器升级到 SQL Server 2019(15.x)会将具有默认值的配置设置添加到
rsreportserver.config文件。 如果设置已存在,则 SQL Server 2019 (15.x) 安装会将这些rsreportserver.config设置保留在文件中。将配置设置添加到
rsreportserver.config配置文件时,默认行为是 Reporting Services 扩展保护功能关闭,必须启用本主题中所述的功能。 有关详细信息,请参阅本主题中的 配置设置 部分。设置
RSWindowsExtendedProtectionLevel的默认值为Off。设置
RSWindowsExtendedProtectionScenario的默认值为Proxy。SQL Server 2019 (15.x) 升级顾问不验证操作系统或当前安装的 Reporting Services 是否已启用扩展保护支持。
Reporting Services 扩展保护不涵盖的内容
Reporting Services 扩展保护功能不支持以下功能区域和方案:
Reporting Services 自定义安全扩展插件的作者必须将对扩展保护的支持添加到其自定义安全扩展插件中。
向 Reporting Services 安装添加或使用的第三方组件必须由第三方供应商更新,以支持扩展保护。 有关详细信息,请与第三方供应商联系。
部署方案和建议
以下各方案说明各种不同部署和拓扑,以及使用 Reporting Services 扩展保护来对它们进行保护的建议配置。
直接
此方案介绍直接连接到报表服务器(例如 Intranet 环境)。
| 情景 | 方案图 | 保护方式 |
|---|---|---|
| 直接 SSL 通信。 报表服务器将强制客户端与报表服务器之间的通道绑定。 |
1) 客户端应用程序 2) 报表服务器 |
不需要服务绑定,因为 SSL 通道将用于通道绑定。 将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。将 RSWindowsExtendedProtectionScenario 设置为 Direct。 |
| 直接 HTTP 通信。 报表服务器将强制客户端进行与报表服务器的服务绑定。 |
1) 客户端应用程序 2) 报表服务器 |
没有 SSL 通道,因此无法强制实施通道绑定。 可以验证服务绑定,但是,如果没有通道绑定,服务绑定本身就不是完全防御,服务绑定只会防范基本威胁。 将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。将 RSWindowsExtendedProtectionScenario 设置为 Any。 |
代理和网络负载均衡
客户端应用程序连接到执行 SSL 的设备或软件,并通过凭据传递到服务器进行身份验证,例如 Extranet、Internet 或安全 Intranet。 客户端连接到代理,或者所有客户端都使用代理。
使用网络负载均衡(NLB)设备时,情况相同。
| 情景 | 方案图 | 保护方式 |
|---|---|---|
| HTTP 通信。 报表服务器将强制客户端与服务器进行服务绑定。 |
1) 客户端应用程序 2) 报表服务器 3) 代理 |
没有 SSL 通道,因此无法强制实施通道绑定。 将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。将 RSWindowsExtendedProtectionScenario 设置为 Any。请注意,报表服务器必须配置为知道代理服务器的名称,以确保正确强制实施服务绑定。 |
| HTTP 通信。 报告服务器将强制执行客户端到代理通道绑定以及客户端到报告服务器服务绑定。 |
1) 客户端应用程序 2) 报表服务器 3) 代理 |
SSL 通道可用于代理,因此可以强制实施代理的通道绑定。 服务绑定也可以被强制执行。 报表服务器必须知道代理名称,报表服务器管理员应使用主机标头为其创建 URL 预留,或在 Windows 注册表项 BackConnectionHostNames中配置代理名称。RSWindowsExtendedProtectionLevel 至 Allow 或 Require。将 RSWindowsExtendedProtectionScenario 设置为 Proxy。 |
| 与安全代理之间的间接 HTTPS 通信。 报表服务器将强制客户端代理通道绑定和客户端到报表服务器服务绑定。 |
1) 客户端应用程序 2) 报表服务器 3) 代理 |
SSL通道可用于代理,因此可以强制对代理的通道绑定。 还可以强制实施服务绑定。 报表服务器必须知道代理名称,报表服务器管理员应使用主机标头为其创建 URL 预留,或在 Windows 注册表项 BackConnectionHostNames中配置代理名称。RSWindowsExtendedProtectionLevel 至 Allow 或 Require。将 RSWindowsExtendedProtectionScenario 设置为 Proxy。 |
网关
此方案描述连接到执行 SSL 并对用户进行身份验证的设备或软件的客户端应用程序。 接着,此设备或软件模拟用户上下文或其他用户上下文,之后对报表服务器发出请求。
| 情景 | 方案图 | 保护方式 |
|---|---|---|
| 间接 HTTP 通信。 网关将强制实施客户端到网关通道绑定。 有一个用于报表服务器服务绑定的网关。 |
1) 客户端应用程序 2) 报表服务器 3) 网关设备 |
无法进行从客户端到报表服务器的通道绑定,因为网关模拟了一个身份,导致创建了新的 NTLM 令牌。 网关到报表服务器没有 SSL,因此无法强制实施通道绑定。 可以强制实施服务绑定。 将 RSWindowsExtendedProtectionLevel 设置为 Allow 或 Require。将 RSWindowsExtendedProtectionScenario 设置为 Any。网关设备应由管理员配置,以强制实施通道绑定。 |
| 与安全网关之间的间接 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 连接。 |
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)。
验证配置设置失败时,身份验证类型RSWindowsNTLMRSWindowsKerberos,并在RSWindowsNegotiate报表服务器上禁用。
Reporting Services 扩展保护的配置设置
下表提供有关在 rsreportserver.config 中显示的扩展保护配置设置的信息。
| 设置 | DESCRIPTION |
|---|---|
RSWindowsExtendedProtectionLevel |
指定扩展保护的实行程度。 有效值为:Off、Allow 和 Require。默认值是 Off。该值 Off 指定无通道绑定或服务绑定验证。该值 Allow 支持扩展保护,但不需要它。 “允许”值指定:对于在支持扩展保护的作系统上运行的客户端应用程序,将强制实施扩展保护。 如何强制实施保护取决于设置 RsWindowsExtendedProtectionScenario。对于在不支持扩展保护的作系统上运行的应用程序,允许进行身份验证。 该值 Require 指定:对于在支持扩展保护的作系统上运行的客户端应用程序,将强制实施扩展保护。 对于在不支持扩展保护的作系统上运行的应用程序, 不允许 进行身份验证。 |
RsWindowsExtendedProtectionScenario |
指定要验证哪些形式的扩展保护:渠道绑定、服务绑定,或两者。 有效值为:Any、Proxy 和 Direct。默认值是 Proxy。该值 Any 指定:-不需要 Windows NTLM、Kerberos 和 Negotiate 身份验证,也不需要通道绑定。 \- 实行服务绑定。 该值 Proxy 指定:\- 当存在渠道绑定标记时,使用 Windows NTLM、Kerberos 和 Negotiate 身份验证。 \- 实行服务绑定。 该值 Direct 指定:-当 CBT 存在时,Windows NTLM、Kerberos 和协商身份验证、与当前服务的 SSL 连接存在,SSL 连接的 CBT 与 NTLM、Kerberos 或协商令牌的 CBT 匹配。 -未强制实施服务绑定。 注意:如果 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 预留。
从域控制器检索到的与报表服务服务帐户相关的每个 SPN。
如果 URL 预留包含通配符(“*”或“+”),则报表服务器将从 hosts 集合中添加每个条目。
Hosts 集合来源。
下表列出了 Hosts 集合的潜在来源。
| 源类型 | DESCRIPTION |
|---|---|
| ComputerNameDnsDomain | 分配给本地计算机的 DNS 域的名称。 如果本地计算机为群集中的节点,则将使用群集虚拟服务器的 DNS 域名。 |
| ComputerNameDnsFullyQualified(计算机名称完整DNS名) | 唯一标识本地计算机的完全限定 DNS 名称。 此名称是 DNS 主机名和 DNS 域名的组合, 采用主机名形式。DomainName。 如果本地计算机为群集中的节点,则将使用群集虚拟服务器的完全限定 DNS 名称。 |
| ComputerNameDnsHostname | 本地计算机的 DNS 主机名。 如果本地计算机为群集中的节点,则将使用群集虚拟服务器的 DNS 主机名。 |
| ComputerNameNetBIOS | 本地计算机的 NetBIOS 名称。 如果本地计算机为群集中的节点,则将使用群集虚拟服务器的 NetBIOS 主机名。 |
| ComputerNamePhysicalDnsDomain | 分配给本地计算机的 DNS 域的名称。 如果本地计算机为群集中的节点,则将使用本地计算机的 DNS 域名,而不使用群集虚拟服务器的名称。 |
| 计算机名称物理Dns完全限定 | 唯一标识计算机的完全限定 DNS 名称。 如果本地计算机为群集中的节点,则将使用本地计算机的完全限定 DNS 名称,而不使用群集虚拟服务器的名称。 完全限定的 DNS 名称是 DNS 主机名和 DNS 域名的组合,使用窗体 HostName。DomainName。 |
| 计算机名称物理DNS主机名 | 本地计算机的 DNS 主机名。 如果本地计算机为群集中的节点,则将使用本地计算机的 DNS 主机名,而不使用群集虚拟服务器的名称。 |
| 计算机名称物理NetBIOS | 本地计算机的 NetBIOS 名称。 如果本地计算机是群集中的节点,则本地计算机的 NetBIOS 名称,而不是群集虚拟服务器的名称。 |
有关详细信息,请参阅为报表服务器注册服务主体名称(SPN),以及关于 URL 预留和注册(SSRS 配置管理器)。
另请参阅
使用扩展保护连接到数据库引擎扩展保护的身份验证概述集成 Windows 身份验证与扩展保护Microsoft 安全公告:扩展保护的身份验证报表服务器服务跟踪日志RSReportServer 配置文件SetExtendedProtectionSettings 方法(WMI MSReportServer_ConfigurationSetting)