共用方式為


含有 Reporting Services 的驗證擴充保護

「擴充保護」是 Microsoft Windows 作業系統最新版本的一組增強功能。 擴充保護會增強認證與驗證受到應用程式保護的方式。 此功能本身並不會針對認證轉送這類特定攻擊直接提供保護,但會為 Reporting Services 這類應用程式提供基礎結構,以增強驗證擴充保護。

屬於擴充保護一部分的主要驗證增強功能為服務繫結與通道繫結。 通道繫結使用通道繫結 Token (CBT) 驗證兩點端點之間建立的通道是否未受到危害。 服務繫結使用服務主要名稱 (SPN) 驗證預期的驗證 Token 目的地。 如需擴充保護的詳細背景資訊,請參閱 Integrated Windows Authentication with Extended Protection(具有擴充保護的整合式 Windows 驗證)。

SQL Server 2019 (15.x) Reporting Services支援並強制執行已在作業系統中啟用的擴充保護,並在Reporting Services中設定。 依預設,Reporting Services 會接受指定交涉或 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 Servers 無法啟用擴充保護,否則報表伺服器為連線至報表資料來源所做的嘗試將會失敗,並傳回驗證錯誤。

資料存取技術的文件應具有支援擴充保護的資訊。

升級

  • 將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 通訊。

報表伺服器將會強制執行用戶端到報表伺服器的通道繫結。
RS_ExtendedProtection_DirectSSL

1) 用戶端應用程式

2) 報表伺服器
不需要服務繫結,因為 SSL 通道將用於通道繫結。

RSWindowsExtendedProtectionLevel 設定為 AllowRequire

RSWindowsExtendedProtectionScenario 設定為 Direct
直接 HTTP 通訊。 報表伺服器將會強制執行用戶端到報表伺服器的服務繫結。 RS_ExtendedProtection_Direct

1) 用戶端應用程式

2) 報表伺服器
沒有 SSL 通道,因此無法強制執行通道繫結。

服務繫結可以經過驗證,不過,如果沒有自己的通道繫結和服務繫結,它將只能防範基本威脅,而不是完整的防禦。

RSWindowsExtendedProtectionLevel 設定為 AllowRequire

RSWindowsExtendedProtectionScenario 設定為 Any

Proxy 與網路負載平衡

用戶端應用程式所連接的裝置或軟體會執行 SSL 並通過伺服器的認證以進行驗證,例如外部網路、網際網路或安全的內部網路。 用戶端連接至 Proxy 或所有用戶端都使用 Proxy。

這個情況與您使用網路負載平衡 (NLB) 裝置相同。

狀況 案例圖表 如何保護安全
HTTP 通訊。 報表伺服器將會強制執行用戶端到報表伺服器的服務繫結。 RS_ExtendedProtection_Indirect

1) 用戶端應用程式

2) 報表伺服器

3) Proxy
沒有 SSL 通道,因此無法強制執行通道繫結。

RSWindowsExtendedProtectionLevel 設定為 AllowRequire

RSWindowsExtendedProtectionScenario 設定為 Any

請注意,報表伺服器必須設定為知道 Proxy 伺服器的名稱,以確保正確強制執行服務系結。
HTTP 通訊。

報表伺服器將會強制執行用戶端到 Proxy 的通道繫結與用戶端到報表伺服器的服務繫結。
RS_ExtendedProtection_Indirect_SSL

1) 用戶端應用程式

2) 報表伺服器

3) Proxy
SSL 通道到 Proxy 的連線可以使用,因此可以強制執行 Proxy 的通道繫結。

也可以強制執行服務繫結。

報表伺服器必須知道 Proxy 名稱,而且報表伺服器管理員應該為該 Proxy 建立一個包含主機標頭的保留 URL,或在 Windows 登錄項目 BackConnectionHostNames 中設定 Proxy 名稱。

RSWindowsExtendedProtectionLevelAllowRequire

