Share via


含有 Reporting Services 之驗證的擴充保護

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

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

SQL Server 2008 R2 Reporting Services 支援並強制執行已在作業系統中啟用,且在 Reporting Services 中設定的擴充保護。根據預設,Reporting Services 會接受指定交涉或 NTLM 驗證的要求,因此可以在作業系統與 Reporting Services 擴充保護功能中獲得擴充保護支援。

重要事項重要事項

Windows 預設不會啟用 [擴充保護]。如需有關如何在 Windows 中啟用 [擴充保護] 的詳細資訊,請參閱<驗證延伸保護>。作業系統與用戶端驗證堆疊必須同時支援擴充保護,驗證才會成功。對於舊版作業系統,您可能需要針對完整具備擴充保護的電腦安裝多個更新。如需有關最近開發之擴充保護的詳細資訊,請參閱<擴充保護的更新資訊>(英文)。

Reporting Services 擴充保護概觀

SQL Server 2008 R2 Reporting Services 支援並強制執行已在作業系統中啟用的擴充保護。 如果作業系統不支援擴充保護,或者尚未啟用作業系統中的功能,Reporting Services 擴充保護功能將會無法驗證。 Reporting Services 擴充保護也需要 SSL 憑證。如需詳細資訊,請參閱<設定安全通訊端層 (SSL) 連接的報表伺服器

重要事項重要事項

Reporting Services 預設不會啟用 [擴充保護]。此功能可以透過修改 rsreportserver.config 組態檔或使用 WMI APIs 更新組態檔來啟用。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 Servers 無法啟用擴充保護,否則報表伺服器為連接報表資料來源所做的嘗試將會失敗,並傳回驗證錯誤。可能的因應方式是變更 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 Upgrade Advisor 不會驗證作業系統或目前安裝的 Reporting Services 是否已啟用擴充保護支援。

Reporting Services 擴充保護不涵蓋的功能

Reporting Services擴充保護功能不支援下列功能區與狀況:

  • Reporting Services 自訂安全性延伸模組的作者必須將擴充保護的支援加入其自訂安全性延伸模組。

  • Reporting Services安裝所加入或使用的協力廠商元件必須由協力廠商更新,才能支援擴充保護。如需詳細資訊,請連絡協力廠商。

部署案例與建議

下列案例說明不同的部署與拓撲,以及使用 Reporting Services 擴充保護來保護其安全的建議組態。

直接

此案例描述直接連接至報表伺服器,例如內部網路環境。

案例

案例圖表

如何保護安全

直接 SSL 通訊。

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

使用 SSL 的擴充保護直接存取

1) 用戶端應用程式

2) 報表伺服器

  • 不需要服務繫結,因為 SSL 通道將用於通道繫結。

將 RSWindowsExtendedProtectionLevel 設定為 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Direct。

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

擴充保護和直接存取

1) 用戶端應用程式

2) 報表伺服器

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

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

將 RSWindowsExtendedProtectionLevel 設定為 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Any。

Proxy 與網路負載平衡

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

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

案例

案例圖表

如何保護安全

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

RS 擴充保護間接存取

1) 用戶端應用程式

2) 報表伺服器

3) Proxy

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

將 RSWindowsExtendedProtectionLevel 設定為 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Any。

  • 報表伺服器必須設定為知道 Proxy 伺服器的名稱,才能確保正確強制執行服務繫結。

HTTP 通訊。

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

使用 SSL 的 RS 擴充保護間接存取

1) 用戶端應用程式

2) 報表伺服器

3) Proxy

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

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

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

RSWindowsExtendedProtectionLevel 到 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Proxy。

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

擴充保護間接存取 SSL 和 HTTPS

1) 用戶端應用程式

2) 報表伺服器

3) Proxy

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

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

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

RSWindowsExtendedProtectionLevel 到 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Proxy。

閘道

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

案例

案例圖表

如何保護安全

間接 HTTP 通訊。

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

使用 SSL 的 RS 擴充保護間接存取

1) 用戶端應用程式

2) 報表伺服器

3) 閘道裝置

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

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

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

將 RSWindowsExtendedProtectionLevel 設定為 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Any。

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

透過安全閘道進行的間接 HTTPS 通訊。閘道將會強制執行用戶端到閘道的通道繫結,而且報表伺服器將會強制執行閘道到報表伺服器的通道繫結。

擴充保護間接存取 SSL 和 HTTPS

1) 用戶端應用程式

2) 報表伺服器

3) 閘道裝置

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

  • 從閘道到報表伺服器有 SSL,表示可以強制執行通道繫結。

  • 不需要服務繫結。

將 RSWindowsExtendedProtectionLevel 設定為 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Direct。

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

合併

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

案例

案例圖表

如何保護安全

在用戶端到 Proxy 或用戶端到報表伺服器連接沒有 SSL 的情況下,從用戶端到報表伺服器服務的間接和直接存取。

擴充保護混合環境

1) 用戶端應用程式

2) 報表伺服器

3) Proxy

4) 用戶端應用程式

  • 可以強制執行從用戶端到報表伺服器的服務繫結。

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

將 RSWindowsExtendedProtectionLevel 設定為 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Any。

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

混合 SSL 的擴充保護

1) 用戶端應用程式

2) 報表伺服器

3) Proxy

4) 用戶端應用程式

  • 可以使用通道繫結。

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

將 RSWindowsExtendedProtectionLevel 設定為 Allow 或 Require。

將 RSWindowsExtendedProtectionScenario 設定為 Proxy。

設定 Reporting Services 擴充保護

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 和交涉驗證,但不需要通道繫結。

  • 服務繫結會強制執行。

Proxy 這個值會指定:

  • Windows NTLM、Kerberos 和交涉驗證 (當通道繫結 Token 存在時)。

  • 服務繫結會強制執行。

Direct 這個值會指定:

  • Windows NTLM、Kerberos 和交涉驗證 (當 CBT 存在、目前服務的 SSL 連接存在,而且 SSL 連接的 CBT 與 NTLM、Kerberos 或交涉 Token 的 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,因此會在追蹤記錄中加入一個項目,如下所示:

rshost!rshost!10a8!01/07/2010-19:29:38:: i INFO: SPN Whitelist Added <ComputerNamePhysicalNetBIOS> - <theservername>.

rshost!rshost!10a8!01/07/2010-19:29:38:: i INFO: SPN Whitelist Added <ComputerNamePhysicalDnsHostname> - <theservername>.

如需詳細資訊,請參閱<如何:為報表伺服器註冊服務主要名稱 (SPN)>和<關於 URL 保留項目和註冊 (Reporting Services)>。