設定從 Power BI 服務到內部部署資料來源的 Kerberos 架構 SSO
啟用 SSO 可讓 Power BI 報表和儀表板輕鬆重新整理來自內部部署來源的資料,同時遵守在這些來源上設定的使用者層級權限。 使用 Kerberos 限制委派來啟用無縫 SSO 連線。
本文描述從 Power BI 服務對內部部署資料來源設定 Kerberos 型 SSO 所需的步驟。
必要條件
必須設定數個項目,Kerberos 限制委派才能正常運作,包括服務帳戶上的 *服務主體名稱 (SPN) 和委派設定。
注意
不支援使用 DNS 別名搭配 SSO。
設定概述
以下概述設定閘道單一登入所需的步驟。
完成第 1 節:基本設定中的所有步驟。
根據您的 Active Directory 環境和所使用的資料來源,您可能需要完成第 2 節:環境特定設定中所述的部分或所有設定。
可能需要額外設定的可能案例如下所列:
案例 移至 您的 Active Directory 環境已強化安全性。 將閘道服務帳戶新增至 Windows 授權和存取群組 閘道服務帳戶和閘道將模擬的使用者帳戶位於不同的網域或樹系中。 將閘道服務帳戶新增至 Windows 授權和存取群組 您沒有已設定使用者帳戶同步處理的 Microsoft Entra Connect,且 Power BI 中使用的使用者 UPN 與本機 Active Directory 環境中的 UPN 不符。 在閘道電腦上設定使用者對應設定參數 您計劃使用 SAP HANA 資料來源搭配 SSO。 完成資料來源特定的設定步驟 您計劃使用 SAP BW 資料來源搭配 SSO。 完成資料來源特定的設定步驟 您計劃使用 Teradata 資料來源搭配 SSO。 完成資料來源特定的設定步驟 如第 3 節:驗證設定所述,驗證您的設定以確保 SSO 已正確設定。
第 1 節:基本設定
步驟 1:安裝及設定 Microsoft 內部部署資料閘道
內部部署資料閘道支援就地升級,以及對現有閘道的「設定接管」功能。
步驟 2:取得網域系統管理員權限以設定 SPN (SetSPN) 與 Kerberos 限制委派設定
若要設定 SPN 和 Kerberos 委派設定,則網域系統管理員應避免將權限授與沒有網域系統管理員權限的人員。 在下一節中,我們會更詳細地說明建議的設定步驟。
步驟 3:設定閘道服務帳戶
以下的選項 A 是必要設定,除非您已設定 Microsoft Entra Connect,且已同步使用者帳戶。 在該此情況下,建議使用選項 B。
選項 A:使用 SPN 以網域帳戶身分執行閘道 Windows 服務
在標準安裝中,閘道是以電腦本機服務帳戶 NT Service\PBIEgwService 執行。
若要啟用 Kerberos 限制委派,閘道必須以網域帳戶執行,除非 Microsoft Entra 已與本機 Active Directory 執行個體進行同步處理 (使用 Microsoft Entra DirSync/Connect)。 若要切換為網域帳戶,請參閱變更閘道服務帳戶。
設定閘道服務帳戶的 SPN
首先,判斷 SPN 是否已針對作為閘道服務帳戶使用的網域帳戶建立:
以網域系統管理員身分,啟動 [Active Directory 使用者和電腦] Microsoft Management Console (MMC) 嵌入式管理單元。
在左窗格中,以滑鼠右鍵按一下網域名稱、選取 [尋找],然後輸入閘道服務帳戶的帳戶名稱。
在搜尋結果中,以滑鼠右鍵按一下閘道服務帳戶,然後選取 [屬性]。
如果 [屬性] 對話方塊上顯示 [委派] 索引標籤,則表示 SPN 已建立,而您可以跳至設定 Kerberos 限制委派。
如果 [屬性] 對話方塊中沒有任何 [委派] 索引標籤,則可在帳戶上手動建立 SPN 來加以啟用。 使用隨附於 Windows 的 setspn 工具來完成 (您需要網域系統管理員權限才能建立 SPN)。
例如,假設閘道服務帳戶是 Contoso\GatewaySvc,且閘道服務執行於名為 MyGatewayMachine 的電腦上。 若要為閘道服務帳戶設定 SPN,請執行下列命令:
setspn -S gateway/MyGatewayMachine Contoso\GatewaySvc
也可以使用 [Active Directory 使用者和電腦] MMC 嵌入式管理單元來設定 SPN。
選項 B:設定 Microsoft Entra Connect 的電腦
若已設定 Microsoft Entra Connect,且已同步使用者帳戶,則閘道服務並不需要在執行階段執行本機 Microsoft Entra 查閱。 相反地,您可以直接使用本機服務 SID,讓閘道服務能完成 Microsoft Entra ID 中所有必要設定。 本文概述的 Kerberos 限制委派設定步驟,與 Microsoft Entra 內容中所需的設定步驟相同。 它們會套用至 Microsoft Entra ID 中的閘道電腦物件 (以本機服務 SID 識別),而不是網域帳戶。 NT SERVICE/PBIEgwService 的本機服務 SID 如下所示:
S-1-5-80-1835761534-3291552707-3889884660-1303793167-3990676079
若要針對 Power BI Gateway 電腦建立此 SID 的 SPN,您必須從系統管理命令提示字元執行下列命令 (將 <COMPUTERNAME>
取代為 Power BI Gateway 電腦的名稱):
SetSPN -s HTTP/S-1-5-80-1835761534-3291552707-3889884660-1303793167-3990676079 <COMPUTERNAME>
注意
視本機安全性設定而定,您可能需要將閘道服務帳戶 NT SERVICE\PBIEgwService 新增至閘道電腦上的本機 Administrators 群組,然後在閘道應用程式中重新啟動閘道服務。 對於有多個閘道的案例,不支援此選項,因為 Active Directory 會在整個樹系中強制執行唯一的 SPN。 針對這些案例,請改用選項 A。
步驟 4:設定 Kerberos 限制委派
您可以針對標準 Kerberos 限制委派或以資源為基礎的 Kerberos 限制委派來設定委派設定。 如需這兩個委派方法之間差異的詳細資訊,請參閱 Kerberos 限制委派概觀。
需要下列服務帳戶:
- 閘道服務帳戶:代表 Active Directory 中的閘道並在步驟 3 中設定 SPN 的服務使用者。
- 資料來源服務帳戶:代表 Active Directory 中 SPN 與資料來源對應的資料來源的服務使用者。
注意
閘道和資料來源服務帳戶必須分開。 不能使用相同服務帳戶來代表閘道和資料來源。
視您想要使用的方法而定,繼續進行下列其中一節。 請勿兩節都完成:
- 選項 A:標準 Kerberos 限制委派。 這是大部分環境的預設建議。
- 選項 B:以資源為基礎的 Kerberos 限制委派。 如果您的資料來源屬於與閘道不同的網域,則需要此項目。
選項 A:標準 Kerberos 限制委派
現在,我們將設定閘道服務帳戶的委派設定。 您可以使用多個工具來執行這些步驟。 在這裡,我們將使用 [Active Directory 使用者和電腦] MMC 嵌入式管理單元來管理及發佈目錄中的資訊。 預設會在網域控制站上提供,但在其他電腦上,也可以透過 [Windows 功能] 設定來加以啟用。
我們必須使用通訊協定轉換來設定 Kerberos 限制委派。 使用限制委派,您必須明確指出要允許閘道向其呈現委派認證的服務。 例如,只有 SQL Server 或您的 SAP HANA 伺服器會接受來自閘道服務帳戶的委派呼叫。
本節假設您已經為基礎資料來源 (例如,SQL Server、SAP HANA、SAP BW、Teradata 或 Spark) 設定 SPN。 若要了解如何設定這些資料來源伺服器 SPN,請參閱個別資料庫伺服器的技術文件,並參閱 My Kerberos Checklist (我的 Kerberos 檢查清單) 部落格文章的 What SPN does your app require? (應用程式需要什麼 SPN?) 一節。
在下列步驟中,我們假設內部部署環境具有位於相同網域的兩部電腦:閘道電腦和執行 SQL Server 且已針對 Kerberos 架構 SSO 設定的資料庫伺服器。 只要已針對 Kerberos 架構單一登入設定資料來源,就可以針對其中一個支援的其他資料來源採用這些步驟。 針對此範例,我們將使用下列設定:
- Active Directory 網域 (Netbios):Contoso
- 閘道電腦名稱:MyGatewayMachine
- 閘道服務帳戶:Contoso\GatewaySvc
- SQL Server 資料來源電腦名稱:TestSQLServer
- SQL Server 資料來源服務帳戶:Contoso\SQLService
以下是設定委派設定的方式:
使用網域系統管理員權限,開啟 [Active Directory 使用者及電腦] MMC 嵌入式管理單元。
以滑鼠右鍵按一下閘道服務帳戶 (Contoso\GatewaySvc),然後選取 [屬性]。
選取 [委派] 索引標籤。
選取 [Trust this computer for delegation to specified services only] \(信任這部電腦,但只委派指定的服務\)>[Use any authentication protocol] \(使用任何驗證通訊協定\)。
在 [Services to which this account can present delegated credentials] \(這個帳戶可以呈送委派認證的服務\) 下方,選取 [新增]。
在新的對話方塊中,選取 [使用者或電腦]。
輸入資料來源的服務帳戶,然後選取 [確定]。
例如,SQL Server 資料來源可以有類似 Contoso\SQLService 的服務帳戶。 此帳戶應該已經設定適當的資料來源 SPN。
選取您為資料庫伺服器建立的 SPN。
在我們的範例中,SPN 會以 MSSQLSvc 開頭。 如果您為資料庫服務新增了 FQDN 與 NetBIOS SPN,請同時選取兩者。 您可能只會看到一個。
選取 [確定]。
您現在應該會在閘道服務帳戶可以顯示委派認證的服務清單中看到 SPN。
若要繼續設定處理程序,請前往在閘道電腦上授與閘道服務帳戶本機原則權限。
選項 B:以資源為基礎的 Kerberos 限制委派
使用以資源為基礎的 Kerberos 限制委派來針對 Windows Server 2012 和更新版本提供單一登入連線能力。 此類型的委派允許前端和後端服務位於不同網域中。 若要達成此目的,後端服務網域必須信任前端服務網域。
在下列步驟中,我們假設內部部署環境具有位於不同網域的兩部電腦:閘道電腦和執行 SQL Server 且已針對 Kerberos 架構 SSO 設定的資料庫伺服器。 只要已針對 Kerberos 架構單一登入設定資料來源,就可以針對其中一個支援的其他資料來源採用這些步驟。 針對此範例,我們將使用下列設定:
- Active Directory 前端網域 (Netbios):ContosoFrontEnd
- Active Directory 後端網域 (Netbios):ContosoBackEnd
- 閘道電腦名稱:MyGatewayMachine
- 閘道服務帳戶:ContosoFrontEnd\GatewaySvc
- SQL Server 資料來源電腦名稱:TestSQLServer
- SQL Server 資料來源服務帳戶:ContosoBackEnd\SQLService
完成下列設定步驟:
在 ContosoFrontEnd 網域的網域控制站上,使用 [Active Directory 使用者和電腦] MMC 嵌入式管理單元,並驗證沒有對閘道服務帳戶套用任何委派設定。
在 ContosoBackEnd 網域的網域控制站上,使用 [Active Directory 使用者和電腦],並驗證沒有對後端服務帳戶套用任何委派設定。
在帳戶屬性的 [屬性編輯器] 索引標籤中,驗證未設定 mdDS-AllowedToActOnBehalfOfOtherIdentity 屬性。
在 [Active Directory 使用者和電腦] 中,於 ContosoBackEnd 網域的網域控制站上建立群組。 將 GatewaySvc 閘道服務帳戶新增至 ResourceDelGroup 群組。
若要從受信任的網域新增使用者,此群組必須具有網域本機的範圍。
開啟命令提示字元,並在 ContosoBackEnd 網域的網域控制站中執行下列命令,以更新後端服務帳戶的 msDS-AllowedToActOnBehalfOfOtherIdentity 屬性:
$c = Get-ADGroup ResourceDelGroup Set-ADUser SQLService -PrincipalsAllowedToDelegateToAccount $c
在 [Active Directory 使用者和電腦] 中,驗證更新已反映在後端服務帳戶屬性的 [屬性編輯器] 索引標籤中。
步驟 5:在服務帳戶上啟用 AES 加密
將下列設定套用至閘道服務帳戶,以及可以委派閘道每個資料來源服務帳戶:
注意
如果服務帳戶上已定義現有的 enctype,請洽詢您的 Active Directory 系統管理員,因為遵循下列步驟將會覆寫現有的 enctypes 值,並可能會中斷用戶端。
使用網域系統管理員權限,開啟 [Active Directory 使用者和電腦] MMC 嵌入式管理單元。
以滑鼠右鍵按一下閘道/資料來源服務帳戶,然後選取 [屬性]。
選取 [帳戶] 索引標籤。
在 [帳戶選項] 底下,至少啟用下列選項之一 (或兩者)。 請注意,必須為所有服務帳戶啟用相同的選項。
- 此帳戶支援 Kerberos AES 128 位元加密
- 此帳戶支援 Kerberos AES 256 位元加密
注意
如果您不確定要使用的加密配置,請洽詢您的 Active Directory 系統管理員。
步驟 6:在閘道電腦上授與閘道服務帳戶本機原則權限
最後,在執行閘道服務的電腦上 (在我們的範例中是 MyGatewayMachine),將本機原則 [在驗證後模擬用戶端] 和 [當成作業系統的一部分 (SeTcbPrivilege)] 授與閘道服務帳戶。 使用本機群組原則編輯器 (gpedit.msc) 來執行此設定。
在閘道電腦上,執行 gpedit.msc。
前往 [本機電腦原則]>[電腦設定]>[Windows 設定]>[安全性設定]>[本機原則]>[使用者權限指派],如下圖所示。
從 [使用者權限指派] 底下的原則清單中,選取 [Impersonate a client after authentication] \(在驗證後模擬用戶端\)。
以滑鼠右鍵按一下原則,開啟 [屬性],然後檢視帳戶清單。
清單必須包含閘道服務帳戶 (Contoso\GatewaySvc 或 ContosoFrontEnd\GatewaySvc,視限制委派的類型而定)。
在 [使用者權限指派] 底下,從原則清單中,選取 [當成作業系統的一部分 (SeTcbPrivilege)]。 請確定閘道服務帳戶包含在帳戶清單中。
重新啟動內部部署資料閘道服務處理程序。
步驟 7:Windows 帳戶可以存取閘道電腦
SSO 使用 Windows 驗證,因此請確定 Windows 帳戶可以存取閘道電腦。 如果不確定,請將 NT-AUTHORITY\Authenticated Users (S-1-5-11) 新增至本機電腦的 [使用者] 群組。
第 2 節:環境特定設定
將閘道服務帳戶新增至 Windows 授權和存取群組
如果適用下列任何情況,請完成本節:
- 您的 Active Directory 環境已強化安全性。
- 當閘道服務帳戶和閘道將模擬的使用者帳戶位於不同的網域或樹系中。
在未強化網域 /樹系的情況下,您也可以將閘道服務帳戶新增至 Windows 授權和存取群組,但這不是必要的。
如需詳細資訊,請參閱 Windows 授權和存取群組。
若要完成此設定步驟,請針對每個網域 (包含您要讓閘道服務帳戶能夠模擬的 Active Directory 使用者),執行下列步驟:
- 登入網域中的電腦,然後啟動 [Active Directory 使用者及電腦] MMC 嵌入式管理單元。
- 找出 [Windows 授權和存取群組] 群組,通常是在 [內建] 容器中。
- 按兩下該群組,然後按一下 [成員] 索引標籤。
- 按一下 [新增],然後將網域位置變更為閘道服務帳戶所在的網域。
- 輸入閘道服務帳戶名稱,然後按一下 [檢查名稱],以確認閘道服務帳戶可供存取。
- 按一下 [確定]。
- 按一下 套用。
- 重新啟動閘道服務。
在閘道電腦上設定使用者對應設定參數
如果符合下列情況,請完成本節:
- 您尚未設定 Microsoft Entra Connect 與使用者帳戶同步處理且
- Power BI 中使用者使用的 UPN 與本機 Active Directory 環境中的 UPN 不符。
以這種方式對應的每個 Active Directory 使用者,都必須具有資料來源的 SSO 權限。
開啟主要閘道設定檔
Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll
。 依預設,此檔案會儲存在C:\Program Files\On-premises data gateway
。將 ADUserNameLookupProperty 設定為未使用的 Active Directory 屬性。 我們將在接下來的步驟中使用
msDS-cloudExtensionAttribute1
。 這個屬性僅適用於 Windows Server 2012 和更新版本。將 ADUserNameReplacementProperty 設定為
SAMAccountName
,然後儲存設定檔。注意
在多網域案例中,您可能需要將 ADUserNameReplacementProperty 設定 為
userPrincipalName
,以保留使用者的網域資訊。從 [工作管理員] 的 [服務] 索引標籤中,以滑鼠右鍵按一下該閘道服務,然後選取 [重新啟動]。
針對您想要為其啟用 Kerberos SSO 的每個 Power BI 服務使用者,將本機 Active Directory 使用者 (具有資料來源 SSO 權限) 的
msDS-cloudExtensionAttribute1
屬性設定為 Power BI 服務使用者完整使用者名稱 (UPN)。 例如,若您以 test@contoso.com 的身分登入 Power BI 服務,且想要將此使用者對應至具有 SSO 權限的本機 Active Directory 使用者 (例如 test@LOCALDOMAIN.COM),請將這個使用者的msDS-cloudExtensionAttribute1
屬性設定為 test@contoso.com。您可以使用 [Active Directory 使用者和電腦] MMC 嵌入式管理單元來設定
msDS-cloudExtensionAttribute1
屬性:以網域系統管理員身分啟動 Active Directory 使用者和電腦。
以滑鼠右鍵按一下網域名稱、選取 [尋找],然後輸入要對應的本機 Active Directory 使用者帳戶名稱。
選取 [屬性編輯器] 索引標籤。
找出
msDS-cloudExtensionAttribute1
屬性,然後按兩下該屬性。 將值設定為用來登入 Power BI 服務的使用者完整使用者名稱 (UPN)。選取 [確定]。
選取套用。 確認已在 [值] 資料行中設定正確的值。
完成資料來源特定的設定步驟
針對 SAP HANA、SAP BW 和 Teradata 資料來源,需要額外的設定才能搭配閘道 SSO 使用:
- 將 Kerberos 用於單一登入 (SSO) 至 SAP HANA。
- 使用 CommonCryptoLib (sapcrypto.dll) 將 Kerberos 單一登入用於 SSO 至 SAP BW。
- 將 Kerberos 用於單一登入 (SSO) 至 Teradata。
注意
雖然其他 SNC 程式庫也可能適用於 BW SSO,但 Microsoft 並未正式支援這些程式庫。
第 3 節:驗證設定
步驟 1:在 Power BI 中設定資料來源
完成所有設定步驟之後,請在 Power BI 中使用 [管理閘道] 頁面來設定您將用於 SSO 的資料來源。 如果您有多個閘道,請務必選取為 Kerberos SSO 設定的閘道。 然後,在資料來源的 [設定] 中,確認已為以 DirectQuery 為基礎的報表選取 [透過 Kerberos 使用 SSO 進行 DirectQuery 查詢] 或 [透過 Kerberos 使用 SSO 進行 DirectQuery 和匯入查詢];且已為以重新整理為基礎的報表設定 [透過 Kerberos 使用 SSO 進行 DirectQuery 和匯入查詢]。
[透過 Kerberos 使用 SSO 進行 DirectQuery 查詢] 和 [透過 Kerberos 使用 SSO 進行 DirectQuery 和匯入查詢] 設定會針對 DirectQuery 型報表和匯入型報表提供不同的行為。
透過 Kerberos 使用 SSO 進行 DirectQuery 查詢:
- 針對 DirectQuery 型報表,會使用使用者的 SSO 認證。
- 針對匯入型報表,不會使用 SSO 認證,但會使用在資料來源頁面中輸入的認證。
透過 Kerberos 使用 SSO 進行 DirectQuery 和匯入查詢:
- 針對 DirectQuery 型報表,會使用使用者的 SSO 認證。
- 針對匯入型報表,不論觸發匯入的使用者為何,都會使用語意模型擁有者的 SSO 認證。
步驟 2:測試單一登入
移至 [測試單一登入 (SSO) 設定],以快速驗證您的設定是否正確設定,並針對常見問題進行疑難排解。
步驟 3:執行 Power BI 報表
在發佈時,如果您有多個閘道,請選取為 SSO 設定的閘道。
相關內容
如需內部部署資料閘道和 DirectQuery 的詳細資訊,請參閱下列資源: