适用于: 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添加RSWindowsNegotiate和RSWindowsKerberos属性。 例如:
<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 实现中的限制使模拟更加困难。