提供者的跨租户访问是什么?

跨租户访问功能允许提供方租户将存储在其 Fabric 数据仓库和 SQL 分析终结点中的数据共享给访客租户。 此功能适用于需要与来宾租户共享数据的组织。 例如,当公司 A 为公司 B 存储 Fabric 数据时,公司 B 可以使用跨租户访问来访问公司 A 的 Fabric 租户中的数据。 本文面向想要设置跨租户访问的提供商。

重要

  • Fabric 数据仓库的跨租户访问对于提供程序而言是有限的预览版。 若要注册为跨租户数据的提供商,请提交此 表单
  • 要作为来宾使用跨租户访问,您需要遵循来宾跨租户访问中列出的步骤,并与受信任的提供商合作。

工作原理

跨租户访问允许来宾租户访问提供者的数据仓库和 SQL 分析终端中存储的数据。 当提供程序允许来宾租户中的主体使用此功能时,Fabric 将为提供程序租户中的每个来宾创建相应的服务主体。 然后,提供程序向这些服务主体授予对仓库的权限。 具有权限的来宾可以使用自己的 Entra ID 凭证,通过 SQL Server Management Studio(SSMS)等工具访问数据仓库终结点。 为此,访客通过其家庭组织进行身份验证,被授权访问数据仓库端点。

与 B2B 不同,在 Fabric 数据仓库中使用跨租户访问不会允许来宾访问提供方目录。 提供程序不需要管理单个来宾用户,当提供程序为跨租户访问配置组时,组成员身份由来宾租户管理。

与 Fabric 中的外部数据共享功能不同,它允许提供程序与另一个 Fabric 租户就地共享 OneLake 数据,此功能允许提供程序与没有 Fabric 的来宾共享数据仓库。

提供商的责任

  1. 确保来宾租户同意将跨租户访问功能用于你的(提供商)租户。 来宾租户必须遵循 来宾跨租户访问指南中列出的步骤。

  2. 为跨租户访问配置来宾主体。

  3. 为跨租户访问启用来宾主体时,Fabric 将为提供程序租户中的每个来宾创建相应的服务主体,并为每个来宾组创建相应的组。 提供程序必须向这些服务主体授予对仓库的工作区角色或权限。

  4. 来宾主体将使用 TDS 终结点访问跨租户数据仓库,并且需要数据仓库的连接字符串。 提供程序必须向来宾提供此连接字符串。 用于跨租户访问的连接字符串不同于用于在租户中访问的连接字符串。

为跨租户访问配置来宾主体

为跨租户访问配置来宾主体

POST https://api.fabric.microsoft.com/v1/admin/crosstenantauth/mappings

  • 支持的标识:用户和服务主体

  • 需要的权限:调用此 API 的用户必须处于 Fabric 管理员角色中。

  • 若要确保服务主体可以创建、列出和删除在提供程序租户中创建的任何跨租户映射,Fabric 应用程序必须具有 Group.Create Microsoft Graph 权限。 请参阅以下文章,授予 Group.Create 对 Fabric 应用程序的权限。

  • 必须启用服务主体才能调用 Fabric 公共 API、Fabric 读取 API 和更新 API。

请求主体

名称 必选 类型 DESCRIPTION
ID 身体 是的 字符串 来宾应用程序或组的对象 ID
租户ID 身体 是的 字符串 来宾租户识别号
类型 身体 是的 字符串 用户或组
用户详情 身体 是的 JSON 或复杂 来宾租户用户的详细信息
userPrincipalName(“用户主体名称”) 身体 是的 字符串 来宾用户的主体名称
组详情 身体 是的 JSON 或复杂 来宾租户组的详细信息
组类型 身体 是的 字符串 来宾租户群组的类型,如果不可用,则发送“未知”
电子邮件 身体 是的 字符串 访客租户群组的电子邮件

示例请求正文

用户映射的请求正文

{  
        "id": "00000000-0000-0000-0000-000000000000", 
        "tenantId": "{guest tenant id}",  
        "type": "User",  
        "userDetails": {  
            "userPrincipalName": "user@contoso.com"  
         }  
}

服务主体映射的请求正文

