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: Hierbei handelt es sich um eine eigenständige Azure-Ressource, die Ihrem Cluster zugewiesen werden kann. Ein Cluster kann über mehrere benutzerseitig zugewiesene Identitäten verfügen.
In diesem Artikel erfahren Sie, wie Sie systemseitig zugewiesene und benutzerseitig zugewiesene verwaltete Identitäten für Azure Data Explorer-Cluster hinzufügen und entfernen.
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. Zu diesem Zweck kann die Funktion deaktiviert und dann erneut aktiviert werden. Darüber hinaus müssen auch Zugriffsrichtlinien nachgeschalteter Ressourcen aktualisiert werden, um die neue Identität zu verwenden.
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 Sie eine Azure AD-Anwendung und einen Dienstprinzipal, der auf Ressourcen zugreifen kann. Sie fügen die Rollenzuweisung im Abonnementumfang hinzu und erhalten die erforderlichen Werte für Directory (tenant) ID, Application ID und Client Secret.
Erstellen oder Aktualisieren Ihres Clusters
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 authClient = ConfidentialClientApplicationBuilder.Create(clientId)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}")
.WithClientSecret(clientSecret)
.Build();
var result = authClient.AcquireTokenForClient(new[] { "https://management.core.windows.net/" }).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
var clusterName = "mykustocluster";
var clusterData = new Cluster(
location: "Central US",
sku: new AzureSku("Standard_E8ads_v5", "Standard", 5),
identity: new Identity(IdentityType.SystemAssigned)
);
await kustoManagementClient.Clusters.CreateOrUpdateAsync(resourceGroupName, 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;
var tenantGuid = clusterData.Identity.TenantId;
PrincipalId und TenantId werden durch GUIDs ersetzt. Die Eigenschaft TenantId gibt den Azure AD-Mandanten an, zu dem die Identität gehört.
PrincipalId ist ein eindeutiger Bezeichner für die neue Identität des Clusters. In Azure AD 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 Eigenschaft TenantId gibt den Azure AD-Mandanten an, zu dem die Identität gehört.
PrincipalId ist ein eindeutiger Bezeichner für die neue Identität des Clusters. In Azure AD 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 systemseitig zugewiesene Identität entfernen, wird sie auch aus Azure AD gelöscht. Systemseitig zugewiesene Identitäten werden außerdem automatisch aus Azure AD 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 clusterPatch = new ClusterUpdate(identity: new Identity(IdentityType.None));
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, 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 Sie eine Azure AD-Anwendung und einen Dienstprinzipal, der auf Ressourcen zugreifen kann. Sie fügen die Rollenzuweisung im Abonnementumfang hinzu und erhalten die erforderlichen Werte für Directory (tenant) ID, Application ID und Client Secret.
Erstellen oder Aktualisieren Ihres Clusters
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 authClient = ConfidentialClientApplicationBuilder.Create(clientId)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}")
.WithClientSecret(clientSecret)
.Build();
var result = authClient.AcquireTokenForClient(new[] { "https://management.core.windows.net/" }).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
var clusterName = "mykustocluster";
var userIdentityResourceId = $"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>";
var clusterData = new Cluster(
location: "Central US",
sku: new AzureSku("Standard_E8ads_v5", "Standard", 5),
identity: new Identity(
IdentityType.UserAssigned,
userAssignedIdentities: new Dictionary<string, IdentityUserAssignedIdentitiesValue>(1)
{
{ userIdentityResourceId, new IdentityUserAssignedIdentitiesValue() }
}
)
);
await kustoManagementClient.Clusters.CreateOrUpdateAsync(resourceGroupName, 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;
var clientGuid = userIdentity.ClientId;
PrincipalId ist ein eindeutiger Bezeichner für die Identität, der für die Azure AD-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 für die Azure AD-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 clusterUpdate = new ClusterUpdate(
identity: new Identity(
IdentityType.UserAssigned,
userAssignedIdentities: new Dictionary<string, IdentityUserAssignedIdentitiesValue>(1)
{
{ userIdentityResourceId, null }
}
)
);
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, 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.