Configurare le identità gestite per il cluster di Esplora dati di Azure
Articolo
Un'identità gestita dall'ID Microsoft Entra consente al cluster di accedere ad altre risorse protette Microsoft Entra come Azure Key Vault. L'identità viene gestita dalla piattaforma Azure e non è necessario eseguire il provisioning o ruotare alcun segreto.
Questo articolo illustra come aggiungere e rimuovere identità gestite nel cluster. Per altre informazioni sulle identità gestite, vedere Panoramica delle identità gestite.
Nota
Le identità gestite per Azure Esplora dati non si comportano come previsto se il cluster di Esplora dati di Azure viene migrato tra sottoscrizioni o tenant. L'app dovrà ottenere una nuova identità, che può essere eseguita rimuovendo un'identità assegnata dal sistema e quindi aggiungendo un'identità assegnata dal sistema. È necessario aggiornare anche i criteri di accesso delle risorse downstream per usare la nuova identità.
Per esempi di codice basati sulle versioni precedenti di SDK, vedere l'articolo archiviato.
Tipi di identità gestite
Il cluster di Azure Esplora dati può essere concesso due tipi di identità:
Identità assegnata dal sistema: associata al cluster ed eliminata se la risorsa viene eliminata. Un cluster può avere solo un'identità assegnata dal sistema.
Identità assegnata dall'utente: risorsa di Azure autonoma che può essere assegnata al cluster. Un cluster può avere più identità assegnate dall'utente.
Aggiungere un'identità assegnata dal sistema
Assegnare un'identità assegnata dal sistema associata al cluster ed è eliminata se il cluster viene eliminato. Un cluster può avere solo un'identità assegnata dal sistema. La creazione di un cluster con un'identità assegnata dal sistema richiede l'impostazione di una proprietà aggiuntiva nel cluster. Aggiungere l'identità assegnata dal sistema usando il modello portale di Azure, C#o Resource Manager come illustrato di seguito.
Creare un'applicazione e un'entità servizio Microsoft Entra in grado di accedere alle risorse. Aggiungere l'assegnazione di ruolo nell'ambito della sottoscrizione e ottenere l'oggetto obbligatorio Directory (tenant) ID, Application IDe Client Secret.
Creare o aggiornare il cluster
Creare o aggiornare il cluster usando la Identity proprietà:
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);
Eseguire il comando seguente per verificare se il cluster è stato creato o aggiornato correttamente con un'identità:
Se il risultato contiene ProvisioningState il Succeeded valore, il cluster è stato creato o aggiornato e deve avere le proprietà seguenti:
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId e TenantId vengono sostituiti con GUID. La TenantId proprietà identifica il tenant Microsoft Entra a cui appartiene l'identità. L'oggetto PrincipalId è un identificatore univoco per la nuova identità del cluster. All'interno di Microsoft Entra ID, l'entità servizio ha lo stesso nome assegnato all'istanza di servizio app o Funzioni di Azure.
Aggiungere un'identità assegnata dal sistema usando un modello di Resource Manager di Azure
L'aggiunta del tipo assegnato dal sistema indica ad Azure di creare e gestire l'identità per il cluster. Qualsiasi risorsa di tipo Microsoft.Kusto/clusters può essere creata con un'identità, includendo la seguente proprietà nella definizione della risorsa:
<TENANTID> e <PRINCIPALID> vengono sostituiti con GUID. La TenantId proprietà identifica il tenant Microsoft Entra a cui appartiene l'identità. L'oggetto PrincipalId è un identificatore univoco per la nuova identità del cluster. All'interno di Microsoft Entra ID, l'entità servizio ha lo stesso nome assegnato all'istanza di servizio app o Funzioni di Azure.
Rimuovere un'identità assegnata dal sistema
La rimozione di un'identità assegnata dal sistema lo eliminerà anche dall'ID Microsoft Entra. Le identità assegnate dal sistema vengono rimosse automaticamente dall'ID Microsoft Entra quando la risorsa del cluster viene eliminata. È possibile rimuovere un'identità assegnata dal sistema disabilitando la funzionalità. Rimuovere l'identità assegnata dal sistema usando il modello portale di Azure, C#o Resource Manager come illustrato di seguito.
Selezionare Identità impostazioni> nel riquadro sinistro del portale.
Nella scheda Sistema del riquadro >Identità assegnata:
Spostare il dispositivo di scorrimento Stato su Disattivato.
Selezionare Salva
Nella finestra popup selezionare Sì per disabilitare l'identità assegnata dal sistema. Il riquadro Identity ripristina la stessa condizione di prima dell'aggiunta dell'identità assegnata dal sistema.
Rimuovere un'identità assegnata dal sistema usando C#
Eseguire quanto segue per rimuovere l'identità assegnata dal sistema:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Rimuovere un'identità assegnata dal sistema usando un modello di Resource Manager di Azure
Eseguire quanto segue per rimuovere l'identità assegnata dal sistema:
{
"identity": {
"type": "None"
}
}
Nota
Se il cluster ha contemporaneamente identità assegnate dal sistema e assegnate dall'utente, dopo la rimozione dell'identità assegnata dal sistema, la type proprietà sarà UserAssigned
Aggiungere un'identità assegnata dall'utente
Assegnare un'identità gestita assegnata dall'utente al cluster. Un cluster può avere più di un'identità assegnata dall'utente. La creazione di un cluster con un'identità assegnata dall'utente richiede l'impostazione di una proprietà aggiuntiva nel cluster. Aggiungere l'identità assegnata dall'utente usando il modello portale di Azure, C#o Resource Manager come illustrato di seguito.
Creare un'applicazione e un'entità servizio Microsoft Entra in grado di accedere alle risorse. Aggiungere l'assegnazione di ruolo nell'ambito della sottoscrizione e ottenere l'oggetto obbligatorio Directory (tenant) ID, Application IDe Client Secret.
Creare o aggiornare il cluster
Creare o aggiornare il cluster usando la Identity proprietà:
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);
Eseguire il comando seguente per verificare se il cluster è stato creato o aggiornato correttamente con un'identità:
Se il risultato contiene ProvisioningState il Succeeded valore, il cluster è stato creato o aggiornato e deve avere le proprietà seguenti:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
L'oggetto PrincipalId è un identificatore univoco per l'identità usata per l'amministrazione di Microsoft Entra. L'oggetto ClientId è un identificatore univoco per la nuova identità dell'applicazione usata per specificare l'identità da usare durante le chiamate di runtime.
Aggiungere un'identità assegnata dall'utente usando un modello di Resource Manager di Azure
Qualsiasi risorsa di tipo Microsoft.Kusto/clusters può essere creata con un'identità assegnata dall'utente includendo la proprietà seguente nella definizione della risorsa, sostituendo <RESOURCEID> con l'ID risorsa dell'identità desiderata:
L'oggetto PrincipalId è un identificatore univoco per l'identità usata per l'amministrazione di Microsoft Entra. L'oggetto ClientId è un identificatore univoco per la nuova identità dell'applicazione usata per specificare l'identità da usare durante le chiamate di runtime.
Nota
Un cluster può avere contemporaneamente identità assegnate dal sistema e assegnate dall'utente. In questo caso, la type proprietà sarà SystemAssigned,UserAssigned.
Rimuovere un'identità gestita assegnata dall'utente da un cluster
Rimuovere l'identità assegnata dall'utente usando il modello portale di Azure, C#o Resource Manager come illustrato di seguito.
Selezionare Identità impostazioni> nel riquadro sinistro del portale.
Selezionare la scheda Utente assegnato .
Cercare l'identità creata in precedenza e selezionarla. Selezionare Rimuovi.
Nella finestra popup selezionare Sì per rimuovere l'identità assegnata dall'utente. Il riquadro Identity ripristina la stessa condizione di prima dell'aggiunta dell'identità assegnata dall'utente.
Per rimuovere le identità, impostare i valori su Null. Tutte le altre identità esistenti non saranno interessate.
Per rimuovere tutte le identità assegnate dall'utente, la type proprietà sarà None,
Se il cluster ha contemporaneamente identità assegnate dal sistema e assegnate dall'utente, la type proprietà sarà SystemAssigned,UserAssigned con le identità da rimuovere o SystemAssigned per rimuovere tutte le identità assegnate dall'utente.