{  
        "id": "{object id of the Enterprise application}",  
        "tenantId": " {guest tenant id} ",   
        "type": "User" 
}

组映射的请求正文

{  
        "id": "00000000-0000-0000-0000-000000000000", 
        "tenantId": "{guest tenant id}",  
        "type": "Group",  
        "groupDetails": {  
               "groupType": "Unknown", 
               "email": "groupemail@contoso.com"  
         }  
}

组映射的请求正文,当组没有电子邮件时

{ 
  "id": "{object id of the group}", 
  "tenantId": "{guest tenant id}", 
  "type": "Group" 
}

响应代码

响应代码 注释
200 正常 为跨租户访问设置了来宾用户组或主体
400 错误的请求 来宾主体无法解决
401 未授权 来宾租户尚未同意
429 请求过多 请求过多,预期为 50 次/分钟

获取已启用跨租户访问的来宾主体列表

GET https://api.fabric.microsoft.com/v1/admin/crosstenantauth/mappings

  • 支持的标识:用户和服务主体

  • 需要的权限:调用此 API 的用户必须处于 Fabric 管理员角色中。

  • 若要确保服务主体可以创建、列出和删除在提供程序租户中创建的任何跨租户映射,Fabric 应用程序必须具有 Group.Create Microsoft Graph 权限。 请参阅以下文章,授予 Group.Create 对 Fabric 应用程序的权限。

  • 必须启用服务主体才能调用 Fabric 公共 API、Fabric 读取 API 和更新 API。

响应代码

响应代码 注释
200 正常 如果不存在映射,API 将返回空列表
404 未找到
401 未授权
429 请求过多 请求过多,预期为 50 次/分钟

删除为跨租户访问启用的来宾主体

DELETE https://api.fabric.microsoft.com/v1/admin/crosstenantauth/mappings/{mappingId}

  • 支持的标识:用户和服务主体

  • 需要的权限:调用此 API 的用户必须处于 Fabric 管理员角色中。

  • 为了确保服务主体可以创建、列出和删除在提供程序租户中创建的任何跨租户映射,Fabric 应用程序必须具有 Group.Create Graph 权限。 请参阅以下文章,授予 Group.Create 对 Fabric 应用程序的权限。

  • 必须启用服务主体才能调用 Fabric 公共 API、Fabric 读取 API 和更新 API。

当调用此 API 时,为来宾主体创建的组和服务主体会立即停止运行,但映射会在数据库中保留超过一天,并且可以在 GET 映射 API 响应中看到。

请求主体

名称 必选 类型 DESCRIPTION
mappingId 路径 是的 字符串 映射 ID

响应代码

响应代码 注释
200 正常
404 未找到
401 未授权
429 请求过多 请求过多,预期为 50 次/分钟

向服务主体授予工作区角色或权限

允许来自提供程序租户的用户通过“添加工作区角色分配 REST API 或 Fabric UI”将工作区角色授予表示来宾主体的组或服务主体。 它们还可以与组和服务主体共享数据仓库。

获取访客主体可以使用的 SQL 连接字符串

提供程序租户中的授权用户可以调用此 API,以获取特定来宾租户的指定工作区的 SQL 连接字符串。

  • 支持的标识:用户、服务主体和托管标识
  • 所需的权限:调用方必须具有查看者或更高的工作区权限级别

GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/warehouses/{warehouseId}/connectionString?guestTenantId={guestTenantId}&privateLinkType={privateLinkType}

请求主体

名称 必选 类型 DESCRIPTION
warehouseId 路径 真 实 字符串 仓库 ID
工作区ID 路径 真 实 字符串 工作区 ID
guestTenantId 查询 字符串 如果最终用户的租户与仓库租户不同,则为来宾租户 ID
私有链接类型 查询 字符串 无(无专用链接或租户级专用链接)或工作区(工作区专用链接)

响应代码

响应代码 注释
200 正常 返回响应中的连接字符串
404 未找到 ItemNotFound - 找不到请求的项目。 InvalidGuestTenantId - 提供的来宾租户 ID 不存在

示例响应正文

{ 
  "connectionString": "DW connection string" 
}

