Share via


使用 Kerberos 進行 SSO 至 SAP HANA

重要

因為 SAP 不再支援 OpenSSL,Microsoft 也已停止其支援。 您現有的聯機會繼續運作,但您無法再建立新的連線。 請改用 SAP 密碼編譯連結庫 (CommonCryptoLib), 或 sapcrypto。

本文說明如何設定 SAP HANA 數據源,以從 Power BI 服務 啟用單一登錄(SSO)。

注意

在您嘗試重新整理使用 Kerberos SSO 的 SAP HANA 型報表之前,請先完成本文中的步驟和 設定 Kerberos SSO

啟用 SAP HANA 的 SSO

若要啟用 SAP HANA 的 SSO,請執行下列步驟:

  1. 請確定 SAP HANA 伺服器執行所需的最低版本,視您的 SAP HANA 伺服器平台層級而定:

  2. 在閘道電腦上,安裝最新的 SAP HANA ODBC 驅動程式。 最低版本是從 2017 年 8 月起的 HANA ODBC 2.00.020.00 版。

  3. 確定 SAP HANA 伺服器已針對 Kerberos 型 SSO 進行設定。 如需使用 Kerberos 設定 SAP HANA SSO 的詳細資訊,請參閱 使用 Kerberos 單一登錄。 另請參閱該頁面的連結,特別是 SAP 附注1837331 – HOWTO HANA DBSSO Kerberos/Active Directory。

我們也建議您遵循這些額外步驟,這會產生較小的效能改善:

  1. 在閘道安裝目錄中,尋找並開啟此組態檔: Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config

  2. 尋找 FullDomainResolutionEnabled 屬性,並將其值變更為 True

    <setting name=" FullDomainResolutionEnabled " serializeAs="String">
          <value>True</value>
    </setting>
    
  3. 執行 Power BI 報表

疑難排解

本節提供在 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."
    
  • 當您嘗試建立或重新整理報表時,您可能會看到下列錯誤訊息:

    Screenshot of a 'Cannot load model' troubleshooting TLS/SSL error window.

  • 當您調查 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 錯誤,請移至數據源聯機, 然後在 [驗證伺服器證書] 區段中停用設定,如下圖所示:

 Screenshot of resolving TLS/SSL error window by disabling the certificate.

停用此設定之後,錯誤訊息就不會再出現。

模擬

仿真的記錄專案包含類似下列專案:

About to impersonate user DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation).

此記錄專案中的重要元素是專案之後 ImpersonationLevel: 顯示的資訊。 與 Impersonation 不同的任何值都顯示模擬未正確發生。

解決方法

您可以依照在閘道上授與閘道服務帳戶本機原則許可權中的指示,正確設定ImpersonationLevel

變更組態檔之後,請重新啟動閘道服務,讓變更生效。

驗證

重新整理或建立報告,然後收集網關記錄。 開啟最新的 GatewayInfo 檔案,並檢查下列字串: About to impersonate user DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation)。 請確定設定傳ImpersonationLevelImpersonation回 。

委派

委派問題通常會以一般錯誤的形式出現在 Power BI 服務 中。 若要確定問題不是委派問題,請收集Wireshark追蹤,並使用 Kerberos 做為篩選。 若要深入瞭解Wireshark,以及 Kerberos 錯誤的相關信息,請參閱 網路擷取中的 Kerberos 錯誤。

下列徵兆和疑難解答步驟可協助補救一些常見問題。

SPN 問題

如果您看到下列錯誤: The import [table] matches no exports. Did you miss a module reference?:調查 Mashup[date]*.log時,您遇到服務主體名稱 (SPN) 問題。

當您使用Wireshark追蹤進一步調查時,會顯示錯誤 KRB4KDC_ERR_S_PRINCIPAL_UNKOWN,這表示找不到SPN或不存在。 請見下圖呈現的範例:

Screenshot showing a service principal name error.

解決方法

若要解決此問題等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

Screenshot showing a 'No credentials error'.

這些錯誤通常表示可以在網關服務帳戶的 [委派] 窗格上找到SPN hdb/hana2-s4-sso2.westus2.cloudapp.azure.com 檔案,但不是在此帳戶可呈現委派認證清單的服務中。

解決方法

若要解決無認證問題,請遵循設定 Kerberos 限制委派中所述的步驟。 正確完成時,網關服務帳戶的 [委派] 索引卷標會反映 HansaWorld Database (HDB) 檔案和完整功能變數名稱 (FQDN)在帳戶可呈現委派認證的服務清單中

驗證

請遵循上述步驟來解決問題。 如果您仍然遇到 Kerberos 問題,則可能在 Power BI 閘道或 HANA 伺服器本身設定錯誤。

認證錯誤

如果您遇到認證錯誤,記錄或追蹤中的錯誤會公開描述 Credentials are invalid 或類似錯誤的錯誤。 這些錯誤可能會以不同的方式在連線的數據源端顯示,例如SAP HANA。 下圖顯示範例錯誤:

Screenshot showing an invalid credentials error.

徵兆 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 連線 服務也一樣。

驗證

完成驗證之後,您就可以在 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 的詳細資訊,請參閱下列資源: