設定 Kerberos 以使用 Power BI 報表

瞭解如何將報表伺服器設定為 Kerberos 驗證,以對分散式環境之 Power BI 報表中使用的數據源進行驗證。

注意

這段影片可能會使用舊版的 Power BI 報表伺服器。

Power BI 報表伺服器 包含裝載Power BI報表的能力。 報表伺服器支援許多數據源。 雖然本文特別著重於 SQL Server Analysis Services,但您可以使用概念,並將其套用至其他數據源,例如 SQL Server。

您可以在單一計算機上安裝 Power BI 報表伺服器、SQL Server 和 Analysis Services,而且所有專案都應該可以運作,而不需要額外的設定。 這非常適合測試環境。 如果您在稱為分散式環境的個別計算機上安裝這些服務,可能會發生錯誤。 在此環境中,您必須使用 Kerberos 驗證。 需要設定才能實作此設定。

具體而言,您必須設定限制委派。 您可能已在環境中設定 Kerberos,但可能未針對限制委派進行設定。

執行報表時發生錯誤

如果報表伺服器未正確設定,您可能會收到下列錯誤。

Something went wrong.

We couldn't run the report because we couldn't connect to its data source. The report or data source might not be configured correctly. 

在 [技術詳細數據] 中,您會看到下列訊息。

We couldn't connect to the Analysis Services server. The server forcibly closed the connection. To connect as the user viewing the report, your organization must have configured Kerberos constrained delegation.

Screenshot of Power B I Reports showing error message related to issues connecting with Analysis Services server.

設定 Kerberos 限制委派

必須設定數個專案,Kerberos 限制委派才能運作。 這包括服務帳戶上的服務主體名稱 (SPN) 和委派設定。

注意

若要設定 SPN 和委派設定,您必須是網域系統管理員。

我們需要設定或驗證下列專案。

  1. 報表伺服器組態內的驗證類型。
  2. 報表伺服器服務帳戶的SPN。
  3. Analysis Services 服務的 SPN。
  4. Analysis Services 機器上 SQL Browser 服務的 SPN。 這僅適用於具名實例。
  5. 報表伺服器服務帳戶上的委派設定。

報表伺服器組態內的驗證類型

我們需要設定報表伺服器的驗證類型,以允許 Kerberos 限制委派。 這會在 rsreportserver.config 檔案內完成。 這個檔案的預設位置是 C:\Program Files\Microsoft Power BI Report Server\PBIRS\ReportServer

在 rsreportserver.config 檔案中,您會想要對 Authentication/AuthenticationTypes 區段進行微調

我們想要確定已列出 RSWindowsNegotiate,以及驗證類型清單中的第一個。 其看起來應會如下。

<AuthenticationTypes>
    <RSWindowsNegotiate/>
    <RSWindowsNTLM/>
</AuthenticationTypes>

如果您必須變更組態檔,您會想要停止並啟動報表伺服器,以確保變更生效。

如需詳細資訊,請參閱 Configure Windows Authentication on the Report Server (在報表伺服器上設定 Windows 驗證)。

報表伺服器服務帳戶的SPN

接下來,我們需要確定報表伺服器有有效的SPN可用。 這是以針對報表伺服器設定的服務帳戶為基礎。

虛擬服務帳戶或網路服務

如果您的報表伺服器已針對虛擬服務帳戶或網路服務帳戶進行設定,就不應該執行任何動作。 這些位於電腦帳戶的內容中。 計算機帳戶預設會有主機 SPN。 這些會涵蓋 HTTP 服務,而且將由報表伺服器使用。

如果您使用的虛擬伺服器名稱與計算機帳戶不同,則 HOST 專案不會涵蓋您,而且您必須手動新增虛擬伺服器主機名的 SPN。

網域使用者帳戶

如果您的報表伺服器設定為使用網域用戶帳戶,您必須在該帳戶上手動建立 HTTP SPN。 這可以使用 Windows 隨附的 setspn 工具來完成。

注意

您需要網域系統管理員許可權,才能建立SPN。

建議建立兩個SPN。 一個具有 NetBIOS 名稱,另一個則具有完整功能變數名稱 (FQDN)。 SPN 的格式如下。

