SQL Server Reporting Service 的身分識別委派 (SharePoint Server 2010)

 

適用版本: SharePoint Server 2010

上次修改主題的時間: 2016-11-30

在此案例中,您要在以 SharePoint 整合模式執行的擴充設定中,設定一對負載平衡的 SQL Server Reporting Services (SSRS) 伺服器。伺服器設定為接受 Kerberos 驗證,並將驗證委派給後端 SQL Server 叢集。

在此案例中,SharePoint Server 伺服器陣列及 Reporting Services 資料來源都在相同的網域中;因此,在此案例中,我們設定 Kerberos 限制委派,以允許身分識別委派給後端資料來源。如果您需要以相同樹系內其他網域中的資料來源來驗證,則必須設定基本 (未設限) Kerberos 委派。請記得,Reporting Services 不使用 C2WTS,因此可以使用基本委派。

案例相依性

設定檢查清單

設定區域 描述

Active Directory

建立 SSRS 服務帳戶

設定 Kerberos 限制委派

SQL Server Reporting Services

在負載平衡的擴充模式下安裝及設定 SSRS

修改 Web.Config

修改 ReportingServer.config

設定 SharePoint Server

設定 Reporting Services 整合

新增報表伺服器至整合

設定伺服器預設值

確認設定

建立報表的文件庫

設定 Reporting Services 的網站集合設定

在 SQL Server Business Intelligence Studio 中建立及發佈測試報表

在 Internet Explorer 中檢視測試報表

案例環境詳細資料

案例環境圖表

在此案例中,Internet Information Services (IIS) 應用程式集區服務帳戶設定為委派給 SQL Server Reporting Services (SSRS) 服務。SSRS 服務帳戶設定為將認證委派給 SQL Server 服務。請注意,SharePoint 整合模式下的 SQL Server Reporting Services 不使用伺服器陣列內部的宣告驗證,且需要 Kerberos 驗證來進行委派驗證。如需詳細資訊,請參閱宣告驗證及 Reporting Services

跨網域 Kerberos 委派

在此範例中,SSRS 所連接的資料來源位在與 SSRS 伺服器相同的網域中。在某些情況下,您可能會想要存取 SSRS 所在網域外面的資料來源。若要以委派跨網域來驗證,您必須在 SSRS 服務帳戶上設定基本 (未設限) 委派。請記得這是有可能的,因為 SSRS 服務不依賴「對 Windows Token 服務的宣告」(C2WTS),因此不需要透過 Kerberos 限制委派的通訊協定轉換。另外也請注意,即使是採用基本委派,都不可能進行跨樹系委派。

逐步式設定指示

設定 DNS

在您的環境中設定 SSRS NLB 伺服器群組的 DNS。在此範例中,我們有兩部 SSRS 伺服器:VMSSRS01 和 VMSSRS02,兩者負載平衡,並解析至相同的 NLB VIP (192.168.24.180/24)。VIP 將會對應至主機 FarmReports,且 URL 為 http://FarmReports

如需如何設定 DNS 的一般資訊,請參閱管理 DNS 記錄 (可能為英文網頁)

為 SSRS 主機設定新的「DNS A 記錄」。在此範例中,我們將主機 FarmReports 設定為解析至負載平衡的 VIP。

Active Directory 目錄服務

建立 SSRS 服務帳戶

最好的作法就是 SQL Server Reporting Services 用它自己的網域身分識別來執行。在此範例中,建立了下列帳戶:

服務 服務身分識別

SQL Server Reporting Services

vmlab\svcSQLRS

設定服務主要名稱

若要讓 SSRS 使用 Kerberos 驗證來連接及驗證外部資料來源,報表伺服器 Web 服務和 Report Manager 服務帳戶,以及外部資料來源的服務帳戶,都必須設定服務主要名稱。請參閱本系列文章中的案例 1 和 2 (<核心設定>及<SQL OLTP 的 Kerberos 驗證>),以設定及驗證 SharePoint Server Web 應用程式和 SQL Server 服務帳戶的必要 SPN。針對 SSRS 伺服器,已定義下列 SPN:

DNS 主機 IIS 應用程式集區身分識別 服務主要名稱

FarmReports.vmlab.local

vmlab\svcSQLRS

HTTP/FarmReports

HTTP/ FarmReports.vmlab.local

在此範例中,執行了下列命令:

SetSPN -S HTTP/FarmReports vmlab\svcSQLRS

SetSPN -S HTTP/FarmReports.vmlab.local vmlab\svcSQLRS