跨租户访问的治理

  1. 使用获取跨租户身份验证映射 API - 您可以使用 GET 跨租户身份验证映射 API 查看可能有权访问您租户中的仓库和 SQL 终结点的来宾租户用户和组。 这些用户还需要被授予在项目上的权限。

  2. 使用 Purview 中的审核日志 - 导航到 Microsoft Purview 中心,可在其中搜索以下事件类型以获取有关将 CRUD 和令牌生成活动映射为提供程序的详细信息。

    • 创建了跨租户身份验证映射
    • 列出的跨租户身份验证映射
    • 已删除跨租户身份验证映射
    • 已创建跨租户身份验证令牌
    • 清除来宾租户数据跨租户身份验证(在来宾租户吊销同意后删除映射时生成)

    访客类租户可以查看以下类型的事件:

    • 同意跨租户身份验证
    • 撤销授权跨租户身份验证
  3. 管理在 Microsoft Entra 中创建的服务主体和组 (仅限全局管理员、应用管理员或其他高特权用户) - 还可以查看在 Microsoft Entra 中创建的服务主体和组,使来宾租户主体能够访问跨租户数据。 其他 Azure 体验,例如登录日志(服务主体登录),将显示与来宾租户用户登录活动对应的服务主体登录详细信息。 Microsoft Entra Audit 日志还将提供有关 Fabric 执行的组创建活动的信息。 不应修改或删除 Fabric 为跨租户访问创建的 Fabric 标识应用程序和应用注册。 如果服务提供者希望删除为跨租户访问创建的 FabricIdentity,则应该删除映射。

来宾的责任

  1. 在同意将 Fabric 数据仓库的跨租户访问功能与提供程序一起使用之前,请确保信任该提供程序。 来宾租户必须遵循来宾文章的 跨租户访问 中列出的步骤。

  2. 来宾租户负责创建和管理为跨租户访问配置的Microsoft Entra 组。

  3. 来宾租户负责管理其用户的条件访问或 MFA 策略。 当访客用户尝试访问跨租户数据仓库时,将应用这些策略。

限制和注意事项

  1. 为了确保服务主体能够创建、列出和删除在提供商租户中创建的任何跨租户映射,Fabric 应用程序必须具备群组权限。 创建 Graph 权限。 请参阅以下文档以授予该组权限。 创建 Fabric 应用程序的访问权限。

  2. 来宾用户在登录时,系统会强制应用来宾租户的条件访问或 MFA 策略。

  3. 来宾租户负责创建和管理为跨租户访问配置的Microsoft Entra 组。

  4. Fabric 每小时对为跨租户访问而配置的来宾组执行组扩展。 这意味着,如果将某个用户添加到来宾租户中的组,并且该组已配置为跨租户访问,则此用户最多可能需要 1 小时才能访问跨租户数据仓库。

  5. 如果来宾通过组成员身份派生其权限,可能需要长达 1 小时才能在数据仓库上反映权限更改。 如果用户直接授予权限(即不是通过组),则数据仓库的权限更改会立即反映。

  6. 资源限制和 SPN 的回收 - 为跨租户用户创建的服务主体和组会影响提供程序租户中的资源限制。 有关更多详细信息,请参阅Microsoft Entra ID 限制。 Fabric 允许你创建最多 100,000 个服务主体进行跨租户访问,但在达到这个限额之前,可能你的资源限制就已经用尽了。 如果来宾在五天内未登录到仓库,我们将删除与此来宾主体关联的服务主体来控制资源限制。

  7. 来宾无法运行面向公众的 API。 为跨租户用户创建的服务主体和组当前无法运行面向公众的 API。 这适用于审核、快照和 SQL 池。 例如,只有来自提供程序租户的用户才能创建快照;来宾用户无法运行 API 来创建它,但可以查询快照。 同样,在进行审核时,来宾用户只可以运行审核TVF,而不能运行API来启用或禁用日志。

  8. 当来宾租户撤销同意时,来宾在一天内将失去对提供商租户中的仓库的访问权限。 但是,现有会话不受影响。

  9. 在某些情况下,配置完来宾主体以进行跨租户访问后,来宾主体可能需要等待数小时才能访问跨租户数据仓库。