将基于 Kerberos 的 SSO 从 Power BI 配置到本地数据源

启用 SSO 后,Power BI 报表和仪表板可以轻松通过本地源刷新数据,同时遵从在这些源上配置的用户级别权限。 使用 Kerberos 约束委派启用无缝 SSO 连接。

本文介绍将基于 Kerberos 的 SSO 从 Power BI 服务配置到本地数据源所需执行的步骤。

先决条件

必须配置多个项才能使 Kerberos 约束委派正常工作,其中包括服务主体名称 (SPN) 和服务帐户上的委派设置。

注意

不支持将 DNS 别名用于 SSO。

配置大纲

下面概述了配置网关单一登录所需执行的步骤。

  1. 完成第 1 部分:基本配置中的所有步骤。

  2. 根据 Active Directory 环境和使用的数据源,可能需要完成第 2 部分:特定于环境的配置中描述的部分或全部配置。

    下面列出了可能需要其他配置的可能场景:

    方案 转到
    Active Directory 环境的安全性已增强。 将网关服务帐户添加到 Windows Authorization Access Group
    网关服务帐户和网关将模拟的用户帐户位于不同的域或林中。 将网关服务帐户添加到 Windows Authorization Access Group
    你没有配置具有用户帐户同步的 Microsoft Entra Connect,并且用户在 Power BI 中使用的 UPN 与本地 Active Directory 环境中的 UPN 不匹配。 在网关计算机上设置用户映射配置参数
    你计划将 SAP HANA 数据源与 SSO 一起使用。 完成数据源特定的配置步骤
    你计划将 SAP BW 数据源与 SSO 一起使用。 完成数据源特定的配置步骤
    你计划将 Teradata 数据源与 SSO 一起使用。 完成数据源特定的配置步骤
  3. 按照第 3 部分:验证配置中的说明验证你的配置,以确保 SSO 设置正确。

第 1 部分:基本配置

步骤 1:安装并配置 Microsoft 本地数据网关

本地数据网关支持就地升级,以及现有网关的设置接管

步骤 2:获取域管理员权限以配置 SPN (SetSPN) 和 Kerberos 约束委派设置

若要配置 SPN 和 Kerberos 委派设置,域管理员应避免向不具有域管理员权限的人员授予权限。 在下一部分中,我们将更详细地介绍建议的配置步骤。

步骤 3:配置网关服务帐户

需要配置下面的选项 A,除非已配置 Microsoft Entra Connect 并且已同步用户帐户。 在这种情况下,建议使用选项 B。

选项 A:将网关 Windows 服务作为具有 SPN 的域帐户运行

在标准安装中,网关作为计算机本地服务帐户 NT Service\PBIEgwService 运行

计算机本地服务帐户

若要启用 Kerberos 约束委派,网关必须作为域帐户运行,除非 Microsoft Entra 实例已与本地 Active Directory 实例同步(使用 Microsoft Entra DirSync/Connect)。 若要切换到域帐户,请参阅更改网关服务帐户

为网关服务帐户配置 SPN

首先,确定是否已经为用作网关服务帐户的域帐户创建了 SPN:

  1. 域管理员可以启动“Active Directory 用户和计算机”Microsoft 管理控制台 (MMC) 管理单元

  2. 在左侧窗格中,右键单击域名,选择“查找”,然后输入网关服务帐户的帐户名

  3. 在搜索结果中,右键单击网关服务帐户,然后选择“属性”。

  4. 如果“委派”选项卡在“属性”对话框中可见,则已创建 SPN,并且可以跳到配置 Kerberos 约束委派

  5. 如果“属性”对话框中没有“委派”选项卡,可以在该帐户上手动创建 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 添加到网关计算机上的本地管理员组,然后在网关应用中重启网关服务。 具有多个网关的方案不支持使用此选项,因为 Active Directory 会在整个林中强制实施唯一的 SPN。 对于这些方案,请改用选项 A

步骤 4:配置 Kerberos 约束委派

可以为标准 Kerberos 约束委派或基于资源的 Kerberos 约束委派配置委派设置。 有关这两种委派方法差异的详细信息,请参阅 Kerberos 约束委派概述

需要以下服务帐户:

  • 网关服务帐户:表示 Active Directory 中的网关的服务用户,带有一个在步骤 3 中配置的 SPN。
  • 数据源服务帐户:表示 Active Directory 中数据源的服务用户,带有一个映射到数据源的 SPN。

注意