設定委派

必須為 SSRS 設定 Kerberos 委派,以將委派用戶端身分識別委派給後端資料來源。在此範例中,SSRS 使用用戶端身分識別來向 SQL Server 交易資料庫查詢資料,所以需要 Kerberos 委派。Kerberos 限制委派 (KCD) 並不是此案例中的必要項目 (因為不需要通訊協定轉換),但是已將 KCD 設定為最佳作法。

執行 SSRS 服務的 SSRS 服務帳戶必須受信任,才能將認證委派給每個後端服務。在我們的範例中,需要下列委派路徑:

主要類型 主要名稱 委派給服務

使用者

Vmlab\svcPortal10App

HTTP/FarmReports

HTTP/FarmReports.vmlab.local

使用者

Vmlab\svcSQLRS

MSSQLSVC/MySqlCluster.vmlab.local:1433

如果您想要針對 Analysis Services 資料來源提出報表,可以選擇設定下列委派路徑:

主要類型 主要名稱 委派給服務

使用者

Vmlab\svcSQLRS

MSOLAPSvc.3/MySqlCluster.vmlab.local

設定限制委派

  1. 在 [Active Directory 使用者及電腦] 中開啟 [Active Directory 物件] 的屬性。

  2. 導覽至 [委派] 索引標籤。

  3. 選取 [信任這個使用者,但只委派指定的服務]。

    注意

    針對 SSRS 服務帳戶,如果您需要驗證位在相同樹系中,但在 SSRS 伺服器所在網域外的資料來源,請設定基本委派,而不要設定限制委派。若要這麼做,請選取 [信任這台電腦,可委派任何服務]。請記得跨樹系 Kerberos 委派是不可能的。

  4. 選擇性地選取 [使用任何驗證通訊協定]。這會啟用通訊協定轉換。

  5. 按一下 [新增] 按鈕,選取可委派的服務主要名稱。

  6. 選取 [使用者及電腦]。

  7. 選取執行您要委派之服務的服務帳戶。在此範例中,這是 SQL Server Reporting Service 的服務帳戶。

    注意

    所選取的服務帳戶必須要已套用 SPN。在我們的範例中,此帳戶 (HTTP/FarmReports.vmlab.local) 的 SPN 之前已在案例中設定。

  8. 按一下 [確定]。下一頁會要求您選取要委派的 SPN。

  9. 選取服務或 [全選],再按一下 [確定]。

    您現在應該會看到所選取的 SPN 在 [這個帳戶可以呈送委派認證的服務] 清單中:

  10. 針對本節中先前識別的每個委派路徑,重複這些步驟。您必須設定委派,從 SQL Server Reporting Services 服務帳戶到一個或多個後端資料來源 (在我們的案例中是 SQL OLTP 或 SQL AS)。

    注意

    針對 SSRS 服務帳戶,如果您需要驗證位在相同樹系中,但在 SSRS 伺服器所在網域外的資料來源,請設定基本委派,而不要設定限制委派。若要這麼做,請選取 [信任這台電腦,可委派任何服務]。請記得跨樹系 Kerberos 委派是不可能的。

針對在 SQL Server 上執行服務的服務帳戶,確認 MSSQLSVC SPN (已在案例 2 執行)

使用下列 SetSPN 命令,確認 Analysis Services 服務帳戶 (vmlab\svcSQL) 的 SPN 存在:

SetSPN -L vmlab\svcSQL

您應該會看到下列項目:

MSSQLSVC/MySqlCluster MSSQLSVC/MySqlCluster.vmlab.local:1433

針對在 SQL Server Analysis Services 伺服器上執行 SSAS 服務的服務帳戶,確認 MSOLAPSvc.3 SPN (已在案例 3 執行)

使用下列 SetSPN 命令,確認 SQL Server 服務帳戶 (vmlab\svcSQLAS) 的 SPN 存在:

SetSPN -L vmlab\svcSQLAS

您應該會看到下列項目:

MSOLAPSvc.3/MySqlCluster MSOLAPSvc.3/MySqlCluster.vmlab.local

SQL Server Reporting Services

安裝 SharePoint Server 2010

SQL Server Reporting Services 需要每部 SSRS 伺服器上都安裝 SharePoint Server 2010,才能以 SharePoint 整合模式執行 SSRS。請在每部報表伺服器上安裝 SharePoint Server 2010,並將每部伺服器加入 SharePoint Server 伺服器陣列。

在負載平衡的擴充模式下安裝及設定 SSRS

