擴充保護是一組增強 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) Upgrade Advisor 不會驗證作業系統或 Reporting Services 目前的安裝是否已啟用延伸保護支援。
Reporting Services 擴充保護未涵蓋的內容
Reporting Services 擴充保護功能不支援下列功能區域和案例:
Reporting Services 自定義安全性延伸模組的作者必須將延伸保護的支援新增至自定義安全性延伸模組中。
Reporting Services 安裝新增或使用的第三方元件必須由第三方廠商更新,以支援延伸保護。 如需詳細資訊,請連絡第三方廠商。
部署案例和建議
下列案例說明不同的部署和拓撲,以及建議的設定,以使用 Reporting Services 擴充保護來保護它們。
直接
此案例描述直接連線到報表伺服器,例如內部網路環境。
| 情境 | 案例圖表 | 如何保護 |
|---|---|---|
| 直接 SSL 通訊。 報表伺服器將強制客戶端遵循至報表伺服器的通道綁定。 |
1) 用戶端應用程式 2) 報表伺服器 |
不需要服務系結,因為 SSL 通道將用於通道系結。 設定 RSWindowsExtendedProtectionLevel 為 Allow 或 Require。將 RSWindowsExtendedProtectionScenario 設定為 Direct。 |
| 直接 HTTP 通訊。 報表伺服器會強制執行客戶端至報表伺服器的服務綁定。 |
1) 用戶端應用程式 2) 報表伺服器 |
沒有 SSL 通道,因此無法強制執行通道系結。 服務系結可以驗證,但是,如果沒有通道系結,且服務系結本身就不是完整的防禦,它只會保護不受基本威脅的影響。 設定 RSWindowsExtendedProtectionLevel 為 Allow 或 Require。將 RSWindowsExtendedProtectionScenario 設定為 Any。 |
Proxy 和網路負載平衡
用戶端應用程式會連線到執行 SSL 的裝置或軟體,並傳遞認證給伺服器進行驗證,例如外部網路、因特網或安全內部網路。 用戶端會連線到 Proxy 或所有用戶端使用 Proxy。
當您使用網路負載平衡 (NLB) 裝置時,情況會相同。
| 情境 | 案例圖表 | 如何保護 |
|---|---|---|
| HTTP 通訊。 報表伺服器會強制用戶端執行至報表伺服器的服務系結。 |
1) 用戶端應用程式 2) 報表伺服器 3) Proxy |
沒有 SSL 通道,因此無法強制執行通道系結。 設定 RSWindowsExtendedProtectionLevel 為 Allow 或 Require。將 RSWindowsExtendedProtectionScenario 設定為 Any。請注意,報表伺服器必須設定為知道 Proxy 伺服器的名稱,以確保已正確強制執行服務系結。 |
| HTTP 通訊。 報表伺服器將強制用戶端進行代理通道綁定,以及用戶端進行報表伺服器服務綁定。 |
1) 用戶端應用程式 2) 報表伺服器 3) Proxy |
SSL 通道到 Proxy 已啟用,因此可以強制執行 Proxy 的通道綁定。 可以強制執行服務綁定。 報表伺服器必須知道 Proxy 名稱,報表伺服器管理員應該為其使用主機標頭建立 URL 保留,或者在 Windows 登錄項目中設定 Proxy 名稱 BackConnectionHostNames。RSWindowsExtendedProtectionLevel 至 Allow 或 Require。將 RSWindowsExtendedProtectionScenario 設定為 Proxy。 |
| 與安全代理伺服器的間接 HTTPS 通訊。 報表伺服器將使用戶端必須綁定至 Proxy 通道,並使客戶端綁定至報表伺服器的服務。 |
1) 用戶端應用程式 2) 報表伺服器 3) Proxy |
SSL 通道對代理伺服器可用,因此可以強制執行通道繫結至代理伺服器。 也可強制服務綁定。 報表伺服器必須知道 Proxy 名稱,報表伺服器管理員應該為其使用主機標頭建立 URL 保留,或者在 Windows 登錄項目中設定 Proxy 名稱 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。閘道應該由系統管理員設定,以強制執行通道系結。 |
組合
此案例描述用戶端連接 Proxy 的外部網路或因特網環境。 這會與客戶端連線到報表伺服器的內部網路環境結合。
| 情境 | 案例圖表 | 如何保護 |
|---|---|---|
| 用戶端對報表伺服器或對代理伺服器的連線中,包括間接存取和直接存取,都不需要使用 SSL。 | 1) 用戶端應用程式 2) 報表伺服器 3) Proxy 4) 用戶端應用程式 |
您可以從客戶端系結至報表伺服器強制執行服務系結。 報表伺服器必須知道 Proxy 名稱,報表伺服器管理員應該為其使用主機標頭建立 URL 保留,或者在 Windows 登錄項目中設定 Proxy 名稱 BackConnectionHostNames。設定 RSWindowsExtendedProtectionLevel 為 Allow 或 Require。將 RSWindowsExtendedProtectionScenario 設定為 Any。 |
| 從用戶端到報表伺服器的間接存取和直接存取,其中用戶端會建立 Proxy 或報表伺服器的 SSL 連線。 |
1) 用戶端應用程式 2) 報表伺服器 3) Proxy 4) 用戶端應用程式 |
可以使用通道系結 報表伺服器必須能識別 Proxy 名稱,報表伺服器系統管理員應使用主機標頭為此 Proxy 建立 URL 預留,或在 Windows 登錄項中設定 Proxy 名稱。 設定 RSWindowsExtendedProtectionLevel 為 Allow 或 Require。將 RSWindowsExtendedProtectionScenario 設定為 Proxy。 |
設定報告服務增強保護
檔案 rsreportserver.config 包含控制 Reporting Services 擴充保護行為的組態值。
如需使用和編輯 rsreportserver.config 檔案的詳細資訊,請參閱 RSReportServer 組態檔。 您也可以使用 WMI API 來變更和檢查擴充保護設定。 如需詳細資訊,請參閱 SetExtendedProtectionSettings 方法(WMI MSReportServer_ConfigurationSetting)。
驗證組態設定失敗時,報表伺服器上將停用驗證類型 RSWindowsNTLM、RSWindowsKerberos 和 RSWindowsNegotiate。
報表服務的擴充保護組態設定
下表提供有關在rsreportserver.config中出現的擴充保護組態設定的資訊。
| 設定 | 說明 |
|---|---|
RSWindowsExtendedProtectionLevel |
指定延伸保護的強制執行程度。 有效值為 Off、Allow和 Require。預設值是 Off。值 Off 不指定通道系結或服務系結驗證。值 Allow 支持擴充保護,但不需要它。 "Allow" 的值指定了:針對在支援擴充保護的作系統上執行的用戶端應用程式,將會強制執行擴充保護。 強制執行保護的方式取決於設定 RsWindowsExtendedProtectionScenario。對於不支援擴充保護的作系統上執行的應用程式,將允許驗證。 值 Require 指定:針對在支援擴充保護的作系統上執行的用戶端應用程式,將會強制執行擴充保護。 不支援擴充保護的作業系統上執行的這些應用程式 將無法進行驗證。 |
RsWindowsExtendedProtectionScenario |
指定驗證哪些形式的擴充保護:通道系結、服務系結或兩者。 有效值為 Any、Proxy和 Direct。預設值是 Proxy。值 Any 指定:-不需要 Windows NTLM、Kerberos、協商驗證和通道綁定。 -服務綁定已強制執行。 值 Proxy 指定:-當通道系結令牌存在時,Windows NTLM、Kerberos 和協商驗證。 -服務綁定已強制執行。 值 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 集合的潛在來源。
| 來源類型 | 說明 |
|---|---|
| 計算機名稱DNS域 | 指派給本機計算機的 DNS 網域名稱。 如果本機電腦是叢集中的節點,則會使用叢集虛擬伺服器的 DNS 網域名稱。 |
| 計算機名稱 (DNS 完全限定) | 可唯一識別本機計算機的完整 DNS 名稱。 此名稱是 DNS 主機名和 DNS 功能變數名稱的組合,其格式為 HostName。DomainName。 如果本機計算機是叢集中的節點,則會使用叢集虛擬伺服器的完整 DNS 名稱。 |
| 電腦名稱DNS主機名 | 本機電腦的 DNS 主機名。 如果本機計算機是叢集中的節點,則會使用叢集虛擬伺服器的 DNS 主機名。 |
| NetBIOS電腦名稱 | 本機電腦的 NetBIOS 名稱。 如果本機計算機是叢集中的節點,則會使用叢集虛擬伺服器的 NetBIOS 名稱。 |
| 電腦名稱實體域名 (ComputerNamePhysicalDnsDomain) | 指派給本機計算機的 DNS 網域名稱。 如果本機計算機是叢集中的節點,則會使用本機計算機的 DNS 功能變數名稱,而不是叢集虛擬伺服器的名稱。 |
| ComputerNamePhysicalDnsFullyQualified | 可唯一識別計算機的完整 DNS 名稱。 如果本機計算機是叢集中的節點,則會使用本機計算機的完整 DNS 名稱,而不是叢集虛擬伺服器的名稱。 完整 DNS 名稱是 DNS 主機名和 DNS 功能變數名稱的組合,其格式為 HostName。DomainName。 |
| 電腦名稱實體Dns主機名稱 | 本機電腦的 DNS 主機名。 如果本機計算機是叢集中的節點,則會使用本機計算機的 DNS 主機名,而不是叢集虛擬伺服器的名稱。 |
| 計算機名稱物理NetBIOS | 本機電腦的 NetBIOS 名稱。 如果本機計算機是叢集中的節點,本機計算機的 NetBIOS 名稱,而不是叢集虛擬伺服器的名稱。 |
如需詳細資訊,請參閱為報表伺服器註冊服務主體名稱 (SPN)和關於 URL 保留與註冊 (SSRS 組態管理員)。
另請參閱
使用擴充保護連線至資料庫引擎擴充保護進行驗證概觀使用擴充保護的整合式 Windows 驗證Microsoft 安全性公告:擴充保護進行驗證報表伺服器服務追蹤記錄RSReportServer 組態檔案SetExtendedProtectionSettings 方法 (WMI MSReportServer_ConfigurationSetting)