Konfigurowanie tożsamości zarządzanych dla klastra usługi Azure Data Explorer
Artykuł
Tożsamość zarządzana z identyfikatora Microsoft Entra umożliwia klastrowi dostęp do innych Microsoft Entra chronionych zasobów, takich jak azure Key Vault. Tożsamość jest zarządzana przez platformę Azure i nie wymaga inicjowana obsługi ani rotacji żadnych wpisów tajnych.
W tym artykule pokazano, jak dodawać i usuwać tożsamości zarządzane w klastrze. Aby uzyskać więcej informacji na temat tożsamości zarządzanych, zobacz Omówienie tożsamości zarządzanych.
Uwaga
Tożsamości zarządzane dla usługi Azure Data Explorer nie będą działać zgodnie z oczekiwaniami, jeśli klaster usługi Azure Data Explorer zostanie zmigrowany między subskrypcjami lub dzierżawami. Aplikacja będzie musiała uzyskać nową tożsamość, którą można wykonać przez usunięcie tożsamości przypisanej przez system , a następnie dodanie tożsamości przypisanej przez system. Należy również zaktualizować zasady dostępu do zasobów podrzędnych, aby korzystać z nowej tożsamości.
Przykłady kodu oparte na poprzednich wersjach zestawu SDK można znaleźć w zarchiwizowanym artykule.
Typy tożsamości zarządzanych
Klaster usługi Azure Data Explorer może mieć dwa typy tożsamości:
Tożsamość przypisana przez system: powiązana z klastrem i usunięta, jeśli zasób zostanie usunięty. Klaster może mieć tylko jedną tożsamość przypisaną przez system.
Tożsamość przypisana przez użytkownika: autonomiczny zasób platformy Azure, który można przypisać do klastra. Klaster może mieć wiele tożsamości przypisanych przez użytkownika.
Dodawanie tożsamości przypisanej przez system
Przypisz tożsamość przypisaną przez system, która jest powiązana z klastrem i zostanie usunięta, jeśli klaster zostanie usunięty. Klaster może mieć tylko jedną tożsamość przypisaną przez system. Utworzenie klastra z tożsamością przypisaną przez system wymaga ustawienia dodatkowej właściwości w klastrze. Dodaj tożsamość przypisaną przez system przy użyciu szablonu Azure Portal, C# lub Resource Manager, jak opisano poniżej.
Na karcie >ZabezpieczeniaTożsamość przypisana przez system wybierz pozycję Włączone. Aby usunąć tożsamość przypisaną przez system, wybierz pozycję Wyłączone.
Wybierz pozycję Dalej: Tagi > lub Przejrzyj i utwórz , aby utworzyć klaster.
Istniejący klaster usługi Azure Data Explorer
Otwórz istniejący klaster usługi Azure Data Explorer.
Wybierz pozycję Ustawienia>Tożsamość w lewym okienku portalu.
Na karcie Przypisane przez system okienka > Tożsamość:
Przesuń suwak Stan do pozycji Włączone.
Wybierz pozycję Zapisz
W oknie podręcznym wybierz pozycję Tak
Po kilku minutach zostanie wyświetlony ekran:
Identyfikator obiektu — używany w przypadku kluczy zarządzanych przez klienta
Utwórz aplikację Microsoft Entra i jednostkę usługi, która może uzyskiwać dostęp do zasobów. Dodasz przypisanie roli w zakresie subskrypcji i uzyskasz wymagane wartości Directory (tenant) ID, Application IDi Client Secret.
Tworzenie lub aktualizowanie klastra
Utwórz lub zaktualizuj klaster przy użyciu Identity właściwości :
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);
Uruchom następujące polecenie, aby sprawdzić, czy klaster został pomyślnie utworzony lub zaktualizowany przy użyciu tożsamości:
Jeśli wynik zawiera ProvisioningStateSucceeded wartość , klaster został utworzony lub zaktualizowany i powinien mieć następujące właściwości:
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId i TenantId są zastępowane identyfikatorami GUID. Właściwość TenantId identyfikuje dzierżawę Microsoft Entra, do której należy tożsamość. Jest PrincipalId to unikatowy identyfikator nowej tożsamości klastra. W Microsoft Entra identyfikatorze jednostka usługi ma taką samą nazwę, jaką nadaliśmy wystąpieniu App Service lub Azure Functions.
Dodawanie tożsamości przypisanej przez system przy użyciu szablonu usługi Azure Resource Manager
Dodanie typu przypisanego przez system informuje platformę Azure o utworzeniu tożsamości klastra i zarządzaniu nią. Dowolny zasób typu Microsoft.Kusto/clusters można utworzyć przy użyciu tożsamości, uwzględniając następującą właściwość w definicji zasobu:
<TENANTID> i <PRINCIPALID> są zastępowane identyfikatorami GUID. Właściwość TenantId identyfikuje dzierżawę Microsoft Entra, do której należy tożsamość. Jest PrincipalId to unikatowy identyfikator nowej tożsamości klastra. W Microsoft Entra identyfikatorze jednostka usługi ma taką samą nazwę, jaką nadaliśmy wystąpieniu App Service lub Azure Functions.
Usuwanie tożsamości przypisanej przez system
Usunięcie tożsamości przypisanej przez system spowoduje również usunięcie jej z identyfikatora Microsoft Entra. Tożsamości przypisane przez system są również automatycznie usuwane z identyfikatora Microsoft Entra po usunięciu zasobu klastra. Tożsamość przypisana przez system można usunąć, wyłączając tę funkcję. Usuń tożsamość przypisaną przez system przy użyciu szablonu Azure Portal, C# lub Resource Manager, jak opisano poniżej.
Wybierz pozycję Ustawienia>Tożsamość w lewym okienku portalu.
Na karcie Przypisane przez system okienka > Tożsamość:
Przesuń suwak Stan do pozycji Wyłączone.
Wybierz pozycję Zapisz
W oknie podręcznym wybierz pozycję Tak , aby wyłączyć tożsamość przypisaną przez system. Okienko Tożsamość powraca do tego samego warunku co przed dodaniu tożsamości przypisanej przez system.
Usuwanie tożsamości przypisanej przez system przy użyciu języka C#
Uruchom następujące polecenie, aby usunąć tożsamość przypisaną przez system:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Usuwanie tożsamości przypisanej przez system przy użyciu szablonu usługi Azure Resource Manager
Uruchom następujące polecenie, aby usunąć tożsamość przypisaną przez system:
{
"identity": {
"type": "None"
}
}
Uwaga
Jeśli klaster miał jednocześnie tożsamości przypisane przez system i przypisane przez użytkownika, po usunięciu type tożsamości przypisanej przez system, właściwość będzie miała wartość UserAssigned
Dodawanie tożsamości przypisanej przez użytkownika
Przypisz tożsamość zarządzaną przypisaną przez użytkownika do klastra. Klaster może mieć więcej niż jedną tożsamość przypisaną przez użytkownika. Utworzenie klastra z tożsamością przypisaną przez użytkownika wymaga ustawienia dodatkowej właściwości w klastrze. Dodaj tożsamość przypisaną przez użytkownika przy użyciu szablonu Azure Portal, C# lub Resource Manager, jak opisano poniżej.
Utwórz aplikację Microsoft Entra i jednostkę usługi, która może uzyskiwać dostęp do zasobów. Dodasz przypisanie roli w zakresie subskrypcji i uzyskasz wymagane Directory (tenant) IDwartości , Application IDi Client Secret.
Tworzenie lub aktualizowanie klastra
Utwórz lub zaktualizuj klaster przy użyciu Identity właściwości :
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);
Uruchom następujące polecenie, aby sprawdzić, czy klaster został pomyślnie utworzony lub zaktualizowany przy użyciu tożsamości:
Jeśli wynik zawiera ProvisioningStateSucceeded wartość, klaster został utworzony lub zaktualizowany i powinien mieć następujące właściwości:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
Jest PrincipalId to unikatowy identyfikator tożsamości używanej do administrowania Microsoft Entra. Jest ClientId to unikatowy identyfikator nowej tożsamości aplikacji używanej do określania tożsamości, która ma być używana podczas wywołań środowiska uruchomieniowego.
Dodawanie tożsamości przypisanej przez użytkownika przy użyciu szablonu usługi Azure Resource Manager
Dowolny zasób typu Microsoft.Kusto/clusters można utworzyć przy użyciu tożsamości przypisanej przez użytkownika, uwzględniając następującą właściwość w definicji zasobu, zastępując ciąg <RESOURCEID> identyfikatorem zasobu żądanej tożsamości:
Jest PrincipalId to unikatowy identyfikator tożsamości używanej do administrowania Microsoft Entra. Jest ClientId to unikatowy identyfikator nowej tożsamości aplikacji używanej do określania tożsamości, która ma być używana podczas wywołań środowiska uruchomieniowego.
Uwaga
Klaster może mieć jednocześnie tożsamości przypisane przez system i przypisane przez użytkownika. W takim przypadku type właściwość to SystemAssigned,UserAssigned.
Usuwanie tożsamości zarządzanej przypisanej przez użytkownika z klastra
Usuń tożsamość przypisaną przez użytkownika przy użyciu szablonu Azure Portal, C# lub Resource Manager, jak opisano poniżej.
Wybierz pozycję Ustawienia>Tożsamość w lewym okienku portalu.
Wybierz kartę Przypisane przez użytkownika .
Wyszukaj utworzoną wcześniej tożsamość i wybierz ją. Wybierz pozycję Usuń.
W oknie podręcznym wybierz pozycję Tak , aby usunąć tożsamość przypisaną przez użytkownika. Okienko Tożsamość przywraca ten sam warunek co przed dodaniu tożsamości przypisanej przez użytkownika.
Usuwanie tożsamości przypisanej przez użytkownika przy użyciu języka C#
Uruchom następujące polecenie, aby usunąć tożsamość przypisaną przez użytkownika:
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);
Usuwanie tożsamości przypisanej przez użytkownika przy użyciu szablonu usługi Azure Resource Manager
Uruchom następujące polecenie, aby usunąć tożsamość przypisaną przez użytkownika:
Aby usunąć tożsamości, ustaw ich wartości na null. Nie będzie to miało wpływu na wszystkie inne istniejące tożsamości.
Aby usunąć wszystkie tożsamości przypisane przez użytkownika, type właściwość to None,
Jeśli klaster miał jednocześnie tożsamości przypisane przez system i przypisane przez użytkownika, type właściwość będzie SystemAssigned,UserAssigned miała tożsamości do usunięcia lub SystemAssigned usunięcia wszystkich tożsamości przypisanych przez użytkownika.