有關如何在負載平衡擴充設定中設定 SQL Server Reporting Services 的詳細逐步指示,並不在本文件的討論範圍內。如需如何安裝 SSRS 的詳細指示,請參閱在 SharePoint 整合模式下部署 Reporting Services 的拓撲。安裝 SSRS 之後,請務必完成下面說明的額外 SSRS 設定步驟,以完成安裝。

修改 SSRS 伺服器上的 Web.config

每部 SSRS 伺服器上的 web.config 檔都必須進行下列變更。您可以在安裝 SSRS 的 Program Files 目錄中找到 web.config 檔:

新增 <電腦金鑰> 元素

負載平衡設定中的 SSRS 伺服器,需要所有伺服器之間都設定相同的電腦金鑰。應在 web.config 中將電腦金鑰元素新增為 <system.web> 元素的子項。以下是電腦金鑰範例:

<machineKey
validationKey="54AEBD3BC893726E9B84D30F4970CB58F2086C2DAEE2F8D34A65A0632F4676DDBBC38779F2972C6596931E
13BD07A772BD4B9395BE38A43E461079E45D594E53"
decryptionKey=""
validation="SHA1"
decryption="AES"
/>

重要

請勿使用我們環境中的電腦金鑰範例。請自行產生適合您環境的電腦金鑰值。

修改 ReportingServer.config

每部 SSRS 伺服器上的 ReportingServer.config 檔都必須進行下列變更。您可以在安裝 SSRS 的 Program Files 目錄中找到 ReportingServer.config 檔:

啟用 Kerberos 驗證

若要啟用 Kerberos 驗證,請將驗證類型設為 "RSWindowsNegotiate"。變更 <AuthenticationTypes/> 元素,並新增 <RSWindowsNegotiate/>

<AuthenticationTypes>
    <RSWindowsNegotiate/>
</AuthenticationTypes>

修改 URL 根目錄

將報表伺服器的 URL 新增至 <UrlRoot> 標記 (在 ReportingServer.Config 的 <service> 標記中)

<UrlRoot>http://FarmReports/reportserver</UrlRoot>

在登錄中設定 BackConnectionHostNames

若要讓 SQL Server Reporting Services 在單一電腦上彼此驗證,就需要處理 NTLM 回送偵測。與其停用回送偵測,較好的作法是在每部 SSRS 伺服器的登錄中設定 BackConnectionHostNames 值。如需 BackConnectionHostNames 的詳細資訊,請參閱您在使用 SQL Server 2008 Reporting Services 時收到錯誤訊息

在我們的範例中,我們為 BackConnectionHostNames 設定下列值:

  • FarmReports

  • FarmReports.vmlab.local

設定好 BackConnectionHostNames 值之後,重新啟動 SSRS 伺服器。

設定 SharePoint Server

在管理中心中尋找 SSRS 的伺服器陣列設定選項。請注意,在 SharePoint Server 2010 中,您不需要為 SSRS 管理和網頁組件安裝個別的 SSRS 元件安裝。若要存取 SSRS 伺服器陣列選項,請導覽至管理中心,然後查看 [一般應用程式設定] 區段中的 [Reporting Services]。

授與 Web 應用程式內容資料庫的 Reporting Services 服務帳戶權限

在 SharePoint 整合模式下設定 SQL Server Reporting Services 有一個必要步驟,就是允許 Reporting Services 服務帳戶存取管理報表之 Web 應用程式的內容資料庫。在此範例中,我們授與 Reporting Services 帳戶的權限,是可透過 Windows PowerShell 來存取「入口網站」Web 應用程式的內容資料庫。

從 SharePoint 2010 管理命令介面執行下列命令:

$w = Get-SPWebApplication -Identity http://portal

$w.GrantAccessToProcessIdentity("vmlab\svcSQLRS")

設定 Reporting Services 整合

在 [Reporting Service 整合] 對話方塊中,指定報表伺服器的負載平衡 URL。另外,也請選取 [啟動所有結束集合中的功能] 選項,以自動啟動網站集合中的 Reporting Services 功能。

將每部報表伺服器新增至整合

在 [加入報表伺服器至整合] 對話方塊中,指定 Reporting Services NLB 群組的每個節點。您必須針對您要新增至整合的每部伺服器開啟這個對話方塊;沒辦法以單一作業來新增多部伺服器。

設定伺服器預設值

這時候應該要設定 SSRS 整合。若要驗證設定,請開啟 [伺服器預設值] 頁面。本文件中的範例不需要任何變更。

確認設定

