配置 Power BI 服务与本地数据源之间的基于 Kerberos 的 SSO

启用单一登录(SSO)可以轻松地让 Power BI 报表和仪表板刷新本地源中的数据,同时尊重针对这些源配置的用户级权限。 使用 Kerberos 约束委派 启用无缝 SSO 连接。

本文介绍您需要采取的步骤,以从 Power BI 服务到本地数据源配置基于 Kerberos 的 SSO。

先决条件

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

注释

不支持将 DNS 别名与 SSO 配合使用。

配置大纲

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

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

  2. 根据 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. 按照第 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:

  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 网关计算机为此 SID 创建 SPN,您需要在管理命令提示符下运行以下命令(用 Power BI 网关计算机的名称替换 <COMPUTERNAME>):

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,请参阅相应数据库服务器的技术文档,并在“我的 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 及更高版本启用 SSO 连接。 这种类型的委派允许前端和后端服务位于不同的域中。 若要运行,后端服务域需要信任前端服务域。

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

  • 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 加密

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

注释

如果服务帐户上定义了现有的 enctype,请与 Active Directory 管理员协商,因为执行以下步骤将覆盖现有的 enctypes 值,并可能会中断客户端。

  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)添加到本地计算机“Users”组。

第二部分:环境特定的配置

将网关服务帐户添加到 Windows 授权和访问组

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

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

在域或森林尚未加固的情况下,您还可以将网关服务帐户添加到 Windows 授权和访问组,但这并非必要。

有关详细信息,请参阅 Windows 授权访问

要完成此配置步骤,对于包含 Active Directory 用户的每个域,你希望网关服务帐户能够代表这些用户进行操作:

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

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

如果满足以下条件,请填写本部分:

  • 您未配置 Microsoft Entra Connect 用户帐户同步功能 AND
  • 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 服务用户,请将 msDS-cloudExtensionAttribute1 本地 Active Directory 用户(对数据源具有 SSO 权限)的属性设置为 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 配置的网关。 然后,在数据源的 设置 下,确保 通过 Kerberos 对 DirectQuery 查询使用 SSO通过 Kerberos 对 DirectQuery 和导入查询使用 SSO 已为基于 DirectQuery 的报表选中,并确保 通过 Kerberos 对 DirectQuery 和导入查询使用 SSO 已为基于导入的报表选中。

 添加单一登录设置的屏幕截图。

设置 使用 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 的详细信息,请参阅以下资源: