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. Die Azure-Plattform verwaltet die Identität. Sie müssen 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 Sie Ihren Azure Data Explorer-Cluster über Abonnements oder Mandanten hinweg migrieren. Die App muss eine neue Identität abrufen, die Sie abrufen können, indem Sie eine vom System zugewiesene Identität entfernen und dann eine vom System zugewiesene Identität hinzufügen. Außerdem müssen Sie die Zugriffsrichtlinien nachgelagerter Ressourcen aktualisieren, um die neue Identität zu verwenden.
Codebeispiele, die auf früheren SDK-Versionen basieren, finden Sie im archivierten Artikel.
Typen verwalteter Identitäten
Sie können Ihrem Azure Data Explorer-Cluster zwei Arten von Identitäten gewähren:
Vom System zugewiesene Identität: An Ihren Cluster gebunden und gelöscht, wenn Sie die Ressource löschen. Ein Cluster kann nur über eine einzelne systemseitig zugewiesene Identität verfügen.
Vom Benutzer zugewiesene Identität: Eine eigenständige Azure-Ressource, die Sie Ihrem Cluster zuweisen können. 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 Sie den Cluster löschen. Ein Cluster kann nur über eine einzelne systemseitig zugewiesene Identität verfügen. Wenn Sie einen Cluster mit einer vom System zugewiesenen Identität erstellen, müssen Sie eine zusätzliche Eigenschaft für den Cluster festlegen. Fügen Sie die vom System zugewiesene Identität mithilfe der Azure-Portal-, C#- oder Resource Manager-Vorlage hinzu, wie in den folgenden Abschnitten beschrieben.
Hinzufügen einer vom System zugewiesenen Identität mithilfe des Azure-Portals
Melden Sie sich beim Azure-Portal an.
Neuer Azure Data Explorer-Cluster
Erstellen eines Azure Data Explorer-Clusters
Wählen Sie auf der Registerkarte "Sicherheit" unter "System 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.
Im Bereich "Identität " unter der Registerkarte " System zugewiesen ":
- 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 Ihres Clusters
Erstellen oder aktualisieren Sie Ihren Cluster mithilfe der Identity Eigenschaft:
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 Sie ihren Cluster erfolgreich erstellt oder mit einer Identität aktualisiert haben:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Wenn das Ergebnis ProvisioningState mit dem Wert Succeeded enthält, wurde der Cluster erstellt oder aktualisiert und weist die folgenden Eigenschaften auf:
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 vom System zugewiesenen Identität mithilfe einer Azure Resource Manager-Vorlage
Sie können eine Azure Resource Manager-Vorlage verwenden, um die Bereitstellung Ihrer Azure-Ressourcen zu automatisieren. Weitere Informationen zum Bereitstellen in Azure Data Explorer finden Sie unter Erstellen eines Azure Data Explorer-Clusters und einer Datenbank mithilfe einer Azure Resource Manager-Vorlage.
Wenn Sie den vom System zugewiesenen Typ hinzufügen, weisen Sie Azure an, die Identität für Ihren Cluster zu erstellen und zu verwalten. Sie können eine Ressource beliebigen Typs Microsoft.Kusto/clusters mit einer Identität erstellen, indem Sie die folgende Eigenschaft in die Ressourcendefinition einschließen:
{
"identity": {
"type": "SystemAssigned"
}
}
Zum Beispiel:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
Hinweis
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 Sie den Cluster erstellen, verfügt er über die folgenden zusätzlichen Eigenschaften:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<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
Wenn Sie eine vom System zugewiesene Identität entfernen, löschen Sie sie auch aus der Microsoft Entra-ID. Vom System zugewiesene Identitäten werden auch automatisch aus der Microsoft Entra-ID entfernt, wenn Sie die Clusterressource löschen. Sie können eine vom System zugewiesene Identität entfernen, indem Sie das Feature deaktivieren. Verwenden Sie die Azure-Portal-, C#- oder Resource Manager-Vorlage, um die vom System zugewiesene Identität wie im folgenden Abschnitt beschrieben zu entfernen.
Entfernen einer vom System zugewiesenen Identität mithilfe des Azure-Portals
Melden Sie sich beim Azure-Portal an.
Wählen Sie im linken Bereich des Portals Einstellungen>Identität aus.
Im Bereich "Identität " unter der Registerkarte " System zugewiesen ":
- 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 Identitätsbereich wird auf denselben Zustand wie vor dem Hinzufügen einer vom System zugewiesenen Identität zurückgesetzt.
Entfernen einer vom System zugewiesenen Identität mithilfe von C#
Führen Sie den folgenden Code aus, um die vom System 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 vom System zugewiesenen Identität mithilfe einer Azure Resource Manager-Vorlage
Führen Sie den folgenden Code aus, um die vom System zugewiesene Identität zu entfernen:
{
"identity": {
"type": "None"
}
}
Hinweis
Wenn der Cluster sowohl system-zugewiesene als auch vom Benutzer zugewiesene Identitäten gleichzeitig hat, ist die Eigenschaft UserAssignedtype, nachdem Sie die systemzugewiesene Identität entfernt haben.
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. Um einen Cluster mit einer vom Benutzer zugewiesenen Identität zu erstellen, müssen Sie eine zusätzliche Eigenschaft für den Cluster festlegen. Fügen Sie die vom Benutzer zugewiesene Identität mithilfe der Azure-Portal-, C#- oder Resource Manager-Vorlage hinzu, wie in den folgenden Abschnitten beschrieben.
Hinzufügen einer vom Benutzer zugewiesenen Identität mithilfe des Azure-Portals
Melden Sie sich beim Azure-Portal an.
Erstellen Sie eine benutzerseitig verwaltete Identitätsressource.
Öffnen Sie einen vorhandenen Azure Data Explorer-Cluster.
Wählen Sie im linken Bereich des Portals Einstellungen>Identität aus.
Wählen Sie auf der Registerkarte Benutzerseitig zugewiesen die Option Hinzufügen aus.
Suchen Sie nach der zuvor erstellten Identität, und wählen Sie sie aus. Wählen Sie Hinzufügen.
Hinzufügen einer benutzerseitig zugewiesenen Identität mithilfe 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 Ihres Clusters
Erstellen oder aktualisieren Sie Ihren Cluster mithilfe der Identity Eigenschaft:
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 Sie ihren Cluster erfolgreich erstellt oder mit einer Identität aktualisiert haben:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Wenn das Ergebnis ProvisioningState mit dem Wert Succeeded enthält, wurde der Cluster erstellt oder aktualisiert und weist die folgenden Eigenschaften auf:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
Der PrincipalId ist ein eindeutiger Bezeichner für die Identität, den die Microsoft Entra-Verwaltung verwendet.
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 vom Benutzer zugewiesenen Identität mithilfe einer Azure Resource Manager-Vorlage
Sie können eine Azure Resource Manager-Vorlage verwenden, um die Bereitstellung Ihrer Azure-Ressourcen zu automatisieren. Weitere Informationen zum Bereitstellen in Azure Data Explorer finden Sie unter Erstellen eines Azure Data Explorer-Clusters und einer Datenbank mithilfe einer Azure Resource Manager-Vorlage.
Sie können eine Ressource des Typs Microsoft.Kusto/clusters mit einer benutzerzugewiesenen Identität erstellen, indem Sie die folgende Eigenschaft in die Ressourcendefinition einfügen. Ersetzen Sie <RESOURCEID> durch die Ressourcen-ID der gewünschten Identität.
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
Zum Beispiel:
{
"apiVersion": "2019-09-07",
"type": "Microsoft.Kusto/clusters",
"name": "[variables('clusterName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {}
}
},
"dependsOn": [
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
]
}
Wenn Sie den Cluster erstellen, verfügt er über die folgenden zusätzlichen Eigenschaften:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
Der PrincipalId ist ein eindeutiger Bezeichner für die Identität, die von 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. Legen Sie in diesem Fall die type Eigenschaft auf SystemAssigned,UserAssigned.
Entfernen einer benutzerseitig zugewiesenen verwalteten Identität aus einem Cluster
Entfernen Sie die vom Benutzer zugewiesene Identität mithilfe der Azure-Portal-, C#- oder Resource Manager-Vorlage, wie im folgenden Abschnitt beschrieben.
Entfernen einer vom Benutzer zugewiesenen verwalteten Identität mithilfe des Azure-Portals
Melden Sie sich beim Azure-Portal an.
Wählen Sie im linken Bereich des Portals Einstellungen> und 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 Identitätsbereich wird auf dieselbe Bedingung wie vor dem Hinzufügen der vom Benutzer zugewiesenen Identität zurückgesetzt.
Entfernen einer vom Benutzer zugewiesenen Identität mithilfe von C#
Führen Sie den folgenden Code aus, um die vom Benutzer 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 vom Benutzer zugewiesenen Identität mithilfe einer Azure Resource Manager-Vorlage
Führen Sie den folgenden Code aus, um die vom Benutzer zugewiesene Identität zu entfernen:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
Hinweis
- Legen Sie die Werte von Identitäten auf NULL fest, um sie zu entfernen. Diese Aktion wirkt sich nicht auf andere vorhandene Identitäten aus.
- Setzen Sie die
type-Eigenschaft auf None, um alle vom Benutzer zugewiesenen Identitäten zu entfernen.
- Wenn der Cluster sowohl über systemzugewiesene als auch über benutzerzugewiesene Identitäten verfügt, legen Sie die Eigenschaft
type auf SystemAssigned,UserAssigned mit den zu entfernenden Identitäten fest, oder legen Sie die Eigenschaft auf SystemAssigned fest, um alle benutzerzugewiesenen Identitäten zu entfernen.
Zugehöriger Inhalt