<Service>/<Host>:<port>

Power BI 報表伺服器 會使用 HTTP 的服務。 針對 HTTP SPN,您不會列出埠。 我們在此感興趣的服務是 HTTP。 SPN 的主機將會是您在 URL 中使用的名稱。 一般而言,這是計算機名稱。 如果您是負載平衡器後方,這可能是虛擬名稱。

注意

您可以查看您在瀏覽器網址列中輸入的內容,或查看 [入口網站 URL] 索引卷標上的 [報表伺服器組態管理員] 來驗證 URL。

如果您的電腦名稱是 ContosoRS,您的 SPN 會是下列專案。

SPN 類型 SPN
完整網域名稱 (FQDN) HTTP/ContosoRS.contoso.com
NetBIOS HTTP/ContosoRS

SPN 的位置

那麼,您要在哪裡放置SPN? SPN 將會放在您用於服務帳戶的任何專案上。 如果您使用虛擬服務帳戶或網路服務,這會是計算機帳戶。 雖然我們之前提到,您只需要針對虛擬 URL 執行此動作。 如果您使用報表伺服器服務帳戶的網域使用者,則會在該網域用戶帳戶上放置SPN。

例如,如果我們使用網路服務帳戶,而計算機名稱是 ContosoRS,我們會將 SPN 放在 ContosoRS 上。

如果我們使用 RSService 的網域用戶帳戶,我們會將 SPN 放在 RSService 上。

使用 SetSPN 新增 SPN

我們可以使用 SetSPN 工具來新增 SPN。 我們將遵循與上述相同的範例,並搭配電腦帳戶和網域用戶帳戶。

如果使用的是 contosoreports 的虛擬 URL,請將 SPN 放在電腦帳戶上,FQDN 和 NetBIOS SPN 看起來會如下所示。

Setspn -a HTTP/contosoreports.contoso.com ContosoRS
Setspn -a HTTP/contosoreports ContosoRS

如果您針對SPN主機使用計算機名稱,請將SPN放在網域用戶帳戶上,FQDN和 NetBIOS SPN 看起來會如下所示。

Setspn -S HTTP/ContosoRS.contoso.com RSService
Setspn -S HTTP/ContosoRS RSService

Analysis Services 服務的 SPN

Analysis Services 的 SPN 類似於我們對 Power BI 報表伺服器 所做的作業。 如果您有具名實例,SPN 的格式會稍有不同。

針對 Analysis Services,我們使用 MSOLAPSvc.3 的服務。 我們將指定SPN上埠位置的實例名稱。 SPN 的主機部分會是計算機名稱或叢集虛擬名稱。

Analysis Services SPN 的范例如下所示。

類型 格式
預設執行個體 MSOLAPSvc.3/ContosoAS.contoso.com
MSOLAPSvc.3/ContosoAS
具名執行個體 MSOLAPSvc.3/ContosoAS.contoso.com:INSTANCENAME
MSOLAPSvc.3/ContosoAS:INSTANCENAME

SPN 的位置也類似於使用 Power BI 報表伺服器 所提及的內容。 它是以服務帳戶為基礎。 如果您使用本機系統或網路服務,您將位於電腦帳戶的內容中。 如果您使用 Analysis Services 實例的網域用戶帳戶,您會將 SPN 放在網域用戶帳戶上。

使用 SetSPN 新增 SPN

我們可以使用 SetSPN 工具來新增 SPN。 在此範例中,計算機名稱會是 ContosoAS。

將SPN放在電腦帳戶中,FQDN和 NetBIOS SPN 看起來會如下所示。

Setspn -S MSOLAPSvc.3/ContosoAS.contoso.com ContosoAS
Setspn -S MSOLAPSvc.3/ContosoAS ContosoAS

針對 FQDN 和 NetBIOS SPN 將 SPN 放在網域用戶帳戶上,看起來會如下所示。

Setspn -S MSOLAPSvc.3/ContosoAS.contoso.com OLAPService
Setspn -S MSOLAPSvc.3/ContosoAS OLAPService

SQL Browser 服務的 SPN

如果您有 Analysis Services 具名實例,您也必須確定您有瀏覽器服務的 SPN。 這是 Analysis Services 特有的。