网关服务帐户和数据源服务帐户必须分开。 同一个服务帐户不能既用来表示网关,又用来表示数据源。

根据要使用的方法,请转到以下部分之一。 不要同时完成这两部分:

选项 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 清单)博客文章中的“应用需要哪些 SPN?”一节

在以下步骤中,我们假设本地环境中有两台位于相同域的计算机:网关计算机和运行 SQL Server(已为基于 Kerberos 的 SSO 进行过配置)的数据库服务器。 只要已为基于 kerberos 的单一登录配置了数据源,就可以对其他一个受支持的数据源采用这些步骤。 此示例中,我们将使用以下设置:

  • Active Directory 域 (Netbios):Contoso
  • 网关计算机名:MyGatewayMachine
  • 网关服务帐户:Contoso\GatewaySvc
  • SQL Server 数据源计算机名:TestSQLServer
  • SQL Server 数据源服务帐户:Contoso\SQLService

下面是配置委派设置的方法:

  1. 通过域管理员权限,打开“Active Directory 用户和计算机” MMC 管理单元

  2. 右键单击网关服务帐户 (Contoso\GatewaySvc),然后选择“属性”

  3. 选择“委派”选项卡。

  4. 选择“仅信任此计算机来委派指定的服务”>“使用任意身份验证协议” 。

  5. 在“可以由此帐户提供委派凭据的服务”下选择“添加”

  6. 在新对话框中,选择“用户或计算机”

  7. 输入数据源的服务帐户,然后选择“确定”

    例如,SQL Server 数据源可能具有类似 Contoso\SQLService 这样的服务帐户。 应该已在此帐户上设置了适当的数据源 SPN。

  8. 选择你为数据库服务器创建的 SPN。

    在我们的示例中,SPN 以“MSSQLSvc”开头。 如果你为数据库服务添加了 FQDN 和 NetBIOS SPN,请同时选择两者。 可能只显示其中一个。

  9. 选择“确定”。

    现在,应在网关服务帐户可向其提供委派凭据的服务列表中看到 SPN。

    “网关连接器属性”对话框

  10. 若要继续执行设置过程,请转到在网关计算机上向网关服务帐户授予本地策略权限

选项 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

完成以下配置步骤:

  1. 使用 ContosoFrontEnd 域的域控制器上的“Active Directory 用户和计算机”MMC 管理单元,并验证未为网关服务帐户应用任何委派设置

    网关连接器属性

  2. 使用 ContosoBackEnd 域的域控制器上的“Active Directory 用户和计算机”,并验证未为后端服务帐户应用任何委派设置

    SQL 服务属性

  3. 在帐户属性的“特性编辑器”选项卡中,验证 msDS-AllowedToActOnBehalfOfOtherIdentity 特性未设置

    SQL 服务属性

  4. 在“Active Directory 用户和计算机”中,在 ContosoBackEnd 域的域控制器上创建组。 将 GatewaySvc 网关服务帐户添加到 ResourceDelGroup 组

    若要从受信任的域添加用户,此组的范围必须是本地域。 组属性

  5. 在 ContosoBackEnd 域的域控制器中打开命令提示符,并运行以下命令,以更新后端服务帐户的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性

    $c = Get-ADGroup ResourceDelGroup
    Set-ADUser SQLService -PrincipalsAllowedToDelegateToAccount $c
    
  6. 在“Active Directory 用户和计算机”中,验证后端服务帐户属性的“属性编辑器”选项卡中是否反映此更新

步骤 5:在服务帐户上启用 AES 加密

将以下设置应用于网关服务帐户以及网关可以委托的每个数据源服务帐户:

注意

如果服务帐户上定义了现有加密,请咨询 Active Directory 管理员,因为按照以下步骤进行操作会覆盖现有的加密值,并且可能破坏客户端。

  1. 通过域管理员权限,打开“Active Directory 用户和计算机 MMC”管理单元。

  2. 右键单击网关/数据源服务帐户,然后选择“属性”。

  3. 选择“帐户”选项卡。

  4. 在“帐户选项”下,启用至少以下其中一个(或两个)选项。 请注意,需要为所有服务帐户启用相同的选项。

    • 此帐户支持 Kerberos AES 128 位加密
    • 此帐户支持 Kerberos AES 256 位加密

注意

如果不确定该使用哪种加密方案,请咨询 Active Directory 管理员。

步骤 6:在网关计算机上向网关服务帐户授予本地策略权限

