跨租户数据连接

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

以下示例将使用 PowerShell 创建跨租户事件中心数据连接以及辅助令牌以进行身份验证。

先决条件

在事件中心中向 Tenant2 分配角色

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

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

    事件中心命名空间的屏幕截图。

  3. 在“添加角色分配”窗口中填写以下信息,然后选择“保存”。

    Azure 门户中“添加角色分配”窗口的屏幕截图。

    设置 建议的值
    角色 Azure 事件中心数据所有者
    将访问权限分配到 用户、组或服务主体
    Select Tenant2 中的用户的电子邮件地址
  4. 收到所选地址 (acc2@domain2.com account) 的电子邮件邀请时,接受该邀请。

获取 Tenant1 的访问令牌

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

  1. 运行以下命令连接到 Tenant1:

    Connect-AzAccount -Environment AzureChinaCloud
    
  2. 添加包含 Tenant1 令牌的变量:

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

    $auxpat="Bearer $tokenfromtenant1"
    
  4. 授予 acc1@domain1.com 对群集的访问权限。

  5. 设置群集的订阅 ID:

    Set-AzContext -SubscriptionId "<subscription ID>"
    
  6. 添加包含 Tenant2 令牌的变量:

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

    $pat="Bearer $tokenfromtenant2"
    
  8. 添加要在调用 Web 请求时使用的 HTTP 正文请求变量:

    $requestbody ='{"location": "China East 2","kind": "EventHub","properties": { "eventHubResourceId": "/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.EventHub/namespaces/<event hub namespace name>/eventhubs/<event hub name>","consumerGroup": "$Default","dataFormat": "JSON", "tableName": "<ADX table name>", "mappingRuleName": "<ADX table mapping name>"}}'
    
  9. 添加要在调用 Web 请求时使用的 URI 变量:

    $adxdcuri="https://management.chinacloudapi.cn/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Kusto/clusters/<adx cluster name>/databases/<adx db name>/dataconnections/<adx data connection name>?api-version=2020-02-15"
    
  10. 添加 acc1@domain1.com 作为群集的参与者。

  11. 调用以下使用先前定义的变量的 Web 请求。

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

现在应可以在 Azure 门户中查看新创建的数据连接。

备注

如果在事件中心中撤销了用于建立数据连接的访问权限,请确保删除数据连接。 否则,即使在事件中心中撤销了访问权限,Azure 数据资源管理器仍会继续引入数据。