受信任工作区访问权限

Fabric 允许你以安全的方式访问启用防火墙的 Azure Data Lake Storage (ADLS) Gen2 帐户。 具有工作区标识的 Fabric 工作区可以安全地访问 ADLS Gen2 帐户,并从选定的虚拟网络和 IP 地址启用公用网络访问。 可以限制 ADLS Gen2 对特定 Fabric 工作区的访问权限。

访问具有受信任工作区访问权限的存储帐户的结构工作区需要对请求进行适当的授权。 组织帐户或服务主体的 Microsoft Entra 凭证支持授权。 若要了解有关资源实例规则的更多信息,请参阅授予对 Azure 资源实例的访问权限

若要限制和保护从某些 Fabric 工作区对启用防火墙的存储帐户的访问权限,可以设置资源实例规则以允许从特定 Fabric 工作区进行访问。

注意

受信任的工作区访问已正式发布,但只能在 F SKU 容量中使用。 有关购买 Fabric 订阅的信息,请参阅购买 Microsoft Fabric 订阅。 试用容量不支持受信任工作区访问。

本文介绍如何:

  • 在 ADLS Gen2 存储帐户中配置受信任工作区访问权限

  • 在 Fabric 湖屋中创建 OneLake 快捷方式,连接到启用受信任工作区访问权限的 ADLS Gen2 存储帐户。

  • 创建一个数据管道,以直接连接到已启用防火墙和受信任工作区访问权限的 ADLS Gen2 帐户。

  • 使用 T-SQL COPY 语句,从启用了防火墙的 ADLS Gen2 帐户将数据引入仓库,该帐户已启用受信任的工作区访问。

在 ADLS Gen2 中配置受信任工作区访问权限

资源实例规则

可以配置特定的 Fabric 工作区以根据其工作区标识访问存储帐户。 可以通过部署具有资源实例规则的 ARM 模板来创建资源实例规则。 若要创建资源实例规则,请执行以下操作:

  1. 登录 Azure 门户,然后转到“自定义部署”。

  2. 选择“在编辑器中生成自己的模板”。 如需创建资源实例规则的示例 ARM 模板,请参阅 ARM 模板示例

  3. 在编辑器中创建资源实例规则。 完成后,选择“查看 + 创建”。

  4. 在出现的“基本信息”选项卡上,指定所需的项目和实例详细信息。 完成后,选择“查看 + 创建”。

  5. 在显示的“查看 + 创建”选项卡上检查摘要,然后选择“创建”。 系统将提交该规则以进行部署。

  6. 部署完成后,你讲可以转到资源。

注意

  • 只能通过 ARM 模板创建 Fabric 工作区的资源实例规则。 不支持通过 Azure 门户创建。
  • subscriptionId“00000000-0000-0000-0000-0000000000000”必须用于 Fabric 工作区 resourceId。
  • 可以通过 Fabric 工作区的地址栏 URL 获取工作区 ID。

显示已配置资源实例规则的屏幕截图。

下面是可以通过 ARM 模板创建的资源实例规则的示例。 如需完整示例,请参阅 ARM 模板示例

"resourceAccessRules": [

       { "tenantId": " df96360b-9e69-4951-92da-f418a97a85eb",

          "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabric/providers/Microsoft.Fabric/workspaces/b2788a72-eef5-4258-a609-9b1c3e454624"
       }
]

受信任的服务异常

如果为从选定虚拟网络和 IP 地址启用公用网络访问的 ADLS Gen2 帐户选择受信任服务例外,则具有工作区标识的 Fabric 工作区将能够访问该存储帐户。 选中受信任服务例外复选框后,租户 Fabric 容量中具有工作区标识的任何工作区都可以访问存储帐户中存储的数据。

不建议使用此配置,并且将来可能会终止支持该配置。 建议使用资源实例规则向特定资源授予访问权限

谁可以配置存储帐户以访问受信任的服务?

存储帐户上的参与者(Azure RBAC 角色)可以配置资源实例规则或受信任服务例外。

如何在 Fabric 中使用受信任工作区访问权限

目前可以通过三种方法使用受信任工作区访问权限以安全的方式从 Fabric 访问数据:

  • 可以在 Fabric 湖屋中创建一个新的 ADLS 快捷方式,以开始使用 Spark、SQL 和 Power BI 分析数据。

  • 可以创建一个数据管道,利用受信任工作区访问权限来直接访问启用防火墙的 ADLS Gen2 帐户。

  • 可以使用 T-SQL Copy 语句,该语句利用受信任的工作区访问权限,将数据引入 Fabric 仓库。

以下部分介绍如何使用这些方法。