最后,在运行网关服务(示例中的 MyGatewayMachine)的计算机上,向网关服务帐户授予本地策略“身份验证后模拟客户端”和“以操作系统方式执行”(SeTcbPrivilege)。 使用本地组策略编辑器 (gpedit.msc) 执行此配置

  1. 在网关计算机上,运行 gpedit.msc。

  2. 依次转到“本地计算机策略”>“计算机配置”>“Windows 设置”>“安全设置”>“本地策略”>“用户权限分配”

    本地计算机策略文件夹结构

  3. 从“用户权限分配”下的策略列表中,选择“身份验证后模拟客户端”

    模拟客户端策略

  4. 右键单击策略,打开“属性”,然后查看帐户列表

    该列表必须包含网关服务帐户(Contoso\GatewaySvc 或 ContosoFrontEnd\GatewaySvc,具体取决于约束委派的类型)

  5. 从“用户权限分配”下,从策略列表中选择“以操作系统方式执行”(SeTcbPrivilege)。 确保网关服务帐户包括在帐户列表中。

  6. 重启“本地数据网关”服务进程。

步骤 7:Windows 帐户可以访问网关计算机

SSO 使用 Windows 身份验证,因此请确保 Windows 帐户可以访问网关计算机。 如果不确定,请确保将 NT-AUTHORITY\Authenticated Users (S-1-5-11) 添加到本地计算机“用户”组。

第 2 部分:特定于环境的配置

将网关服务帐户添加到 Windows Authorization Access Group

如果以下任一情况适用,请完成本部分:

  • Active Directory 环境的安全性已增强。
  • 网关服务帐户和网关将模拟的用户帐户位于不同的域或林中。

另外,还可以在尚未强制域/林(但不是必须这样做)的情况下,将网关服务帐户添加到 Windows Authorization Access Group。

有关详细信息,请参阅 Windows Authorization Access Group

要完成此配置步骤,对于包含你需要网关服务帐户能够模拟的 Active Directory 用户的每个域,执行以下操作:

  1. 登录到域中的计算机,然后启动“Active Directory 用户和计算机”MMC 管理单元。
  2. 找到“Windows Authorization Access Group”组,该组通常可在“Builtin”容器中找到。
  3. 双击该组,然后单击“成员”选项卡。
  4. 单击“添加”,然后将域位置更改为网关服务帐户所在的域。
  5. 键入网关服务帐户名称,然后单击“检查名称”验证网关服务帐户是否可供访问。
  6. 单击" 确定"。
  7. 单击“应用”。
  8. 重新启动网关服务。

在网关计算机上设置用户映射配置参数

如果满足以下条件,请完成本部分:

  • 你没有配置具有用户帐户同步的 Microsoft Entra Connect 并且
  • 用户在 Power BI 中使用的 UPN 与本地 Active Directory 环境中的 UPN 不匹配。

以这种方式映射的每个 Active Directory 用户都需要具有数据源的 SSO 权限。

  1. 打开主网关配置文件 Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll。 默认情况下,此文件存储在 C:\Program Files\On-premises data gateway

  2. 将 ADUserNameLookupProperty 设置为未使用的 Active Directory 属性。 在下面的步骤中,我们将使用 msDS-cloudExtensionAttribute1。 此属性仅在 Windows Server 2012 及更高版本中可用。

  3. 将 ADUserNameReplacementProperty 设置为 SAMAccountName,然后保存配置文件

    注意

    在多域方案中,可能需要将 ADUserNameReplacementProperty 设置为 userPrincipalName 以保留用户的域信息。

  4. 在任务管理器的“服务”选项卡中,右键单击网关服务,然后选择“重启”

    任务管理器服务选项卡的屏幕截图

  5. 对于要为其启用 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 属性:

    1. 以域管理员身份启动“Active Directory 用户和计算机”。

    2. 右键单击域名,选择“查找”,然后输入要映射的本地 Active Directory 用户的帐户名

    3. 选择“属性编辑器”选项卡。

      找到 msDS-cloudExtensionAttribute1 属性,然后双击它。 将该值设置为用于登录 Power BI 服务的用户的完整用户名 (UPN)。

    4. 选择“确定”。

      “字符串属性编辑器”窗口

    5. 选择“应用”。 验证是否已在“值”列中设置了正确的值。

完成数据源特定的配置步骤

对于 SAP HANA、SAP BW 和 Teradata 数据源,需要其他配置才能与网关 SSO 一起使用:

注意

虽然其他 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 的详细信息,请参阅以下资源: