Un'identità gestita da Microsoft Entra ID consente al cluster di accedere ad altre risorse protette di Microsoft Entra, ad esempio Azure Key Vault. La piattaforma di Azure gestisce l'identità e non richiede il provisioning o la rotazione di segreti.
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 Esplora dati di Azure non si comportano come previsto se si esegue la migrazione del cluster di Esplora dati di Azure tra sottoscrizioni o tenant. L'app deve ottenere una nuova identità, che è possibile ottenere rimuovendo un'identità assegnata dal sistema e quindi aggiungendo un'identità assegnata dal sistema. È anche necessario aggiornare i criteri di accesso delle risorse downstream per usare la nuova identità.
Per esempi di codice basati sulle versioni precedenti dell'SDK, vedere l'articolo archiviato.
Tipi di identità gestite
È possibile concedere al cluster di Esplora dati di Azure due tipi di identità:
Identità assegnata dal sistema: associata al cluster ed eliminata se si elimina la risorsa. Un cluster può avere solo un'identità assegnata dal sistema.
Identità assegnata dall'utente: una risorsa di Azure autonoma che è possibile assegnare al cluster. Un cluster può avere più identità assegnate dall'utente.
Aggiungere un'identità assegnata dal sistema
Assegna un'identità assegnata dal sistema legata al cluster e che viene eliminata se elimini il cluster. Un cluster può avere solo un'identità assegnata dal sistema. Quando si crea un cluster con un'identità assegnata dal sistema, è necessario impostare una proprietà aggiuntiva nel cluster. Aggiungere l'identità assegnata dal sistema usando il portale di Azure, C# o il modello di Resource Manager, come descritto nelle sezioni seguenti.
Aggiungere un'identità assegnata dal sistema usando il portale di Azure
Accedere al portale di Azure.
Nuovo cluster di Azure Esplora dati
Creare un cluster Esplora dati di Azure
Nella scheda Sicurezza , in Identità assegnata dal sistema, selezionare Sì. Per rimuovere l'identità assegnata dal sistema, selezionare No.
Selezionare Avanti: Tag > o Rivedi e crea per creare il cluster.
Cluster Esplora dati di Azure esistente
Aprire un cluster di Azure Esplora dati esistente.
Selezionare Impostazioni>Identità nel riquadro sinistro del portale.
Nel riquadro Identità , nella scheda Assegnata dal sistema :
- Spostare il dispositivo di scorrimento Stato su Sì.
- Seleziona Salva.
- Nella finestra popup selezionare Sì.
Dopo alcuni minuti, la schermata mostra:
-
ID oggetto - Usato per le chiavi gestite dal cliente
-
Autorizzazioni : selezionare le assegnazioni di ruolo pertinenti
Aggiungere un'identità assegnata dal sistema usando C#
Prerequisiti
Per configurare un'identità gestita usando il client C# di Azure Esplora dati:
- Installare il pacchetto NuGet di Azure Esplora dati.
- Installare il pacchetto NuGet Azure.Identity per l'autenticazione.
-
Creare un'applicazione Microsoft Entra e un'entità servizio in grado di accedere alle risorse. Aggiungere l'assegnazione di ruolo nell'ambito della sottoscrizione e ottenere l'oggetto , e
Directory (tenant) IDobbligatorioApplication IDClient 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 hai creato o aggiornato con successo il cluster con un'identità.
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Se il risultato contiene ProvisioningState con il Succeeded valore , il cluster è stato creato o aggiornato e ha 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 di Microsoft Entra a cui appartiene l'identità.
PrincipalId è un identificatore univoco per la nuova identità del cluster. In Microsoft Entra ID, l'entità servizio ha lo stesso nome assegnato all'istanza del servizio app o di Funzioni di Azure.
Aggiungere un'identità assegnata dal sistema usando un modello di Azure Resource Manager
È possibile usare un modello di Azure Resource Manager per automatizzare la distribuzione delle risorse di Azure. Per altre informazioni sulla distribuzione in Azure Esplora dati, vedere Creare un cluster e un database di Azure Esplora dati usando un modello di Azure Resource Manager.
Quando si aggiunge il tipo assegnato dal sistema, si indica ad Azure di creare e gestire l'identità per il cluster. È possibile creare qualsiasi risorsa di tipo Microsoft.Kusto/clusters con un'identità includendo la proprietà seguente nella definizione della risorsa:
{
"identity": {
"type": "SystemAssigned"
}
}
Ad esempio:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
Nota
Un cluster può avere identità assegnate dal sistema e assegnate dall'utente contemporaneamente. La type proprietà sarà SystemAssigned,UserAssigned
Quando si crea il cluster, sono disponibili le proprietà aggiuntive seguenti:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<TENANTID> e <PRINCIPALID> vengono sostituiti con GUID. La TenantId proprietà identifica il tenant di Microsoft Entra a cui appartiene l'identità.
PrincipalId è un identificatore univoco per la nuova identità del cluster. In Microsoft Entra ID, l'entità servizio ha lo stesso nome assegnato all'istanza del servizio app o di Funzioni di Azure.
Rimuovere un'identità assegnata dal sistema
Quando si rimuove un'identità assegnata dal sistema, viene eliminata anche dall'ID Microsoft Entra. Anche le identità assegnate dal sistema vengono rimosse automaticamente dall'ID Microsoft Entra quando si elimina la risorsa cluster. È possibile rimuovere un'identità assegnata dal sistema disabilitando la funzionalità. Usare il portale di Azure, C# o il modello di Resource Manager per rimuovere l'identità assegnata dal sistema come descritto nella sezione seguente.
Rimuovere un'identità assegnata dal sistema usando il portale di Azure
Accedere al portale di Azure.
Selezionare Impostazioni>Identità nel riquadro sinistro del portale.
Nel riquadro Identità , nella scheda Assegnata dal sistema :
- Spostare il dispositivo di scorrimento Stato su Disattivato.
- Seleziona Salva.
- Nella finestra popup selezionare Sì per disabilitare l'identità assegnata dal sistema. Il riquadro Identità ripristina la stessa condizione di prima dell'aggiunta dell'identità assegnata dal sistema.
Rimuovere un'identità assegnata dal sistema usando C#
Eseguire il codice seguente 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 Azure Resource Manager
Eseguire il codice seguente per rimuovere l'identità assegnata dal sistema:
{
"identity": {
"type": "None"
}
}
Nota
Se il cluster ha identità assegnate dal sistema e assegnate dall'utente contemporaneamente, dopo aver rimosso l'identità assegnata dal sistema, la type proprietà è 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. Per creare un cluster con un'identità assegnata dall'utente, è necessario impostare una proprietà aggiuntiva nel cluster. Aggiungere l'identità assegnata dall'utente usando il portale di Azure, C# o il modello di Resource Manager, come descritto nelle sezioni seguenti.
Aggiungere un'identità assegnata dall'utente usando il portale di Azure
Accedere al portale di Azure.
Creare una risorsa di identità gestita assegnata dall'utente.
Aprire un cluster di Azure Esplora dati esistente.
Selezionare Impostazioni>Identità nel riquadro sinistro del portale.
Nella scheda Assegnata dall'utente selezionare Aggiungi.
Cercare l'identità creata in precedenza e selezionarla. Selezionare Aggiungi.
Aggiungere un'identità assegnata dall'utente usando C#
Prerequisiti
Per configurare un'identità gestita usando il client C# di Azure Esplora dati:
- Installare il pacchetto NuGet di Azure Esplora dati.
- Installare il pacchetto NuGet Azure.Identity per l'autenticazione.
-
Creare un'applicazione Microsoft Entra e un'entità servizio in grado di accedere alle risorse. Aggiungere l'assegnazione di ruolo nell'ambito della sottoscrizione e ottenere l'oggetto , e
Directory (tenant) IDobbligatorioApplication IDClient 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);
Esegui il comando seguente per verificare se hai creato o aggiornato correttamente il cluster con un Identity.
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Se il risultato contiene ProvisioningState con il Succeeded valore , il cluster è stato creato o aggiornato e ha le proprietà seguenti:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
PrincipalId è un identificatore univoco per l'identità usata dall'amministrazione di Microsoft Entra.
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 Azure Resource Manager
È possibile usare un modello di Azure Resource Manager per automatizzare la distribuzione delle risorse di Azure. Per altre informazioni sulla distribuzione in Azure Esplora dati, vedere Creare un cluster e un database di Azure Esplora dati usando un modello di Azure Resource Manager.
È possibile creare qualsiasi risorsa di tipo Microsoft.Kusto/clusters con un'identità assegnata dall'utente includendo la proprietà seguente nella definizione della risorsa. Sostituire <RESOURCEID> con l'ID risorsa dell'identità desiderata:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
Ad esempio:
{
"apiVersion": "2019-09-07",
"type": "Microsoft.Kusto/clusters",
"name": "[variables('clusterName')]",
"___location": "[resourceGroup().___location]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {}
}
},
"dependsOn": [
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
]
}
Quando si crea il cluster, sono disponibili le proprietà aggiuntive seguenti:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
PrincipalId è un identificatore univoco per l'identità usata dall'amministrazione di Microsoft Entra.
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 identità assegnate dal sistema e assegnate dall'utente contemporaneamente. In questo caso, impostare la type proprietà su SystemAssigned,UserAssigned.
Rimuovere un'identità gestita assegnata dall'utente da un cluster
Rimuovere l'identità assegnata dall'utente usando il portale di Azure, C# o il modello di Resource Manager, come descritto nella sezione seguente.
Rimuovere un'identità gestita assegnata dall'utente usando il portale di Azure
Accedere al portale di Azure.
Selezionare Impostazioni>Identità nel riquadro sinistro del portale.
Selezionare la scheda Assegnato dall'utente.
Cercare l'identità creata in precedenza e selezionarla. Selezionare Rimuovi.
Nella finestra popup selezionare Sì per rimuovere l'identità assegnata dall'utente. Il riquadro Identità ripristina la stessa condizione di prima dell'aggiunta dell'identità assegnata dall'utente.
Rimuovere un'identità assegnata dall'utente usando C#
Eseguire il codice seguente per rimuovere l'identità assegnata dall'utente:
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);
Rimuovere un'identità assegnata dall'utente usando un modello di Azure Resource Manager
Eseguire il codice seguente per rimuovere l'identità assegnata dall'utente:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
Nota
- Impostare i valori delle identità su Null per rimuoverli. Questa azione non influisce su altre identità esistenti.
- Impostare la
type proprietà su None per rimuovere tutte le identità assegnate dall'utente.
- Se il cluster ha identità assegnate dal sistema e assegnate dall'utente, impostare la
type proprietà su SystemAssigned,UserAssigned con le identità da rimuovere o impostarla su SystemAssigned per rimuovere tutte le identità assegnate dall'utente.
Contenuto correlato