Fabric 数据仓库中的服务主体

适用于:✅Microsoft Fabric 中的数据仓库

Azure 服务主体(SPN)是应用程序或自动化工具用于访问特定 Azure 资源的安全标识。 与用户标识不同,服务主体是非交互式的基于应用程序的标识,可以分配精确的权限,使它们非常适合自动化过程或后台服务。 通过使用服务主体,可以安全地连接到数据源,同时最大限度地减少人为错误和基于标识的漏洞的风险。 若要详细了解服务主体,请参阅Microsoft Entra ID中的 应用程序和服务主体对象。

先决条件

  1. 使用 Azure创建服务主体、分配角色和创建机密。

  2. 确保租户管理员可以在 Fabric 管理门户中启用“服务主体可使用 Fabric API”

  3. 确保拥有管理员工作区角色的用户能够通过工作区中的“管理访问”授予 SPN 访问权限。

    Fabric 门户中“管理访问”弹出窗口的屏幕截图。

使用 SPN 通过 REST API 创建和访问仓库

具有管理员、成员或参与者 工作区角色的用户 可以使用服务主体进行身份验证,通过 Fabric REST API创建、更新、读取和删除仓库项。 这样,就可以自动执行重复任务,例如预配或管理仓库,而无需依赖用户凭据。

如果使用委派帐户或固定标识(所有者标识)创建仓库,则仓库将在访问 OneLake 时使用该凭据。 当所有者离开组织时,这会产生问题,因为仓库将停止工作。 为了避免这种情况,请使用 SPN 创建仓库。

Fabric 还要求用户每隔 30 天登录一次,以确保出于安全原因提供有效的令牌。 对于数据仓库,所有者需要每隔 30 天登录到 Fabric。 该操作可使用 SPN 通过 List API 自动执行。

使用 SPN 执行的 Fabric API POST 调用的屏幕截图。

由 SPN 使用 REST API 创建的数据仓库将显示在 Fabric 门户中的工作区列表视图中,并以所有者名称作为 SPN。 下图显示 Fabric 门户中工作区的屏幕截图,“Fabric 公共 API 测试应用”是创建 Contoso Marketing Warehouse 的 SPN。

Fabric 门户工作区项列表的屏幕截图。其中显示了数据仓库。其所有者不是个人帐户而是 SPN。

使用 SPN 连接到客户端应用程序

可以使用服务主体,通过 SQL Server Management Studio (SSMS) 19 或更高版本等工具连接到 Fabric 仓库。

  • 身份验证:Microsoft Entra 服务主体
  • 用户名:SPN 的客户端 ID(在先决条件部分中通过 Azure 创建)
  • 密码:机密(在先决条件部分中通过 Azure 创建)

SQL Server Management Studio(SSMS)中使用 SPN 登录到 Fabric 的屏幕截图。

控制平面权限

可通过工作区中的“管理访问”,使用工作区角色向 SPN 授予数据仓库的访问权限。 此外,可以使用 Fabric 门户,通过项权限与 SPN 共享数据仓库。

数据平面权限

通过工作区角色或项权限向数据仓库提供 SPN 的控制平面权限后,管理员可以使用 T-SQL 命令(如 GRANT )向服务主体分配特定的数据平面权限,以精确控制 SPN 有权访问的元数据/数据和操作。 建议遵循最低特权原则。

例如:

GRANT SELECT ON <table name> TO <service principal name>;

授予权限后,SPN 可以连接到客户端应用工具(如 SSMS),从而为开发人员提供安全访问权限,使他们能够运行 COPY INTO(无论是否启用了防火墙的存储),并且还可以利用 数据工厂管道按计划以编程方式执行任何 T-SQL 查询。

在 SQL Server Management Studio (SSMS) 中的查询和结果的屏幕截图,其中用户使用 SPN 访问了 Azure 存储对象。

监视

当 SPN 在仓库中运行查询时,可以使用各种监视工具查看运行查询的用户或 SPN。 可以通过以下方式查找查询活动的用户:

  • 动态管理视图 (DMV)sys.dm_exec_sessions 中的 login_name 列。
  • 查询见解queryinsights.exec_requests_history 视图中的 login_name 列。
  • 查询活动:Fabric 查询活动中的 submitter 列。
  • 容量指标应用:SPN 执行的数据仓库操作的计算使用量显示为后台操作钻取表中“用户”列下的客户端 ID。

有关详细信息,请参阅 Monitor Fabric 数据仓库

接管 API

仓库的所有权可以从 SPN 更改为用户,也可以从用户更改为 SPN。

  • 从 SPN 或用户移交给用户:请参阅更改 Fabric 数据仓库的所有权

  • 从 SPN 或用户接管至 SPN:对 REST API 使用 POST 调用。

    POST <PowerBI Global Service FQDN>/v1.0/myorg/groups/{workspaceid}/datawarehouses/{warehouseid}/takeover
    

局限性

Microsoft Fabric 数据仓库服务主体的局限性:

  • SPN 创建的仓库不支持默认语义模型,因此,诸如在数据集视图中列出表、从默认数据集创建报表等功能将不起作用。
  • 目前不支持 SQL 分析终结点的服务主体。
  • 服务主体或 Entra ID 凭据当前不支持 COPY INTO 错误文件。
  • GIT API 不支持服务主体。 SPN 支持仅适用于 部署管道 API