Konfigurowanie tożsamości zarządzanych dla klastra usługi Azure Data Explorer
Artykuł
Tożsamość zarządzana z identyfikatora Entra firmy Microsoft umożliwia klastrowi dostęp do innych chronionych zasobów firmy Microsoft, takich jak usługa 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ą zachowywać się 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żna przyznać dwóm typom 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 witryny Azure Portal, języka C# lub szablonu usługi Resource Manager, jak opisano poniżej.
Na karcie> Zabezpieczenia Toż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ę Tożsamość ustawień>w lewym okienku portalu.
Na karcie Przypisane przez system okienka> Tożsamości:
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
Zainstaluj pakiet NuGet Azure.Identity na potrzeby uwierzytelniania.
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 ProvisioningState wartość Succeeded , 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ę firmy Microsoft Entra, do której należy tożsamość. Jest PrincipalId to unikatowy identyfikator nowej tożsamości klastra. W ramach identyfikatora Entra firmy Microsoft jednostka usługi ma taką samą nazwę, jaką nadano usłudze App Service lub wystąpieniu usługi 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ę firmy Microsoft Entra, do której należy tożsamość. Jest PrincipalId to unikatowy identyfikator nowej tożsamości klastra. W ramach identyfikatora Entra firmy Microsoft jednostka usługi ma taką samą nazwę, jaką nadano usłudze App Service lub wystąpieniu usługi 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 Entra firmy Microsoft. Tożsamości przypisane przez system są również automatycznie usuwane z identyfikatora Entra firmy Microsoft 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 witryny Azure Portal, języka C# lub szablonu usługi Resource Manager, jak opisano poniżej.
Wybierz pozycję Tożsamość ustawień>w lewym okienku portalu.
Na karcie Przypisane przez system okienka> Tożsamości:
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ść przywraca ten sam warunek 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 witryny Azure Portal, języka C# lub szablonu usługi Resource Manager, zgodnie z poniższym opisem.
Zainstaluj pakiet NuGet Azure.Identity na potrzeby uwierzytelniania.
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 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 ProvisioningState wartość Succeeded , 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 firmą 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 <RESOURCEID> element identyfikatorem zasobu żądanej tożsamości:
Jest PrincipalId to unikatowy identyfikator tożsamości używanej do administrowania firmą 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 użytkownika. W tym przypadku type właściwość będzie miała wartość SystemAssigned,UserAssigned.
Usuwanie tożsamości zarządzanej przypisanej przez użytkownika z klastra
Usuń tożsamość przypisaną przez użytkownika przy użyciu witryny Azure Portal, języka C# lub szablonu usługi Resource Manager, jak opisano poniżej.
Wybierz pozycję Tożsamość ustawień>w lewym okienku portalu.
Wybierz kartę Użytkownik przypisany .
Wyszukaj utworzoną wcześniej tożsamość i wybierz ją. Wybierz 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 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.