创建具有受信任工作区访问权限的存储帐户的 OneLake 快捷方式

在 Fabric 中配置工作区标识并在 ADLS Gen2 存储帐户中启用受信任工作区访问权限后,可以创建 OneLake 快捷方式以从 Fabric 访问数据。 只需在 Fabric 湖屋中创建一个新的 ADLS 快捷方式,即可开始使用 Spark、SQL 和 Power BI 分析数据。

先决条件

  • 与 Fabric 容量关联的 Fabric 工作区。 请参阅工作区标识
  • 创建与 Fabric 工作区关联的工作区标识。
  • 快捷方式中用作身份验证类型的用户帐户或服务主体应在存储帐户上具有 Azure RBAC 角色。 该主体必须在存储帐户范围内具有存储 Blob 数据参阅者、存储 Blob 数据所有者或存储 Blob 数据读取者角色,或者除了容器范围中的存储 Blob 数据读取者角色之外,在存储帐户范围内还必须具有存储 Blob 委托者角色。
  • 为存储帐户配置资源实例规则

注意

  • 满足先决条件的工作区中预先存在的快捷方式将自动开始支持受信任服务的访问。
  • 必须使用存储帐户的 DFS URL ID。 下面是一个示例:https://StorageAccountName.dfs.core.windows.net

步骤

  1. 首先,在湖屋中创建新的快捷方式。

    创建新的快捷菜单项的屏幕截图。

    此时将打开“新建快捷方式”向导。

  2. 在“外部源”中,选择“Azure Data Lake Storage Gen2”

    显示选择 Azure Data Lake Storage Gen2 作为外部源的屏幕截图。

  3. 提供已配置了受信任工作区访问权限的存储帐户的 URL,并为连接选择一个名称。 对于身份验证类型,请选择“组织帐户”或“服务主体”。

    显示快捷方式向导中 URL 规范的屏幕截图。

    完成后,选择“下一步”

  4. 提供快捷方式名称和子路径。

    显示快捷方式向导中子路径定义的屏幕截图。

    完成后,选择“创建”。

  5. 此时,湖屋快捷方式已创建,应该能够在快捷方式中预览存储数据。

    显示通过 Lakehouse 快捷方式预览存储数据的屏幕截图。

使用在 Fabric 项中具有受信任工作区访问权限的存储帐户的 OneLake 快捷方式

借助 Fabric 中的 OneCopy,可以通过来自所有 Fabric 工作负载的受信任访问来访问 OneLake 快捷方式。

  • Spark:可以使用 Spark 从 OneLake 快捷方式访问数据。 在 Spark 中使用快捷方式时,它们显示为 OneLake 中的文件夹。 只需引用文件夹名称即可访问数据。 可以使用 OneLake 快捷方式访问 Spark 笔记本中具有受信任工作区访问权限的存储帐户。

  • SQL 分析终结点:在湖屋的“表”部分中创建的快捷方式也可用于 SQL 分析终结点。 可以打开 SQL 分析终结点并像查询任何其他表一样查询数据。

  • 管道:数据管道可以访问具有受信任工作区访问权限的存储帐户的托管快捷方式。 数据管道可用于通过 OneLake 快捷方式读取或写入存储帐户。

  • Dataflows v2:Dataflows Gen2 可以访问具有受信任工作区访问权限的存储帐户的托管快捷方式。 Dataflows Gen2 可以通过 OneLake 快捷方式读取或写入存储帐户。

  • 语义模型和报告:与湖屋 SQL 分析终结点关联的默认语义模型可以读取具有受信任工作区访问权限的存储帐户的托管快捷方式。 若要查看默认语义模型中的托管表,请转到 SQL 分析终结点项,选择“报告”,然后选择“自动更新语义模型”。

    还可以创建新的语义模型,以引用具有受信任工作区访问权限的存储帐户的表快捷方式。 转到 SQL 分析终结点,选择“报告”,然后选择“新建语义模型”。

    可以在默认语义模型和自定义语义模型的基础上创建报表。

  • KQL 数据库:还可以在 KQL 数据库中创建 ADLS Gen2 的 OneLake 快捷方式。 创建具有受信任工作区访问权限的托管快捷方式的步骤保持不变。

创建到具有受信任工作区访问权限的存储帐户的数据管道

通过在 Fabric 中配置工作区身份并在 ADLS Gen2 存储帐户中启用受信任访问权限,可以创建数据管道以从 Fabric 访问数据。 可以创建一个新的数据管道以将数据复制到 Fabric 湖屋,然后即可开始使用 Spark、SQL 和 Power BI 分析数据。