RSWindowsExtendedProtectionScenario 設定為 Proxy
透過安全 Proxy 進行的間接 HTTPS 通訊。 報表伺服器將會強制執行用戶端到 Proxy 的通道繫結與用戶端到報表伺服器的服務繫結。 RS_ExtendedProtection_IndirectSSLandHTTPS

1) 用戶端應用程式

2) 報表伺服器

3) Proxy
SSL 通道到 Proxy 的連線可以使用,因此可以強制執行 Proxy 的通道繫結。

也可以強制執行服務繫結。

報表伺服器必須知道 Proxy 名稱,而且報表伺服器管理員應該為該 Proxy 建立一個包含主機標頭的保留 URL,或在 Windows 登錄項目 BackConnectionHostNames 中設定 Proxy 名稱。

RSWindowsExtendedProtectionLevelAllowRequire

RSWindowsExtendedProtectionScenario 設定為 Proxy

閘道

此案例描述連接至執行 SSL 並驗證使用者之裝置或軟體的用戶端應用程式。 接著,裝置或軟體會模擬使用者內容或不同的使用者內容,之後才對報表伺服器發出要求。

狀況 案例圖表 如何保護安全
間接 HTTP 通訊。

閘道將會強制執行用戶端到閘道的通道繫結。 此處有閘道到報表伺服器的服務繫結。
RS_ExtendedProtection_Indirect_SSL

1) 用戶端應用程式

2) 報表伺服器

3) 閘道裝置
從用戶端到報表伺服器沒有通道繫結,因為閘道會模擬內容,並因而建立新的 NTLM Token。

從閘道到報表伺服器沒有 SSL,因此無法強制執行通道繫結。

可以強制執行服務繫結。

RSWindowsExtendedProtectionLevel 設定為 AllowRequire

RSWindowsExtendedProtectionScenario 設定為 Any

系統管理員應該設定閘道裝置來強制執行通道繫結。
透過安全閘道進行的間接 HTTPS 通訊。 閘道將會強制執行用戶端到閘道的通道繫結,而且報表伺服器將會強制執行閘道到報表伺服器的通道繫結。 RS_ExtendedProtection_IndirectSSLandHTTPS

1) 用戶端應用程式

2) 報表伺服器

3) 閘道裝置
從用戶端到報表伺服器沒有通道繫結,因為閘道會模擬內容,並因而建立新的 NTLM Token。

從閘道到報表伺服器的 SSL 表示可以強制執行通道系結。

不需要服務繫結。

RSWindowsExtendedProtectionLevel 設定為 AllowRequire

RSWindowsExtendedProtectionScenario 設定為 Direct

系統管理員應該設定閘道裝置來強制執行通道繫結。

合併

此案例描述用戶端連接 Proxy 的外部網路或網際網路環境。 這是合併用戶端連接報表伺服器的內部網路環境。

狀況 案例圖表 如何保護安全
在用戶端到 Proxy 或用戶端到報表伺服器連線沒有 SSL 的情況下,從用戶端到報表伺服器服務的間接和直接存取。 1) 用戶端應用程式

2) 報表伺服器

3) Proxy

4) 用戶端應用程式
可以強制執行從用戶端到報表伺服器的服務繫結。

報表伺服器必須知道 Proxy 名稱,而且報表伺服器管理員應該為該 Proxy 建立一個包含主機標頭的保留 URL,或在 Windows 登錄項目 BackConnectionHostNames 中設定 Proxy 名稱。

RSWindowsExtendedProtectionLevel 設定為 AllowRequire

RSWindowsExtendedProtectionScenario 設定為 Any
在用戶端建立與 Proxy 或報表伺服器的 SSL 連接時,從用戶端到報表伺服器服務的間接和直接存取。 RS_ExtendedProtection_CombinationSSL

1) 用戶端應用程式

2) 報表伺服器

3) Proxy

4) 用戶端應用程式
可以使用通道繫結。

報表伺服器必須知道 Proxy 名稱,而且報表伺服器管理員應該為該 Proxy 建立一個包含主機標頭的保留 URL,或在 Windows 登錄項目 BackConnectionHostNames 中設定 Proxy 名稱。

RSWindowsExtendedProtectionLevel 設定為 AllowRequire

