为 Linux 上的 SQL Server 配置 Power BI 报表服务器目录数据库

适用于: Linux SQL Server Reporting Services 上的 SQL Server 2019 (15.x) 及更高版本 (2019 及更高版本)

本文介绍如何为 Linux 上的 SQL Server 安装和配置 Power BI 报表服务器 (PBIRS) 目录数据库。

先决条件

在本文中,示例使用域 CORPNET.CONTOSO.COM 和以下配置。

配置计算机

机器 操作系统 详细信息
Windows 域控制器 Windows Server 2019 或 Windows Server 2022
报表开发和部署 (WIN19) Windows Server 2019,运行 Visual Studio 2019 - 报表开发和部署

- 文件共享服务用作需求驱动或计划报表输出的存储库
SQL Server Reporting Services (WIN22 Windows Server 2022,运行受支持的 Power BI 报表服务器 (PBIRS) 版本 1
开发人员计算机 Windows 11 客户端,运行 SQL Server Management Studio (SSMS)
SQL Server 2019 (rhel8test Red Hat Enterprise Linux (RHEL) 8.x 服务器,运行 SQL Server 2019(15.x),并采用最新的累积更新(CU)

配置帐户

帐户名 详细信息
CORPNET\cluadmin 全局用户帐户。 除域控制器外,所有 Windows 服务器上的本地管理员帐户。
CORPNET\pbirsservice PBIRS 服务帐户
CORPNET\linuxservice SQL Server 服务帐户(仅为 Linux 环境上的 SQL Server 创建)
CORPNET\reportuser 用于模拟 PBIRS 普通用户的全球用户帐户

该示例场景使用独立服务器和账户,确保 Kerberos 委派正常运行(即处理双跳场景)。

Linux 上的 SQL Server 配置

在配置(或重新配置)PBIRS以使用Linux 上的 SQL Server作为后端来托管报告服务器目录数据库之前,确保Linux 上的 SQL Server实例已加入该域。

要安装、配置adutil并加入域,请按照教程中的说明操作:使用 adutil 配置 Active Directory 认证 with the Linux 上的 SQL Server

Note

有关 RHEL 8 上的特定包的信息,请参阅使用 SSSD 将 RHEL 系统直接连接 AD

SQL Server 服务主体名称 (SPN)

在安装和配置PBIRS之前,先在域中配置所需的SPN CORPNET 。 你可以使用拥有域管理员权限的账户,但任何拥有足够权限创建SPN的账户都足够了。 创建SPN后,将账户配置为使用Kerberos受限委派。

此情景要求以下最低SPN:

  • 从管理命令提示符中,创建 Linux 上的 SQL Server 服务账户的 SPN。 本实例使用默认端口1433:

    setspn -S MSSQLSvc/rhel8test:1433 CORPNET\linuxservice
    setspn -S MSSQLSvc/rhel8test.CORPNET.CONTOSO.COM:1433 CORPNET\linuxservice
    
  • 接下来的两个 SPN 适用于 Power BI 报表服务器服务帐户。

    setspn -S HTTP/WIN22.CORPNET.CONTOSO.COM CORPNET\pbirsservice
    setspn -S HTTP/WIN22 CORPNET\pbirsservice
    

为了在受限委托实现中处理转发Kerberos工单的要求,你可以通过使用Microsoft对MIT标准的扩展(RFC 4120规定)来配置委派,并使用用户代理服务(S4U2proxy)。 该机制允许PBIRS服务和SQL Server服务代表用户获取其他指定服务的服务工单。

例如,当 PBIRS reportuser 服务器的网页界面进行身份验证以查看报告时,报告运行并必须访问数据源(如 SQL Server 表)。 SQL Server服务必须获得reportuserKerberos服务工单,该工单在认证时授予PBIRS服务器。 S4U2proxy 扩展提供了必要的协议过渡,使得传递所需的凭证而无需转发用户的 TGT(工单发放工单)或用户的会话密钥。

为实现此目标,在域内授予PBIRS服务账户(pbirsservice本例中)和SQL Server服务账户(linuxservice本例中)可信认证委派权限。 你可以通过多种方式授予这个权利(例如,ADSI Edit 或 Computer and Users UI)。 这个例子使用了一个提升的PowerShell命令:

  • 获取 SQL Server 服务帐户并将其设置为允许委派。 此步骤不仅会启用 Kerberos 委派,还会在帐户中启用 S4U2proxy(用于协议转换)委派。 最后两个 cmdlet 将委派权限应用于域中的特定资源,即 SQL Server 实例的 SPN。

    Get-ADUser -Identity linuxservice | Set-ADAccountControl -TrustedToAuthForDelegation $True
    Set-ADUser -Identity linuxservice -Add @{'msDS-AllowedToDelegateTo'=@('MSSQLSvc/rhel8test.CORPNET.CONTOSO.COM:1433')}
    Set-ADUser -Identity linuxservice -Add @{'msDS-AllowedToDelegateTo'=@('MSSQLSvc/rhel8test:1433')}
    
  • 获取 Power BI 报表服务器服务帐户并将其设置为允许委派。 此步骤不仅会启用 Kerberos 委派,还会在帐户中启用 S4U2proxy(用于协议转换)委派。 最后两个 cmdlet 将委派权限应用于域中的特定资源(SQL Server 和 PBIRS 服务器的 SPN)。

    Get-ADUser -Identity pbirsservice | Set-ADAccountControl -TrustedToAuthForDelegation $True
    Set-ADUser -Identity pbirsservice -Add @{'msDS-AllowedToDelegateTo'=@('MSSQLSvc/rhel8test.CORPNET.CONTOSO.COM:1433')}
    Set-ADUser -Identity pbirsservice -Add @{'msDS-AllowedToDelegateTo'=@('MSSQLSvc/rhel8test:1433')}
    Set-ADUser -Identity pbirsservice -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/Win22.CORPNET.CONTOSO.COM')}
    Set-ADUser -Identity pbirsservice -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/Win22')}
    

Power BI 报表服务器 (PBIRS)

将PBIRS安装为 仅配置 模式。

安装 PBIRS 后,必须立即将其配置为支持 Kerberos 身份验证。 PBIRS 默认仅支持 NTLM 身份验证。 安装过程中,在完成PBIRS配置前,更新其中一个PBIRS配置文件,无论是在界面中还是通过命令行。 如果你使用已有的PBIRS安装,请进行编辑并重启PBIRS服务,以便更改生效。 配置文件为 rsreportserver.config。 它就在安装PBIRS的路径上。 例如,在 PBIRS 的默认安装中,该文件位于以下位置:

C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer

使用任何文本编辑器编辑此XML文件。 编辑前先复制文件。 打开文件后,在XML文档中搜索标签AuthenticationTypes,并在属性前RSWindowsNTLM添加RSWindowsNegotiateRSWindowsKerberos属性。 例如:

<Authentication>
<AuthenticationTypes>
    <RSWindowsNegotiate/>
    <RSWindowsKerberos/>
    <RSWindowsNTLM/>
</AuthenticationTypes>

你必须完成这一步,因为 Linux 上的 SQL Server 只支持 SQL 和 Kerberos 认证。

Note

你只需要包含RSWindowsKerberos属性,但RSWindowsNegotiate如果你想在支持Windows和Linux SQL Server实例混合的服务器群中标准化PBIRS配置文件,这很有帮助。

PBIRS UI 配置

完成配置文件编辑后重新启动 PBIRS 服务后,可以继续执行剩余的 PBIRS 配置选项,例如设置基于域的服务帐户并连接到 Linux 上的 SQL Server 的远程实例。

PBIRS 服务帐户应出现在具有适当权限的 SQL Server 实例中。 可以在 SQL Server Management Studio (SSMS) 中查看权限。 在对象资源管理器中,导航到“安全 > 登录”,右键单击 CORPNET\pbirsservice 帐户,然后选择“属性”。 权限在“用户映射”页上可见。

最后,在SQL Server上添加登录reportuser权限以便测试。 在这种情况下,你选择了简单的方法,并将用户添加到两个用户数据库中的 db_datareader 固定数据库角色:和 AdventureWorksAdventureWorksDW

部署报表后

如果需要在部署报表后设置报表订阅,最好在 PBIRS 数据源中配置嵌入凭据。 所有凭据选项均可正常工作,但使用“模拟用户查看报告”选项配置的嵌入式凭据除外。 使用 Windows 凭据时此步骤失败,因为 Linux 上的 SQL Server 实现中的限制使模拟更加困难。