建立報表的文件庫

建立文件庫來管理 SharePoint 網站中的 SSRS 報表。在此範例中,我們假設 http://portal/reports 中存有一個名為 "reports" 的文件庫。

驗證 Reporting Services 的網站集合設定

在瀏覽器中,導覽至管理 SSRS 報表文件庫之網站的 [網站設定]。在 [網站設定] 中,您應該會看到名為 [Reporting Services] 的新類別。

如果您在網站集合功能清單中沒有看到 Reporting Services 功能,可能就需要從管理中心來將它啟動。如需詳細資訊,請參閱如何在 SharePoint 管理中心中啟動 Report Server 功能 (https://go.microsoft.com/fwlink/?linkid=196878&clcid=0x404)。

按一下 Reporting Services 網站設定連結,以確定可存取設定。

注意

就此示範而言,不需要變更 Reporting Services 網站設定。

在 SQL Server Business Intelligence Development Studio 中建立及發佈測試報表

設定 SSRS 以及與 SharePoint Server 的整合之後,您要建立測試報表,以確定身分識別委派運作正常。

  1. 開啟 SQL Server Business Intelligence Development Studio。按一下 [檔案],指向 [新增],然後按一下 [專案]。

  2. 選取 [報表伺服器專案精靈],並輸入專案名稱。

  3. 接著,設定新資料來源。選擇 [Microsoft SQL Server] 類型,再按一下 [編輯] 按鈕。

  4. 在 [連線屬性] 中輸入資訊,以連線至在案例 2 中建立的示範 SQL Server 叢集。

  5. 開啟查詢設計工具,用滑鼠右鍵按一下查詢視窗,並選取 [新增表格]。

  6. 選擇 [銷售] 表格 (在案例 2 中建立),並選取 [所有欄]。

  7. 選取表格式報表類型。

  8. 在我們的範例中,我們是依地區分組;您可視需要跳過此步驟。

  9. 建立專案之後,在 [專案] 功能表上開啟專案屬性。

  10. 設定下列專案屬性:

    1. TargetDatasetFolder — 設為先前建立的測試報表資料夾

    2. TargetReportFolder — 設為先前建立的測試報表資料夾

    3. TargetReportPartFolder — 設為先前建立的測試報表資料夾

    4. TargetServerURL — 設為管理報表的 Web 應用程式 URL

  11. 將報表部署至 SharePoint 文件庫。在建立功能表上,選取 [部署 <專案名稱>]。

  12. 如果成功,您會在 [輸出] 視窗中看到部署成功訊息。

在 Internet Explorer 中檢視測試報表

在瀏覽器中開啟此案例先前步驟所建立的報表文件庫。您應該會看到您剛才發佈的報表檔。如果沒有看到該報表,您可能需要在網站集合中啟動 Reporting Services 功能。如需詳細資訊,請參閱如何在 SharePoint 管理中心中啟動 Report Server 功能 (https://go.microsoft.com/fwlink/?linkid=196878&clcid=0x404)。

按一下該報表,它會轉譯在瀏覽器中。

若要進一步確認委派及資料連線,請變更 SQL Server Management Studio 中的來源資料,並且在瀏覽器中重新整理 SSRS 報表資料連線。您應該會看到資料變更反映在報表中。

Reporting Services 的 SSL 設定

在某些環境中,可能會需要以 SSL 來保護前端 Web 與 SSRS 伺服器之間的通訊。本文件並沒有包含為 Reporting Services 設定 SSL 的詳細逐步解說,但是就高層級而言,您必須採取下列步驟:

  1. 設定 SSL 的每部報表伺服器。請參閱設定安全通訊端層 (SSL) 連線的報表伺服器 (https://go.microsoft.com/fwlink/?linkid=196881&clcid=0x404)。

  2. 更新 ReportingServer.config。將 <UrlRoot> 變更為新的 https:// URL。

  3. 重新啟動 SQL Server Reporting Services 服務。

  4. 在管理中心中,變更 Reporting Services 整合設定,並將報表伺服器 Web 服務 URL 變更為新的 https:// URL。

  5. 在執行 Web 應用程式服務的每個 SharePoint Server 執行個體上,重新啟動 IIS。

您不需要變更在先前步驟中,以 HTTP 來設定 Reporting Services 時,所建立的任何 SPN。使用 SSL 之 HTTP 服務的 SPN 仍是 HTTP/<服務>。使用 NetMon 來檢視與 Reporting Services 伺服器通訊的前端網頁伺服器,就會看到此 SPN。