RSWindowsExtendedProtectionScenario 設定為 Proxy

設定 Reporting Services 擴充保護

檔案 rsreportserver.config 包含可控制Reporting Services擴充保護行為的組態值。

如需使用和編輯 rsreportserver.config 檔案的詳細資訊,請參閱 RSReportServer 組態檔。 擴充保護設定也可以透過 WMI API 變更與檢查。 如需詳細資訊,請參閱 SetExtendedProtectionSettings 方法 (WMI MSReportServer_ConfigurationSetting)

當組態設定的驗證失敗時,報表伺服器上會停用驗證類型 RSWindowsNTLMRSWindowsKerberosRSWindowsNegotiate

Reporting Services 擴充保護的組態設定

下表提供的資訊有關 rsreportserver.config 中顯示之擴充保護的組態設定。

設定 描述
RSWindowsExtendedProtectionLevel 指定擴充保護的強制執行程度。 有效值是 OffAllowRequire

預設值是 Off

值為 Off 時,不會指定通道繫結或服務繫結驗證。

值為 Allow 時,則支援擴充保護但並不需要它。 Allow 這個值會指定:

擴充保護將會針對在支援擴充保護之作業系統上執行的用戶端應用程式強制執行。 您可以設定 RsWindowsExtendedProtectionScenario 來決定強制執行保護的方式。

對於在不支援擴充保護之作業系統上執行的應用程式,不允許執行驗證。

這個值會指定:

擴充保護將會針對在支援擴充保護之作業系統上執行的用戶端應用程式強制執行。

不支援擴充保護的作業系統上執行的應用程式 不允許驗證。
RsWindowsExtendedProtectionScenario 指定要驗證的擴充保護形式:通道繫結、服務繫結或兩者。 有效值是 AnyProxyDirect

預設值是 Proxy

這個值會指定:

\- Windows NTLM、Kerberos 和交涉驗證,而不需要通道繫結。

\- 服務繫結會強制執行。

這個值會指定:

\- Windows NTLM、Kerberos 和交涉驗證 (當通道繫結權杖存在時)。

\- 服務繫結會強制執行。

這個值會指定:

- Windows NTLM、Kerberos 和交涉驗證 (當 CBT 存在、目前服務的 SSL 連線存在,而且 SSL 連線的 CBT 與 NTLM、Kerberos 或交涉權杖的 CBT 相符時)。

\- 服務繫結不會強制執行。



注意:如果 RsWindowsExtendedProtectionLevel 設定為 OFF ,則會忽略此設定。

rsreportserver.config 組態檔中的範例項目:

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

服務繫結與隨附的 SPN

服務繫結使用服務主要名稱或 SPN 驗證預期的驗證 Token 目的地。 Reporting Services 使用現有 URL 保留資訊來建立視為有效的 SPN 清單。 使用 URL 保留資訊同時驗證保留的 SPN 和 URL 可讓系統管理員從單一位置同時進行管理。

當報表伺服器啟動時、擴充保護的組態設定變更時,或應用程式定義域循環使用時,會更新有效 SPN 的清單。

有效的 SPN 清單專屬於每個應用程式。 例如,報表管理員和報表伺服器會各自計算一份不同的有效 SPN 清單。

針對應用程式計算的有效 SPN 清單取決於下列因素:

  • 每個保留的 URL。

  • 從 Reporting Services 服務帳戶之網域控制站擷取的每個 SPN。

  • 如果保留的 URL 包括萬用字元 ('*' 或 '+'),則報表伺服器將會從主機集合加入每個項目。

主機集合來源。

下表列出主機集合的潛在來源。

來源類型 描述
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 保留專案和註冊 (SSRS Configuration Manager)

另請參閱

使用擴充保護擴充保護進行驗證的 Database Engine 連線至驗證整合式 Windows 驗證與擴充保護Microsoft Security Advisory:驗證報表伺服器服務追蹤記錄RSReportServer 組態檔SetExtendedProtectionSettings 方法的擴充保護 (WMI MSReportServer_ConfigurationSetting)