將 Kerberos 用於 SAP HANA 的 SSO
本文描述如何設定您的 SAP HANA 資料來源,以從 Power BI 服務啟用單一登入 (SSO)。
重要
由於 SAP 已不再支援 OpenSSL,因此 Microsoft 也已中止其支援。 您現有的連線可繼續運作,但您無法再建立新的連線。 請改用 SAP 密碼編譯程式庫 (CommonCryptoLib) 或 sapcrypto。
注意
在您嘗試重新整理使用 Kerberos SSO 的 SAP HANA 型報表之前,請先完成本文和設定 Kerberos SSO (部分機器翻譯) 中的步驟。
啟用 SAP HANA 的 SSO
若要啟用 SAP HANA 的 SSO,請遵循下列步驟:
請確定 SAP HANA 伺服器執行的是所需最低版本,這取決於 SAP HANA 伺服器的平台層級:
在閘道電腦上安裝最新的 SAP HANA ODBC 驅動程式。 最低版本為 2017 年 8 月的 HANA ODBC 2.00.020.00 版。
請確定已針對 Kerberos 架構 SSO 設定 SAP HANA 伺服器。 如需使用 Kerberos 為 SAP HANA 設定 SSO 的詳細資訊,請參閱使用 Kerberos 設定單一登入 (英文)。 另請參閱該頁面中的連結,尤其是 SAP Note 1837331 – 如何使用 HANA DBSSO Kerberos/Active Directory。
我們也建議您遵循這些可稍微提升效能的額外步驟:
在閘道安裝目錄中尋找並開啟此設定檔:Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config。
尋找
FullDomainResolutionEnabled
屬性,並將其值變更為True
。<setting name=" FullDomainResolutionEnabled " serializeAs="String"> <value>True</value> </setting>
疑難排解
本節提供針對在 Power BI 服務中使用 Kerberos 進行 SAP HANA 的單一登入 (SSO) 的疑難排解指示。 藉由使用這些疑難排解步驟,您可以自我診斷並修正許多可能遇到的問題。
若要遵循本節中的步驟,您必須收集閘道記錄。
TLS/SSL 錯誤 (憑證)
此問題有多個徵兆。
當您嘗試新增資料來源時,您可能會看到類似下列訊息的錯誤:
Unable to connect: We encountered an error while trying to connect to. Details: "We could not register this data source for any gateway instances within this cluster. Please find more details below about specific errors for each gateway instance."
當您嘗試建立或重新整理報表時,您可能會看到下列錯誤訊息:
當您調查 Mashup[date]*.log 時,您會看到下列錯誤訊息:
A connection was successfully established with the server, but then an error occurred during the login process and the certificate chain was issued by an authority that is not trusted.
解決方法
若要解決此 TLS/SSL 錯誤,請移至資料來源連線,然後在 [驗證伺服器憑證] 區段中停用該設定,如下圖所示:
停用此設定之後,便不會再顯示錯誤訊息。
模擬
模擬的記錄項目包含類似以下的項目:
About to impersonate user DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation).
此記錄項目中的重要元素是 ImpersonationLevel:
項目之後顯示的資訊。 與 Impersonation
不同的任何值都顯示模擬未正確發生。
解決方法
您可以遵循在閘道上授予閘道服務帳戶本機原則權限 (部分機器翻譯) 中的指示,正確地設定 ImpersonationLevel
。
在變更設定檔後,請重新啟動閘道服務,以讓變更生效。
驗證
重新整理或建立報表,然後收集閘道記錄。 開啟最新的 GatewayInfo 檔案,並檢查下列字串: About to impersonate user DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation)
。 請確定 ImpersonationLevel
設定會傳回 Impersonation
。
委派
委派問題通常會在 Power BI 服務中顯示為一般錯誤。 若要確定問題不是委派問題,請收集 Wireshark 追蹤,並使用 Kerberos 作為篩選條件。 若要深入了解 Wireshark 和 Kerberos 錯誤的相關訊息,請參閱網路擷取中的 Kerberos 錯誤 (英文)。
下列徵兆和疑難排解步驟可協助補救一些常見問題。
SPN 問題
若您在調查 Mashup[date]*.log 時看到下列錯誤:The import [table] matches no exports. Did you miss a module reference?:
,代表您遇到服務主體名稱 (SPN) 問題。
當您使用 Wireshark 追蹤進一步調查時,會顯示錯誤 KRB4KDC_ERR_S_PRINCIPAL_UNKOWN
,這表示 SPN 找不到或不存在。 請見下圖呈現的範例:
解決方法
若要解決此類 SPN 問題,您必須將 SPN 新增至服務帳戶。 如需詳細資訊,請參閱為 SAP HANA 資料庫主機設定 Kerberos中的 SAP 文件 (英文)。
此外,請遵循下一節所述解決方法的指示。
「無認證」問題
此問題可能沒有明確的徵兆。 當您調查 Mashup[date]*.log 時,您會看到下列錯誤:
29T20:21:34.6679184Z","Action":"RemoteDocumentEvaluator/RemoteEvaluation/HandleException","HostProcessId":"1396","identity":"DirectQueryPool","Exception":"Exception:\r\nExceptionType: Microsoft.Mashup.Engine1.Runtime.ValueException, Microsoft.MashupEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\r\nMessage:
當您進一步調查相同的檔案時,會出現下列 (無用的) 錯誤:
No credentials are available in the security package
擷取 Wireshark 追蹤會顯示下列錯誤:KRB5KDC_ERR_BADOPTION
。
通常,這些錯誤表示可以找到 SPN hdb/hana2-s4-sso2.westus2.cloudapp.azure.com 檔案,但不是在閘道服務帳戶中 [委派] 窗格上的 [此帳戶可呈現委派認證的服務] 清單中。
解決方法
若要解決「無認證」問題,請遵循設定 Kerberos 限制委派 (部分機器翻譯) 中所述的步驟。 正確完成後,閘道服務帳戶的 [委派] 索引標籤會在 [此帳戶可呈現委派認證的服務] 清單中反映 HansaWorld Database (HDB) 檔案和完整網域名稱 (FQDN)。
驗證
遵循上述步驟應能解決問題。 若您仍然遇到 Kerberos 問題,可能是 Power BI 閘道或 HANA 伺服器本身存在設定錯誤。
認證錯誤
若您遇到認證錯誤,記錄或追蹤中的錯誤會將描述 Credentials are invalid
的錯誤或類似的錯誤公開。 這些錯誤在連線的資料來源端 (例如 SAP HANA) 的表現方式可能有所不同。 下圖顯示此類錯誤的範例:
徵兆 1
在 HANA 驗證追蹤中,您可能會看到類似下列訊息的項目:
[Authentication|manager.cpp:166] Kerberos: Using Service Principal
Name johnny@contoso.com@CONTOSO.COM with name type: GSS_KRB5_NT_PRINCIPAL_NAME
[Authentication|methodgssinitiator.cpp:367] Got principal name:
johnny@contoso.com@CONTOSO.COM
解決方法
請遵循在閘道電腦上設定使用者對應設定參數 (部分機器翻譯) 中所述的指示,即使您已經設定 Microsoft Entra Connect 服務也一樣。
驗證
完成驗證之後,您就可以在 Power BI 服務中成功載入報表。
徵兆 2
在 HANA 驗證追蹤中,您可能會看到類似下列項目:
Authentication ManagerAcceptor.cpp(00233) : Extending list of expected
external names by johnny@CONTOSO.COM (method: GSS) Authentication
AuthenticationInfo.cpp(00168) : ENTER getAuthenticationInfo
(externalName=johnny@CONTOSO.COM) Authentication AuthenticationInfo.cpp(00237) :
Found no user with expected external name!
解決方法
檢查 [HANA 使用者] 底下的 Kerberos 外部識別碼,以判斷識別碼是否相符。
驗證
解決問題之後,您可以在 Power BI 服務中建立或重新整理報表。
相關內容
如需內部部署資料閘道和 DirectQuery 的詳細資訊,請參閱下列資源: