使用 Kerberos 启用到 SAP HANA 的 SSO

重要

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)。 确保 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 找不到或不存在。 下图显示了一个示例:

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 数据库 (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 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 外部 ID,确定 ID 是否匹配。

验证

解决问题后,即可在 Power BI 服务中创建或刷新报表。

有关本地数据网关和 DirectQuery 的详细信息,请参阅以下资源: