Konfigurieren von verwalteten Identitäten für Ihren Azure Data Explorer-Cluster
Artikel
Eine verwaltete Identität aus Azure Active Directory ermöglicht Ihrem Cluster den einfachen Zugriff auf andere azure AD-geschützte Ressourcen wie Azure Key Vault. Da die Identität von der Azure-Plattform verwaltet wird, brauchen Sie keine Passwörter einrichten oder aktualisieren. Verwaltete Identitätskonfiguration wird derzeit nur unterstützt, um vom Kunden verwaltete Schlüssel für Ihren Cluster zuzu aktivieren.
Ihr Azure Data Explorer-Cluster kann zwei Arten von Identitäten zugewiesen werden.
vom System zugewiesene Identität: An Ihren Cluster gebunden und gelöscht, wenn Ihre Ressource gelöscht wird. Ein Cluster kann nur eine vom System zugewiesene Identität aufweisen.
vom Benutzer zugewiesene Identität: Eigenständige Azure-Ressource, die Ihrem Cluster zugewiesen werden kann. Ein Cluster kann mehrere vom Benutzer zugewiesene Identitäten aufweisen.
In diesem Artikel erfahren Sie, wie Sie vom System zugewiesene und vom Benutzer 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 über Abonnements oder Mandanten hinweg migriert wird. Die App muss eine neue Identität erhalten, die durch Deaktivieren und erneutes Aktivieren der Funktion erfolgen kann. Zugriffsrichtlinien von nachgelagerten Ressourcen müssen auch 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 wird gelöscht, wenn Ihr Cluster gelöscht wird. Ein Cluster kann nur eine vom System zugewiesene Identität aufweisen. Zum Erstellen eines Clusters mit einer vom System zugewiesenen Identität muss eine zusätzliche Eigenschaft für den Cluster festgelegt werden. Fügen Sie die vom System zugewiesene Identität mithilfe der Azure-Portal-, C#- oder Resource Manager-Vorlage wie unten beschrieben hinzu.
Wählen Sie auf der Registerkarte Sicherheits->vom System zugewiesene IdentitätBeiaus. Um die vom System zugewiesene Identität zu entfernen, wählen Sie Aus.
Wählen Sie Weiter: Kategorien > oder Überprüfen und erstellen Sie, um den Cluster zu erstellen.
Vorhandener Azure Data Explorer-Cluster
Öffnen Sie einen vorhandenen Azure Data Explorer-Cluster.
Wählen Sie Einstellungen>Identität im linken Bereich des Portals aus.
Im Bereich Identität>System zugewiesene Registerkarte:
Verschieben Sie den Status- Schieberegler auf Beim.
Wählen SieSpeichern
Wählen Sie im Popupfenster Ja
Nach ein paar Minuten erscheint auf dem Bildschirm:
Objekt-ID- – Wird für vom Kunden verwaltete Schlüssel verwendet
Erstellen einer Azure AD-Anwendung und Dienstprinzipal, die auf Ressourcen zugreifen können. 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 des 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 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 erstellt oder mit einer Identität aktualisiert wurde:
Wenn das Ergebnis ProvisioningState mit dem wert Succeeded enthält, wurde der Cluster erstellt oder aktualisiert und sollte die folgenden Eigenschaften aufweisen:
var principalGuid = clusterData.Identity.PrincipalId;
var tenantGuid = clusterData.Identity.TenantId;
PrincipalId und TenantId werden durch GUIDs ersetzt. Die eigenschaft TenantId identifiziert den Azure AD-Mandanten, zu dem die Identität gehört. Die PrincipalId ist ein eindeutiger Bezeichner für die neue Identität des Clusters. Innerhalb von Azure AD hat der Dienstprinzipal denselben Namen wie Ihre App Service- oder Azure Functions-Instanz.
Hinzufügen einer systemseitig zugewiesenen Identität unter Verwendung einer Azure Resource Manager-Vorlage
Das Hinzufügen des vom System zugewiesenen Typs weist Azure an, die Identität für Ihren 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 sowohl system-zugewiesene als auch vom Benutzer zugewiesene Identitäten gleichzeitig haben. Die eigenschaft type wäre SystemAssigned,UserAssigned
Wenn der Cluster erstellt wird, verfügt er über die folgenden zusätzlichen Eigenschaften:
<TENANTID> und <PRINCIPALID> werden durch GUIDs ersetzt. Die eigenschaft TenantId identifiziert den Azure AD-Mandanten, zu dem die Identität gehört. Die PrincipalId ist ein eindeutiger Bezeichner für die neue Identität des Clusters. Innerhalb von Azure AD hat der Dienstprinzipal denselben Namen wie Ihre App Service- oder Azure Functions-Instanz.
Entfernen einer vom System zugewiesenen Identität
Durch das Entfernen einer vom System zugewiesenen Identität wird sie auch aus Azure AD gelöscht. Vom System zugewiesene Identitäten werden auch automatisch aus Azure AD entfernt, wenn die Clusterressource gelöscht wird. Eine vom System zugewiesene Identität kann durch Deaktivieren des Features entfernt werden. Entfernen Sie die vom System zugewiesene Identität mithilfe der Azure-Portal-, C#- oder Resource Manager-Vorlage wie unten beschrieben.
Wählen Sie Einstellungen>Identität im linken Bereich des Portals aus.
Im Bereich Identität>System zugewiesene Registerkarte:
Verschieben Sie den Status- Schieberegler auf Aus.
Wählen SieSpeichern
Wählen Sie im Popupfenster Ja aus, um die vom System zugewiesene Identität zu deaktivieren. Der Bereich Identität wird auf denselben Zustand wie vor dem Hinzufügen der systemzugewiesenen Identität zurückgesetzt.
Entfernen einer vom System zugewiesenen Identität mit C#
Führen Sie Folgendes aus, um die vom System zugewiesene Identität zu entfernen:
var clusterPatch = new ClusterUpdate(identity: new Identity(IdentityType.None));
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, clusterPatch);
Entfernen einer vom System zugewiesenen Identität mithilfe einer Azure Resource Manager-Vorlage
Führen Sie Folgendes aus, um die vom System zugewiesene Identität zu entfernen:
{
"identity": {
"type": "None"
}
}
Hinweis
Wenn der Cluster sowohl vom System als auch von Benutzern zugewiesene Identitäten gleichzeitig verwendet hat, wird die type-Eigenschaft nach dem Entfernen der vom System zugewiesenen Identität UserAssigned
Hinzufügen einer benutzerseitig zugewiesenen Identität
Weisen Sie Ihrem Cluster eine vom Benutzer zugewiesene verwaltete Identität zu. Ein Cluster kann mehrere vom Benutzer zugewiesene Identitäten aufweisen. Zum Erstellen eines Clusters mit einer vom Benutzer zugewiesenen Identität muss eine zusätzliche Eigenschaft für den Cluster festgelegt werden. Fügen Sie die vom Benutzer zugewiesene Identität mithilfe der Azure-Portal-, C#- oder Ressourcen-Manager-Vorlage wie unten beschrieben hinzu.
Erstellen einer Azure AD-Anwendung und Dienstprinzipal, die auf Ressourcen zugreifen können. 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 des 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 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 erstellt oder mit einer Identität aktualisiert wurde:
Wenn das Ergebnis ProvisioningState mit dem wert Succeeded enthält, wurde der Cluster erstellt oder aktualisiert und sollte die folgenden Eigenschaften aufweisen:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId;
var clientGuid = userIdentity.ClientId;
Die PrincipalId ist ein eindeutiger Bezeichner für die Identität, die für die Azure AD-Verwaltung verwendet wird. Die ClientId ist ein eindeutiger Bezeichner für die neue Identität der Anwendung, die verwendet wird, um anzugeben, welche Identität während Laufzeitaufrufen verwendet werden soll.
Hinzufügen einer vom Benutzer zugewiesenen Identität mithilfe einer Azure Resource Manager-Vorlage
Jede Ressource vom Typ Microsoft.Kusto/clusters kann mit einer vom Benutzer zugewiesenen Identität erstellt werden, indem die folgende Eigenschaft in die Ressourcendefinition eingeschlossen wird, wobei <RESOURCEID> durch die Ressourcen-ID der gewünschten Identität ersetzt wird:
Die PrincipalId ist ein eindeutiger Bezeichner für die Identität, die für die Azure AD-Verwaltung verwendet wird. Die ClientId ist ein eindeutiger Bezeichner für die neue Identität der Anwendung, die verwendet wird, um anzugeben, welche Identität während Laufzeitaufrufen verwendet werden soll.
Hinweis
Ein Cluster kann sowohl system-zugewiesene als auch vom Benutzer zugewiesene Identitäten gleichzeitig haben. In diesem Fall hat die type-Eigenschaft den Wert SystemAssigned,UserAssigned.
Entfernen einer vom Benutzer 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 unten beschrieben.
Wählen Sie im linken Fenster des Portals Einstellungen>Identität aus.
Wählen Sie die Registerkarte Benutzer zugewiesen aus.
Suchen Sie nach der identität, die Sie zuvor erstellt haben, und wählen Sie sie aus. Wählen Sie , entfernen Sie.
Wählen Sie im Popupfenster Ja aus, um die vom Benutzer zugewiesene Identität zu entfernen. Der Identitätspaneel kehrt in denselben Zustand zurück wie vor dem Hinzufügen der vom Benutzer zugewiesenen Identität.
Entfernen einer vom Benutzer zugewiesenen Identität mithilfe von C#
Führen Sie Folgendes aus, um die vom Benutzer 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 vom Benutzer zugewiesenen Identität mithilfe einer Azure Resource Manager-Vorlage
Führen Sie Folgendes aus, um die vom Benutzer zugewiesene Identität zu entfernen:
Um Identitäten zu entfernen, legen Sie deren Werte auf NULL fest. Alle anderen vorhandenen Identitäten sind nicht betroffen.
Um alle vom Benutzer zugewiesenen Identitäten zu entfernen, würde die Eigenschaft type zu Nonewerden,
Wenn der Cluster sowohl systemzugewiesene als auch benutzerzugewiesene Identitäten gleichzeitig hat, würde die Eigenschaft type verwendet, um die zu entfernenden Identitäten anzugeben: entweder SystemAssigned,UserAssigned, um bestimmte Identitäten zu entfernen, oder SystemAssigned, um alle benutzerzugewiesenen Identitäten zu entfernen.