如果需要在不同的租户中为 Azure 事件中心或 Azure 事件网格服务创建数据连接,请使用 创建数据连接 API 生成连接。
本文介绍如何使用 PowerShell 创建跨租户事件中心数据连接,并 辅助令牌 进行身份验证。
- 如果还没有 Azure 订阅,可以在开始前创建一个 Azure 帐户。
- 在 Tenant1中创建事件中心。 这是托管源事件中心的租户。
- 在 Tenant2中创建 测试群集和数据库。 这是托管目标群集的租户。
- 有权访问两个租户或 多租户服务主体的单个 Entra 帐户。
Entra 帐户或多租户服务主体必须至少具有以下权限:
- 数据资源管理器:参与者
- 事件中心命名空间:Azure 事件中心数据所有者
备注
该帐户可以是 Tenant1 或 Tenant2 的本地帐户或来宾,只要该帐户具有先决条件权限。 权限必须位于命名空间级别,而不是在事件中心级别。
在 Azure 门户中,浏览到你的事件中心命名空间。
在左侧菜单中,选择 访问控制(IAM)>添加角色分配。
在“添加角色分配 窗口中,输入表中的设置,然后选择”保存 。
设置 建议的值 角色 Azure 事件中心数据所有者 将访问权限分配到 用户、组或服务主体 选择 Entra 用户或服务主体 ID 的电子邮件地址
在 Azure 门户中,浏览到数据资源管理器群集。
在左侧菜单中,选择 访问控制(IAM)>添加角色分配。
在“添加角色分配 窗口中,输入表中的设置,然后选择”保存 。
设置 建议的值 角色 参与者 将访问权限分配到 用户、组或服务主体 选择 Entra 用户或服务主体 ID 的电子邮件地址
使用 PowerShell 在群集与事件中心之间设置跨租户数据连接。
开始之前
创建 Get-AzCachedAccessToken
函数以获取 Tenant1的访问令牌。 可以在 PowerShell 库中找到此函数的源代码。 可以将此代码包含在个人 PowerShell 配置文件中,以便更轻松地调用它,或者在以下步骤中运行并使用它。
运行以下命令以连接到 Tenant1中的事件中心订阅:
Connect-AzAccount -Environment AzureChinaCloud -TenantId <Tenant ID> -Subscription "<SubscriptionName>"
添加变量以存储 Tenant1的访问令牌:
$tokenfromtenant1 = Get-AzCachedAccessToken
添加 Tenant1 的辅助令牌变量:
$auxpat="Bearer $tokenfromtenant1"
运行以下命令以连接到 Tenant2中的群集订阅:
Connect-AzAccount -Environment AzureChinaCloud -TenantId <Tenant ID> -SubscriptionId "<SubscriptionName>"
添加包含 Tenant2 令牌的变量:
$tokenfromtenant2 = Get-AzCachedAccessToken
添加要用作主令牌的
pat
变量:$pat="Bearer $tokenfromtenant2"
在调用 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>"}}'
在调用 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"
调用以下 Web 请求,该请求使用以前定义的变量来创建数据连接:
Invoke-WebRequest -Headers @{Authorization = $pat; 'x-ms-authorization-auxiliary' = $auxpat} -Uri $adxdcuri -Body $requestbody -Method PUT -ContentType 'application/json'
完成 后
验证现在是否可以在 Azure 门户中看到新创建的数据连接。
可选:建立数据连接后,可以撤销或删除之前授予的 Entra 帐户或服务主体的权限。 由于群集引入使用事件中心密钥,因此不再需要这些权限。
重要
如果轮换主事件中心或辅助事件中心密钥,则数据引入可能会停止工作。 在这种情况下,需要删除并重新创建数据连接。