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.
W tym artykule pokazano, jak dodawać i usuwać tożsamości zarządzane przypisane przez system i przypisane przez użytkownika dla klastrów usługi Azure Data Explorer.
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 jest migrowany między subskrypcjami lub dzierżawami. Aplikacja będzie musiała uzyskać nową tożsamość, którą można wykonać, wyłączając i ponownie włączając tę funkcję. Zasady dostępu do zasobów podrzędnych będą również musiały zostać zaktualizowane, aby używać nowej tożsamości.
Dodawanie tożsamości przypisanej przez system
Przypisz tożsamość przypisaną przez system powiązaną 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 systemokienka> 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 dla kluczy zarządzanych przez klienta
Utwórz aplikację Azure AD 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 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);
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;
var tenantGuid = clusterData.Identity.TenantId;
PrincipalId i TenantId są zastępowane identyfikatorami GUID. Właściwość TenantId identyfikuje dzierżawę Azure AD, do której należy tożsamość. Jest PrincipalId to unikatowy identyfikator nowej tożsamości klastra. W ramach Azure AD 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ć z tożsamością, uwzględniając następującą właściwość w definicji zasobu:
Klaster może mieć jednocześnie tożsamości przypisane przez system i przypisane przez użytkownika. Właściwość byłaby następująca type : SystemAssigned,UserAssigned
Po utworzeniu klastra ma następujące dodatkowe właściwości:
<TENANTID> i <PRINCIPALID> są zastępowane identyfikatorami GUID. Właściwość TenantId identyfikuje dzierżawę Azure AD, do której należy tożsamość. Jest PrincipalId to unikatowy identyfikator nowej tożsamości klastra. W ramach Azure AD 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 Azure AD. Tożsamości przypisane przez system są również automatycznie usuwane z Azure AD 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 systemokienka> 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 clusterPatch = new ClusterUpdate(identity: new Identity(IdentityType.None));
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, 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ę Azure AD 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 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);
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;
var clientGuid = userIdentity.ClientId;
Jest PrincipalId to unikatowy identyfikator tożsamości używanej do administrowania Azure AD. 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 Azure AD. 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 clusterUpdate = new ClusterUpdate(
identity: new Identity(
IdentityType.UserAssigned,
userAssignedIdentities: new Dictionary<string, IdentityUserAssignedIdentitiesValue>(1)
{
{ userIdentityResourceId, null }
}
)
);
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, 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.