先决条件

  • 与 Fabric 容量关联的 Fabric 工作区。 请参阅工作区标识
  • 创建与 Fabric 工作区关联的工作区标识。
  • 用于创建连接的用户帐户或服务主体应在存储帐户上具有 Azure RBAC 角色。 主体必须在存储帐户范围内具有存储 Blob 数据参与者、存储 Blob 数据所有者或存储 Blob 数据读者角色。
  • 为存储帐户配置资源实例规则

步骤

  1. 首先在湖屋中选择“获取数据”。

  2. 选择“新建数据管道”。 为管道命名,然后选择“创建”。

    显示“新建管道”对话框的屏幕截图。

  3. 选择 Azure Data Lake Gen2 作为数据源。

    显示选择 ADLS Gen2 选择的屏幕截图。

  4. 提供已配置了受信任工作区访问权限的存储帐户的 URL,并为连接选择一个名称。 对于“身份验证类型”,请选择“机构帐户”或“服务主体”。

    显示数据源连接设置的屏幕截图。

    完成后,选择“下一步”

  5. 选择需要复制到湖屋的文件。

    显示 file selection.png 的屏幕截图

    完成后,选择“下一步”

  6. 在“查看 + 保存”屏幕上,选择“立即开始数据传输”。 完成后,选择“保存 + 运行

    显示 review-and-save-screen.png 的屏幕截图

  7. 当管道状态由“已排队”变为“成功”时,前往湖屋验证数据表是否已创建。

使用 T-SQL COPY 语句将数据加载到数据仓库

通过在 Fabric 中配置工作区身份并在 ADLS Gen2 存储帐户中启用受信任访问权限,可以使用 COPY T-SQL 语句将数据引入 Fabric 仓库。 将数据引入仓库后,可开始使用 SQL 和 Power BI 分析数据。

限制和注意事项

  • 任何 Fabric F SKU 容量中的工作区均支持受信任的工作区访问。
  • 只能在 OneLake 快捷方式、数据管道和 T-SQL COPY 语句中使用受信任的工作区访问。 若要从 Fabric Spark 安全访问存储帐户,请参阅 Fabric 的托管专用终结点
  • 如果将具有工作区标识的工作区迁移到非 Fabric 容量或非 F SKU Fabric 容量,则受信任的工作区访问将在一小时后停止工作。
  • 2023 年 10 月 10 日之前创建的预先存在的快捷方式不支持受信任工作区访问权限。
  • 无法在托管连接和网关中创建或修改受信任工作区访问权限的连接。
  • 与启用防火墙的存储帐户的连接在“管理连接和网关”中将处于“离线”状态。
  • 如果在 Fabric 项(快捷方式和管道除外)或其他工作区中重复使用支持受信任工作区访问权限的连接,则它们可能无法工作。
  • 只有机构帐户服务主体才能对存储帐户进行身份验证,以便访问受信任的工作区。
  • 管道无法写入具有受信任工作区访问权限的存储帐户上的 OneLake 表快捷方式。 这是一个临时限制。
  • 最多可以配置 200 个资源实例规则。 有关详细信息,请参阅 Azure 订阅限制和配额 - Azure Resource Manager
  • 仅当从选定的虚拟网络和 IP 地址启用公共访问时,受信任工作区访问权限才有效。
  • 必须通过 ARM 模板创建 Fabric 工作区的资源实例规则。 不支持通过 Azure 门户 UI 创建的资源实例规则。
  • 满足先决条件的工作区中预先存在的快捷方式将自动开始支持受信任服务的访问。
  • 如果贵组织对包括所有服务主体的工作负载标识具有 Entra 条件访问策略,则受信任的工作区访问将不起作用。 在这种情况下,需要从工作负载标识的条件访问策略中排除特定的 Fabric 工作区标识。
  • 如果使用服务主体创建快捷方式,则不支持受信任工作区访问。

排查受信任的工作区访问问题

如果面向受防火墙保护的 ADLS Gen2 存储帐户的湖屋中的快捷方式变得不可访问,可能是因为湖屋已与在湖屋所在工作区中没有管理员、成员或参与者角色的用户共享。 这是一个已知问题。 补救措施不是与在工作区中没有管理员、成员或参与者角色的用户共享湖屋。

ARM 模板示例

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2023-01-01",
            "name": "<storage account name>",
            "id": "/subscriptions/<subscription id of storage account>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name>",
            "location": "<region>",
            "kind": "StorageV2",
            "properties": {
                "networkAcls": {
                    "resourceAccessRules": [
                        {
                            "tenantId": "<tenantid>",
                            "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabric/providers/Microsoft.Fabric/workspaces/<workspace-id>"
                        }]
                }
            }
        }
    ]
}