Hinzufügen von Clusterprinzipalen für Azure Data Explorer
Azure-Daten-Explorer ist ein schneller und hochgradig skalierbarer Dienst zur Untersuchung von Daten (Protokoll- und Telemetriedaten). In diesem Artikel erfahren Sie, wie Sie Clusterprinzipale für Azure Data Explorer mithilfe von C#, Python oder einer Arm-Vorlage (Azure Resource Manager) hinzufügen.
Codebeispiele, die auf früheren SDK-Versionen basieren, finden Sie im archivierten Artikel.
Voraussetzungen
Die Voraussetzungen variieren je nach der Methode, die zum Hinzufügen des Prinzipals verwendet wird. Wählen Sie die relevante Registerkarte für Ihre bevorzugte Methode aus.
In der folgenden Liste werden die Voraussetzungen zum Hinzufügen eines Clusterprinzipals mit C# beschrieben.
- Ein Microsoft-Konto oder eine Microsoft Entra Benutzeridentität. Ein Azure-Abonnement ist nicht erforderlich.
- Schnellstart: Erstellen eines Azure Data Explorer-Clusters und einer Datenbank. Erstellen eines Clusters und einer Datenbank
- Visual Studio 2022 Community Edition. Aktivieren Sie die Azure-Entwicklung während des Visual Studio-Setups.
- Eine Microsoft Entra Anwendung und Dienstprinzipal, die auf Ressourcen zugreifen können. Speichern Sie die Verzeichnis-ID (Mandanten-ID),die Anwendungs-ID und den geheimen Clientschlüssel.
- Installieren Sie Azure.ResourceManager.Kusto.
- Installieren Sie Azure.Identity für die Authentifizierung.
Hinzufügen eines Clusterprinzipals
Führen Sie den folgenden Code aus, um einen Clusterprinzipal hinzuzufügen:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, subscriptionId);
var resourceGroupName = "testrg";
//The cluster that is created as part of the Prerequisites
var clusterName = "mykustocluster";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(clusterName)).Value;
var clusterPrincipalAssignments = cluster.GetKustoClusterPrincipalAssignments();
var clusterPrincipalAssignmentName = "mykustoclusterprincipalassignment";
var principalId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //User email, application ID, or security group name
var role = KustoClusterPrincipalRole.AllDatabasesAdmin; //AllDatabasesAdmin or AllDatabasesViewer
var tenantIdForPrincipal = new Guid("xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx");
var principalType = KustoPrincipalAssignmentType.App; //User, App, or Group
var clusterPrincipalAssignmentData = new KustoClusterPrincipalAssignmentData
{
ClusterPrincipalId = principalId, Role = role, PrincipalType = principalType, TenantId = tenantIdForPrincipal
};
await clusterPrincipalAssignments.CreateOrUpdateAsync(
WaitUntil.Completed, clusterPrincipalAssignmentName, clusterPrincipalAssignmentData
);
Einstellung | Empfohlener Wert | Feldbeschreibung |
---|---|---|
tenantId | xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx | Ihre Mandanten-ID. Wird auch als Verzeichnis-ID bezeichnet. |
subscriptionId | xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx | Die Abonnement-ID, die Sie für die Ressourcenerstellung verwenden. |
clientId | xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx | Die Client-ID der Anwendung, die auf Ressourcen in Ihrem Mandanten zugreifen kann. |
clientSecret | PlaceholderClientSecret | Das Clientgeheimnis der Anwendung, die auf Ressourcen in Ihrem Mandanten zugreifen kann. |
resourceGroupName | testrg | Der Name der Ressourcengruppe, die Ihren Cluster enthält. |
clusterName | mykustocluster | Der Name Ihres Clusters. |
clusterPrincipalAssignmentName | mykustoclusterprincipalassignment | Der Name Ihrer Clusterprinzipalressource. |
principalId | xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx | Die Prinzipal-ID. Dies kann die E-Mail-Adresse des Benutzers, die Anwendungs-ID oder der Name der Sicherheitsgruppe sein. |
Rolle (role) | AllDatabasesAdmin | Die Rolle Ihres Clusterprinzipals, die „AllDatabasesAdmin“, „AllDatabasesMonitor“ oder „AllDatabasesViewer“ sein kann. |
tenantIdForPrincipal | xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx | Die Mandanten-ID des Prinzipals. |
principalType | App | Der Typ des Prinzipals, der „Benutzer“, „App“ oder „Gruppe“ sein kann. |