Konfigurieren verwalteter Identitäten für Ihren Azure Data Explorer-Cluster
Artikel
Eine verwaltete Identität von Microsoft Entra-ID ermöglicht Ihrem Cluster den Zugriff auf andere von Microsoft Entra geschützte Ressourcen wie Azure Key Vault. Da die Identität von der Azure-Plattform verwaltet wird, müssen Sie keine Geheimnisse bereitstellen oder rotieren.
In diesem Artikel erfahren Sie, wie Sie verwaltete Identitäten zu Ihrem Cluster hinzufügen und entfernen. Weitere Informationen zu verwalteten Identitäten finden Sie unter Übersicht über verwaltete Identitäten.
Hinweis
Verwaltete Identitäten für Azure Data Explorer verhalten sich nicht wie erwartet, wenn Ihr Azure Data Explorer-Cluster abonnement- oder mandantenübergreifend migriert wird. Die App muss eine neue Identität abrufen, die durch Entfernen einer vom System zugewiesenen Identität und anschließendes Hinzufügen einer vom System zugewiesenen Identität erfolgen kann. Darüber hinaus müssen auch Zugriffsrichtlinien nachgeschalteter Ressourcen aktualisiert werden, um die neue Identität zu verwenden.
Codebeispiele, die auf früheren SDK-Versionen basieren, finden Sie im archivierten Artikel.
Typen verwalteter Identitäten
Ihrem Azure Data Explorer-Cluster können zwei Arten von Identitäten zugewiesen werden:
Systemseitig zugewiesene Identität: Diese Identität ist an Ihren Cluster gebunden und wird gelöscht, wenn die Ressource gelöscht wird. Ein Cluster kann nur über eine einzelne systemseitig zugewiesene Identität verfügen.
Benutzerseitig zugewiesene Identität: Eine eigenständige Azure-Ressource, die Ihrem Cluster zugewiesen werden kann. Ein Cluster kann über mehrere benutzerseitig zugewiesene Identitäten verfügen.
Hinzufügen einer systemseitig zugewiesenen Identität
Weisen Sie eine vom System zugewiesene Identität zu, die an Ihren Cluster gebunden ist und gelöscht wird, wenn Ihr Cluster gelöscht wird. Ein Cluster kann nur über eine einzelne systemseitig zugewiesene Identität verfügen. Für die Erstellung eines Clusters mit einer systemseitig zugewiesenen Identität muss eine zusätzliche Eigenschaft für den Cluster festgelegt werden. Fügen Sie die systemseitig zugewiesene Identität mithilfe des Azure-Portals, von C# oder einer Resource Manager-Vorlage hinzu, wie nachfolgend beschrieben.
Wählen Sie auf der Registerkarte Sicherheit >Systemseitig zugewiesene Identität die Option Ein aus. Um die systemseitig zugewiesene Identität zu entfernen, wählen Sie Aus aus.
Wählen Sie Weiter:Tags > oder Überprüfen und erstellen aus, um den Cluster zu erstellen.
Vorhandener Azure Data Explorer-Cluster
Öffnen Sie einen vorhandenen Azure Data Explorer-Cluster.
Wählen Sie im linken Bereich des Portals Einstellungen>Identität aus.
Gehen Sie im Bereich Identität auf der Registerkarte Systemseitig zugewiesen wie folgt vor:
Schieben Sie den Schieberegler Status auf Ein.
Wählen Sie Speichern aus.
Wählen Sie im Popupfenster Ja aus.
Nach einigen Minuten wird auf dem Bildschirm Folgendes angezeigt:
Objekt-ID: Wird für kundenseitig verwaltete Schlüssel verwendet.
Berechtigungen: Wählen Sie die entsprechenden Rollenzuweisungen aus.
Hinzufügen einer systemseitig zugewiesenen Identität unter Verwendung von C#
Voraussetzungen
Gehen Sie wie folgt vor, um eine verwaltete Identität mithilfe des C#-Clients für Azure Data Explorer einzurichten:
Erstellen oder aktualisieren Sie Ihren Cluster mithilfe der Eigenschaft Identity:
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";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var clusters = resourceGroup.GetKustoClusters();
var clusterName = "mykustocluster";
var clusterData = new KustoClusterData(
location: AzureLocation.CentralUS,
sku: new KustoSku(KustoSkuName.StandardE8adsV5, KustoSkuTier.Standard) { Capacity = 5 }
) { Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssigned) };
await clusters.CreateOrUpdateAsync(WaitUntil.Completed, clusterName, clusterData);
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Ihr Cluster erfolgreich mit einer Identität erstellt oder aktualisiert wurde:
Wenn das Ergebnis ProvisioningState mit dem Wert Succeeded enthält, wurde der Cluster erstellt oder aktualisiert und sollte über folgende Eigenschaften verfügen:
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId und TenantId werden durch GUIDs ersetzt. Die TenantId Eigenschaft identifiziert den Microsoft Entra-Mandanten, zu dem die Identität gehört. PrincipalId ist ein eindeutiger Bezeichner für die neue Identität des Clusters. In Microsoft Entra ID weist der Dienstprinzipal den gleichen Namen auf, den Sie für Ihre App Service- oder Azure Functions-Instanz vergeben haben.
Hinzufügen einer systemseitig zugewiesenen Identität unter Verwendung einer Azure Resource Manager-Vorlage
Durch Hinzufügen des systemseitig zugewiesenen Typs wird Azure angewiesen, die Identität für Ihrem Cluster zu erstellen und zu verwalten. Ressourcen vom Typ Microsoft.Kusto/clusters können mit einer Identität erstellt werden, indem die folgende Eigenschaft in der Ressourcendefinition eingeschlossen wird:
Ein Cluster kann gleichzeitig sowohl über systemseitig als auch über benutzerseitig zugewiesene Identitäten verfügen. Die Eigenschaft type hätte dann den Wert SystemAssigned,UserAssigned.
Wenn der Cluster erstellt wird, verfügt er über folgende zusätzliche Eigenschaften:
<TENANTID> und <PRINCIPALID> werden durch GUIDs ersetzt. Die TenantId Eigenschaft identifiziert den Microsoft Entra-Mandanten, zu dem die Identität gehört. PrincipalId ist ein eindeutiger Bezeichner für die neue Identität des Clusters. In Microsoft Entra ID weist der Dienstprinzipal den gleichen Namen auf, den Sie für Ihre App Service- oder Azure Functions-Instanz vergeben haben.
Entfernen einer systemseitig zugewiesenen Identität
Durch das Entfernen einer vom System zugewiesenen Identität wird sie auch aus der Microsoft Entra-ID gelöscht. Vom System zugewiesene Identitäten werden auch automatisch aus der Microsoft Entra-ID entfernt, wenn die Clusterressource gelöscht wird. Eine systemseitig zugewiesene Identität kann durch Deaktivieren des Features entfernt werden. Entfernen Sie die systemseitig zugewiesene Identität mithilfe des Azure-Portals, von C# oder einer Resource Manager-Vorlage, wie nachfolgend beschrieben.
Wählen Sie im linken Bereich des Portals Einstellungen>Identität aus.
Gehen Sie im Bereich Identität auf der Registerkarte Systemseitig zugewiesen wie folgt vor:
Schieben Sie den Schieberegler Status auf Aus.
Wählen Sie Speichern aus.
Wählen Sie im Popupfenster Ja aus, um die systemseitig zugewiesene Identität zu deaktivieren. Der Bereich Identität wechselt wieder in den gleichen Zustand wie vor Hinzufügen der systemseitig zugewiesenen Identität.
Entfernen einer systemseitig zugewiesenen Identität mithilfe von C#
Führen Sie Folgendes aus, um die systemseitig zugewiesene Identität zu entfernen:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Entfernen einer systemseitig zugewiesenen Identität mithilfe einer Azure Resource Manager-Vorlage
Führen Sie Folgendes aus, um die systemseitig zugewiesene Identität zu entfernen:
{
"identity": {
"type": "None"
}
}
Hinweis
Wenn der Cluster gleichzeitig systemseitig und benutzerseitig zugewiesene Identitäten enthält, lautet die Eigenschaft type nach dem Entfernen der systemseitig zugewiesenen Identität UserAssigned.
Hinzufügen einer benutzerseitig zugewiesenen Identität
Weisen Sie Ihrem Cluster eine benutzerseitig zugewiesene verwaltete Identität zu. Ein Cluster kann über mehrere benutzerseitig zugewiesene Identitäten verfügen. Für die Erstellung eines Clusters mit einer benutzerseitig zugewiesenen Identität muss eine zusätzliche Eigenschaft für den Cluster festgelegt werden. Fügen Sie die benutzerseitig zugewiesene Identität mithilfe des Azure-Portals, von C# oder einer Resource Manager-Vorlage hinzu, wie nachfolgend beschrieben.
Erstellen oder aktualisieren Sie Ihren Cluster mithilfe der Eigenschaft Identity:
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";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var clusters = resourceGroup.GetKustoClusters();
var clusterName = "mykustocluster";
var userIdentityResourceId = new ResourceIdentifier($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>");
var clusterData = new KustoClusterData(
location: AzureLocation.CentralUS,
sku: new KustoSku(KustoSkuName.StandardE8adsV5, KustoSkuTier.Standard) { Capacity = 5 }
)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned)
{
UserAssignedIdentities = { { userIdentityResourceId, new UserAssignedIdentity() } }
}
};
await clusters.CreateOrUpdateAsync(WaitUntil.Completed, clusterName, clusterData);
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Ihr Cluster erfolgreich mit einer Identität erstellt oder aktualisiert wurde:
Wenn das Ergebnis ProvisioningState mit dem Wert Succeeded enthält, wurde der Cluster erstellt oder aktualisiert und sollte über folgende Eigenschaften verfügen:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
PrincipalId ist ein eindeutiger Bezeichner für die Identität, der bei der Microsoft Entra-Verwaltung verwendet wird. ClientId ist ein eindeutiger Bezeichner für die neue Identität der Anwendung, der bei Runtimeaufrufen angibt, welche Identität verwendet werden soll.
Hinzufügen einer benutzerseitig zugewiesenen Identität unter Verwendung einer Azure Resource Manager-Vorlage
Ressourcen vom Typ Microsoft.Kusto/clusters können mit einer benutzerseitig zugewiesenen Identität erstellt werden, indem die folgende Eigenschaft in die Ressourcendefinition eingeschlossen wird. Ersetzen Sie hierbei <RESOURCEID> durch die Ressourcen-ID der gewünschten Identität:
PrincipalId ist ein eindeutiger Bezeichner für die Identität, der bei der Microsoft Entra-Verwaltung verwendet wird. ClientId ist ein eindeutiger Bezeichner für die neue Identität der Anwendung, der bei Runtimeaufrufen angibt, welche Identität verwendet werden soll.
Hinweis
Ein Cluster kann gleichzeitig sowohl über systemseitig als auch über benutzerseitig zugewiesene Identitäten verfügen. In diesem Fall hat die type-Eigenschaft den Wert SystemAssigned,UserAssigned.
Entfernen einer benutzerseitig zugewiesenen verwalteten Identität aus einem Cluster
Entfernen Sie die benutzerseitig zugewiesene Identität mithilfe des Azure-Portals, von C# oder einer Resource Manager-Vorlage, wie nachfolgend beschrieben.
Wählen Sie im linken Bereich des Portals Einstellungen>Identität aus.
Wählen Sie die Registerkarte Benutzerseitig zugewiesen aus.
Suchen Sie nach der zuvor erstellten Identität, und wählen Sie sie aus. Wählen Sie Entfernen.
Wählen Sie im Popupfenster Ja aus, um die benutzerseitig zugewiesene Identität zu entfernen. Der Bereich Identität wechselt wieder in den gleichen Zustand wie vor dem Hinzufügen der benutzerseitig zugewiesenen Identität.
Entfernen einer benutzerseitig zugewiesenen Identität mithilfe von C#
Führen Sie Folgendes aus, um die benutzerseitig zugewiesene Identität zu entfernen:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterUpdate = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned)
{
UserAssignedIdentities = { { userIdentityResourceId, null } }
}
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterUpdate);
Entfernen einer benutzerseitig zugewiesenen Identität unter Verwendung einer Azure Resource Manager-Vorlage
Führen Sie Folgendes aus, um die benutzerseitig zugewiesene Identität zu entfernen:
Legen Sie zum Entfernen von Identitäten deren Werte auf NULL fest. Dies wirkt sich nicht auf alle anderen vorhandenen Identitäten aus.
Wenn Sie alle benutzerseitig zugewiesenen Identitäten entfernen möchten, muss für die Eigenschaft type der Wert None festgelegt werden.
Wenn der Cluster gleichzeitig systemseitig und benutzerseitig zugewiesene Identitäten enthält, sind für die Eigenschaft type der Wert SystemAssigned,UserAssigned sowie die zu entfernenden Identitäten angegeben. Alternativ wird SystemAssigned festgelegt, um alle benutzerseitig zugewiesenen Identitäten zu entfernen.