Mandantenübergreifende Datenverbindung
Wenn Sie eine Datenverbindung für einen Azure Event Hubs- oder Azure Event Grid-Dienst in einem anderen Mandanten erstellen müssen, verwenden Sie die Create Data Connections API, um die Verbindung zu erstellen.
In diesem Artikel erfahren Sie, wie Sie Mithilfe von PowerShell eine mandantenübergreifende Event Hubs-Datenverbindung erstellen und Hilfstoken authentifizieren können.
Voraussetzungen
- Wenn Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Azure-Konto erstellen, bevor Sie beginnen.
- Erstellen Sie einen Event Hub in Tenant1. Dies ist der Mandant, der die Quellereignishubs hostet.
- Erstellen Sie einen Testcluster und eine Datenbank in Tenant2. Dies ist der Mandant, der den Zielcluster hosten soll.
- Ein einzelnes Entra-Konto mit Zugriff auf mandanten oder einen Dienstprinzipal mit mehreren Mandanten.
Erlaubnisse
Das Entra-Konto oder der Dienstprinzipal mit mehreren Mandanten muss mindestens über die folgenden Berechtigungen verfügen:
- Daten-Explorer: Mitwirkender
- Event Hubs-Namespace: Azure Event Hubs Data Owner
Hinweis
Das Konto kann lokal oder Gast in Mandant1 oder Mandant2 sein, sofern es über die erforderlichen Berechtigungen verfügt. Berechtigungen müssen auf Namespaceebene und nicht auf der Event Hubs-Ebene vorhanden sein.
Zuweisen einer Rolle zum Entra-Konto oder Dienstprinzipal in Event Hubs für Mandant1
Navigieren Sie im Azure-Portal zu Ihrem Event Hubs-Namespace.
Wählen Sie im linken Menü Access Control (IAM)>Rollenzuweisungen hinzufügenaus.
Geben Sie im Fenster Rollenzuweisung hinzufügen die Einstellungen in die Tabelle ein, und wählen Sie dann Speichernaus.
Einstellung Empfohlener Wert Role Azure Event Hubs-Datenbesitzer Zugriff zuweisen zu Benutzer, Gruppe oder Dienstprinzipal Auswählen Die E-Mail-Adresse des Entra-Benutzers oder der Dienstprinzipal-ID
Zuweisen einer Rolle zum Entra-Konto oder Dienstprinzipal im Cluster für Mandant2
Navigieren Sie im Azure-Portal zu Ihrem Daten-Explorer-Cluster.
Wählen Sie im linken Menü Access Control (IAM)>Rollenzuweisungen hinzufügenaus.
Geben Sie im Fenster Rollenzuweisung hinzufügen die Einstellungen in der Tabelle ein, und wählen Sie dann Speichernaus.
Einstellung Empfohlener Wert Role Mitwirkender Zugriff zuweisen zu Benutzer, Gruppe oder Dienstprinzipal Auswählen Die E-Mail-Adresse des Entra-Benutzers oder der Dienstprinzipal-ID
Einrichten der mandantenübergreifenden Datenverbindung
Richten Sie eine mandantenübergreifende Datenverbindung zwischen dem Cluster und Event Hubs mithilfe von PowerShell ein.
Bevor Sie mit der beginnen
Erstellen Sie die Get-AzCachedAccessToken
-Funktion, um das Zugriffstoken für Tenant1abzurufen. Der Quellcode für die Funktion findet sich im PowerShell-Katalog. Sie können diesen Code in Ihr persönliches PowerShell-Profil einschließen, um den Aufruf zu vereinfachen, oder Sie können ihn ausführen und dann in diesen Schritten verwenden.
Führen Sie den folgenden Befehl aus, um eine Verbindung mit dem Event Hubs-Abonnement in Tenant1herzustellen:
Connect-AzAccount -TenantId <Tenant ID> -Subscription "<SubscriptionName>"
Fügen Sie eine Variable hinzu, um das Zugriffstoken für Tenant1zu speichern:
$tokenfromtenant1 = Get-AzCachedAccessToken
Fügen Sie eine Zusatztokenvariable für Tenant1 hinzu:
$auxpat="Bearer $tokenfromtenant1"
Führen Sie den folgenden Befehl aus, um eine Verbindung mit dem Clusterabonnement in Tenant2herzustellen:
Connect-AzAccount -TenantId <Tenant ID> -SubscriptionId "<SubscriptionName>"
Fügen Sie eine Variable mit dem Token für Tenant2 hinzu:
$tokenfromtenant2 = Get-AzCachedAccessToken
Fügen Sie eine
pat
-Variable hinzu, die als primäres Token verwendet werden soll:$pat="Bearer $tokenfromtenant2"
Fügen Sie eine HTTP-Body-Anforderungsvariable hinzu, die als Event Hub-Ressource verwendet werden soll, wenn Sie die Webanforderung aufrufen:
$requestbody ='{"location": "Australia East","kind": "EventHub","properties": { "eventHubResourceId": "/subscriptions/<subscription ID>/resourceGroups/<ResourceGroupName>/providers/Microsoft.EventHub/namespaces/<EventHubNamespaceName>/eventhubs/<EventHubName>","consumerGroup": "$Default","dataFormat": "JSON", "tableName": "<ADXTableName>", "mappingRuleName": "<ADXTableMappingName>"}}'
Fügen Sie eine URI-Variable hinzu, die als Clusterressource verwendet werden soll, wenn Sie die Webanforderung aufrufen:
$adxdcuri="https://management.azure.com/subscriptions/<subscriptionID>/resourceGroups/<resource group name>/providers/Microsoft.Kusto/clusters/<ADXClusterName>/databases/<ADXdbName>/dataconnections/<ADXDataConnectionName>?api-version=2020-02-15"
Rufen Sie die folgende Webanforderung auf, die die zuvor definierten Variablen verwendet, um die Datenverbindung zu erstellen:
Invoke-WebRequest -Headers @{Authorization = $pat; 'x-ms-authorization-auxiliary' = $auxpat} -Uri $adxdcuri -Body $requestbody -Method PUT -ContentType 'application/json'
Nach Abschluss der
Stellen Sie sicher, dass die neu erstellte Datenverbindung nun im Azure-Portal angezeigt wird.
Optionaler: Nach dem Herstellen der Datenverbindung können Sie die zuvor erteilten Berechtigungen für das Entra-Konto oder den Dienstprinzipal widerrufen oder löschen. Da die Clusteraufnahme die Event Hubs-Schlüssel verwendet, sind diese Berechtigungen nicht mehr erforderlich.
Wichtig
Wenn die primären oder sekundären Event Hubs-Schlüssel gedreht werden, funktioniert die Datenaufnahme möglicherweise nicht mehr. In diesem Fall müssen Sie die Datenverbindung ablegen und neu erstellen.