跨租户数据连接
需要为不同租户中的 Azure 事件中心或 Azure 事件网格服务创建数据连接时,请使用 API 建立连接。
以下示例将使用 PowerShell 创建跨租户事件中心数据连接以及辅助令牌以进行身份验证。
- 如果还没有 Azure 订阅,可以在开始前创建一个 Azure 帐户。
- 使用 Tenant1 中的帐户 acc1@domain1.com 创建包含要引入的数据的事件中心。
- 使用 Tenant2 中的帐户 acc2@domain2.com 创建测试群集和数据库。
在 Azure 门户中,浏览到你的事件中心命名空间。
在左侧菜单中,选择“访问控制(IAM)”>“添加角色分配”。
在“添加角色分配”窗口中填写以下信息,然后选择“保存”。
设置 建议的值 角色 Azure 事件中心数据所有者 将访问权限分配到 用户、组或服务主体 Select Tenant2 中的用户的电子邮件地址 收到所选地址 (
acc2@domain2.com account
) 的电子邮件邀请时,接受该邀请。
在开始之前,需要 Get-AzCachedAccessToken
函数获取 Tenant1 的访问令牌。 可以在 PowerShell 库中找到此函数的源代码。 可以将此代码包含在个人 PowerShell 配置文件中,以便更轻松地调用它,或者在以下步骤中运行并使用它。
运行以下命令连接到 Tenant1:
Connect-AzAccount -Environment AzureChinaCloud
添加包含 Tenant1 令牌的变量:
$tokenfromtenant1 = Get-AzCachedAccessToken
添加 Tenant1 的辅助令牌变量:
$auxpat="Bearer $tokenfromtenant1"
授予
acc1@domain1.com
对群集的访问权限。设置群集的订阅 ID:
Set-AzContext -SubscriptionId "<subscription ID>"
添加包含 Tenant2 令牌的变量:
$tokenfromtenant2 = Get-AzCachedAccessToken
添加要用作主令牌的
pat
变量:$pat="Bearer $tokenfromtenant2"
添加要在调用 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>"}}'
添加要在调用 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"
添加
acc1@domain1.com
作为群集的参与者。调用以下使用先前定义的变量的 Web 请求。
Invoke-WebRequest -Headers @{Authorization = $pat; 'x-ms-authorization-auxiliary' = $auxpat} -Uri $adxdcuri -Body $requestbody -Method PUT -ContentType 'application/json'
现在应可以在 Azure 门户中查看新创建的数据连接。
备注
如果在事件中心中撤销了用于建立数据连接的访问权限,请确保删除数据连接。 否则,即使在事件中心中撤销了访问权限,Azure 数据资源管理器仍会继续引入数据。