SQL Browser 的 SPN 類似於我們對 Power BI 報表伺服器 所做的作業。

針對 SQL Browser,我們使用 MSOLAPDisco.3 的服務。 我們將指定SPN上埠位置的實例名稱。 SPN 的主機部分會是計算機名稱或叢集虛擬名稱。 您不需要為實例名稱或埠指定任何專案。

Analysis Services SPN 的范例如下所示。

MSOLAPDisco.3/ContosoAS.contoso.com
MSOLAPDisco.3/ContosoAS

SPN 的位置也類似於使用 Power BI 報表伺服器 所提及的內容。 此處的差異在於 SQL Browser 一律會在本機系統帳戶下執行。 這表示SPN一律會進入電腦帳戶。

使用 SetSPN 新增 SPN

我們可以使用 SetSPN 工具來新增 SPN。 在此範例中,計算機名稱會是 ContosoAS。

針對 FQDN 和 NetBIOS SPN,將 SPN 放在機器帳戶上,看起來會如下所示。

Setspn -S MSOLAPDisco.3/ContosoAS.contoso.com ContosoAS
Setspn -S MSOLAPDisco.3/ContosoAS ContosoAS

如需詳細資訊,請參閱 需要 SQL Server Browser 服務的 SPN。

報表伺服器服務帳戶上的委派設定

我們必須設定的最後一個部分是報表伺服器服務帳戶上的委派設定。 您可以使用不同的工具來執行這些步驟。 為了本檔的目的,我們將堅持 Active Directory 使用者和電腦。

您必須從移至報表伺服器服務帳戶的屬性開始,Active Directory 使用者和電腦。 如果您使用虛擬服務帳戶或網路服務,這可以是計算機帳戶,或是網域用戶帳戶。

我們想要使用通訊協定傳輸來設定限制委派。 使用限制委派時,您必須明確委派給哪些服務。 我們將移至 Analysis Services 服務 SPN 和 SQL Browser SPN,並將其新增至 Power BI 報表伺服器 可以委派至的清單。

  1. 以滑鼠右鍵按下報表伺服器服務帳戶,然後選取 [ 屬性]。

  2. 選取 [委派] 索引標籤。

  3. 選取 [信任這部計算機只委派至指定的服務]。

  4. 選取 [ 使用任何驗證通訊協定]。

  5. 此帳戶可以呈現委派認證的 [服務]底下:選取 [ 新增]。

  6. 在新的對話框中,選取 [ 用戶或計算機]。

  7. 輸入 Analysis Services 服務的服務帳戶,然後選取 [ 確定]。

  8. 選取您建立的SPN。 其開頭 MSOLAPSvc.3為 。 如果您同時新增 FQDN 和 NetBIOS SPN,則會選取這兩者。 您只能看到一個。

  9. 選取 [確定]。 您現在應該會在清單中看到 SPN。

  10. 您可以選擇性地選取 [展開 ] 以顯示清單中的 FQDN 和 NetBIOS SPN。

  11. 再次選取 [ 新增 ]。 我們現在會新增 SQL Browser SPN。

  12. 在新的對話框中,選取 [ 用戶或計算機]。

  13. 輸入 SQL Browser 服務開啟的電腦電腦名稱,然後選取 [ 確定]。

  14. 選取您建立的SPN。 其開頭 MSOLAPDisco.3為 。 如果您同時新增 FQDN 和 NetBIOS SPN,則會選取這兩者。 您只能看到一個。

  15. 選取 [確定]。 如果您核取 [ 展開] ,對話框看起來應該如下所示。

    Screenshot of Power B I Reports showing Delegation tab of Properties window.

  16. 選取 [確定]

  17. 重新啟動 Power BI 報表伺服器。

執行 Power BI 報表

上述所有組態都就緒之後,您的報表應該會正確顯示。

Screenshot of Power B I Reports showing sample Dashboard view.

雖然此設定在大部分情況下應該運作,但使用 Kerberos 時,視您的環境而定,可能會有不同的設定。 如果報表仍然無法載入,您會想要連絡網域系統管理員,以進一步調查或連絡支持人員。

更多問題嗎? 嘗試在 Power BI 社群提問