跨租户数据连接

如果需要在不同的租户中为 Azure 事件中心或 Azure 事件网格服务创建数据连接,请使用 创建数据连接 API 生成连接。

本文介绍如何使用 PowerShell 创建跨租户事件中心数据连接,并 辅助令牌 进行身份验证。

先决条件

  • 如果还没有 Azure 订阅,可以在开始前创建一个 Azure 帐户
  • Tenant1中创建事件中心。 这是托管源事件中心的租户。
  • Tenant2中创建 测试群集和数据库。 这是托管目标群集的租户。
  • 有权访问两个租户或 多租户服务主体的单个 Entra 帐户

权限

Entra 帐户或多租户服务主体必须至少具有以下权限:

备注

该帐户可以是 Tenant1 或 Tenant2 的本地帐户或来宾,只要该帐户具有先决条件权限。 权限必须位于命名空间级别,而不是在事件中心级别。

为 Tenant1 的事件中心中的 Entra 帐户或服务主体分配角色

  1. 在 Azure 门户中,浏览到你的事件中心命名空间。

  2. 在左侧菜单中,选择 访问控制(IAM)>添加角色分配

  3. 在“添加角色分配 窗口中,输入表中的设置,然后选择”保存

    设置 建议的值
    角色 Azure 事件中心数据所有者
    将访问权限分配到 用户、组或服务主体
    选择 Entra 用户或服务主体 ID 的电子邮件地址

为 Tenant2 的群集中的 Entra 帐户或服务主体分配角色

  1. 在 Azure 门户中,浏览到数据资源管理器群集。

  2. 在左侧菜单中,选择 访问控制(IAM)>添加角色分配

  3. 在“添加角色分配 窗口中,输入表中的设置,然后选择”保存

    设置 建议的值
    角色 参与者
    将访问权限分配到 用户、组或服务主体
    选择 Entra 用户或服务主体 ID 的电子邮件地址

设置跨租户数据连接

使用 PowerShell 在群集与事件中心之间设置跨租户数据连接。

开始之前

创建 Get-AzCachedAccessToken 函数以获取 Tenant1的访问令牌。 可以在 PowerShell 库中找到此函数的源代码。 可以将此代码包含在个人 PowerShell 配置文件中,以便更轻松地调用它,或者在以下步骤中运行并使用它。

  1. 运行以下命令以连接到 Tenant1中的事件中心订阅:

    Connect-AzAccount -Environment AzureChinaCloud -TenantId <Tenant ID> -Subscription "<SubscriptionName>"
    
  2. 添加变量以存储 Tenant1的访问令牌:

    $tokenfromtenant1 = Get-AzCachedAccessToken
    
  3. 添加 Tenant1 的辅助令牌变量:

    $auxpat="Bearer $tokenfromtenant1"
    
  4. 运行以下命令以连接到 Tenant2中的群集订阅:

    Connect-AzAccount -Environment AzureChinaCloud -TenantId <Tenant ID> -SubscriptionId "<SubscriptionName>"
    
  5. 添加包含 Tenant2 令牌的变量:

    $tokenfromtenant2 = Get-AzCachedAccessToken
    
  6. 添加要用作主令牌的 pat 变量:

    $pat="Bearer $tokenfromtenant2"
    
  7. 在调用 Web 请求时,添加要用作事件中心资源的 HTTP 正文请求变量:

    $requestbody ='{"location": "China East 2","kind": "EventHub","properties": { "eventHubResourceId": "/subscriptions/<subscription ID>/resourceGroups/<ResourceGroupName>/providers/Microsoft.EventHub/namespaces/<EventHubNamespaceName>/eventhubs/<EventHubName>","consumerGroup": "$Default","dataFormat": "JSON", "tableName": "<ADXTableName>", "mappingRuleName": "<ADXTableMappingName>"}}'
    
  8. 在调用 Web 请求时,添加要用作群集资源的 URI 变量:

    $adxdcuri="https://management.chinacloudapi.cn/subscriptions/<subscriptionID>/resourceGroups/<resource group name>/providers/Microsoft.Kusto/clusters/<ADXClusterName>/databases/<ADXdbName>/dataconnections/<ADXDataConnectionName>?api-version=2020-02-15"
    
  9. 调用以下 Web 请求,该请求使用以前定义的变量来创建数据连接:

    Invoke-WebRequest -Headers @{Authorization = $pat; 'x-ms-authorization-auxiliary' = $auxpat} -Uri $adxdcuri -Body $requestbody -Method PUT -ContentType 'application/json'
    

完成

  1. 验证现在是否可以在 Azure 门户中看到新创建的数据连接。

  2. 可选:建立数据连接后,可以撤销或删除之前授予的 Entra 帐户或服务主体的权限。 由于群集引入使用事件中心密钥,因此不再需要这些权限。

重要

如果轮换主事件中心或辅助事件中心密钥,则数据引入可能会停止工作。 在这种情况下,需要删除并重新创建数据连接。