Autenticazione Microsoft Entra per Application Insights

Application Insights supporta ora l'autenticazione di Microsoft Entra. Usando Microsoft Entra ID, è possibile assicurarsi che nelle risorse di Application Insights vengano inseriti solo i dati di telemetria autenticati.

L'uso di vari sistemi di autenticazione può essere complesso e rischioso perché è difficile gestire le credenziali su larga scala. È ora possibile scegliere di rifiutare esplicitamente l'autenticazione locale per garantire che nella risorsa vengano inseriti solo i dati di telemetria esclusivamente autenticati tramite identità gestite e l'ID Microsoft Entra. Questa funzionalità è un passaggio per migliorare la sicurezza e l'affidabilità dei dati di telemetria usati per prendere decisioni operative critiche (avvisi e scalabilità automatica) e aziendali.

Nota

Questo documento illustra l'inserimento dei dati in Application Insights usando l'autenticazione basata su ID di Microsoft Entra. Per informazioni sull'esecuzione di query sui dati all'interno di Application Insights, vedere Eseguire query su Application Insights usando l'autenticazione di Microsoft Entra.

Prerequisiti

Per abilitare l'inserimento autenticato di Microsoft Entra, sono necessari i passaggi preliminari seguenti. Dovrai:

Scenari non supportati

Gli SDK e le funzionalità seguenti di Software Development Kit non sono supportati per l'uso con l'inserimento autenticato di Microsoft Entra:

Configurare e abilitare l'autenticazione basata su ID Di Microsoft Entra

  1. Se non si ha già un'identità, crearne una usando un'identità gestita o un'entità servizio.

    • È consigliabile usare un'identità gestita:

      Configurare un'identità gestita per il servizio di Azure (Macchine virtuali o servizio app).

    • Non è consigliabile usare un'entità servizio:

      Per altre informazioni su come creare un'applicazione Microsoft Entra e un'entità servizio in grado di accedere alle risorse, vedere Creare un'entità servizio.

  2. Assegnare un ruolo al servizio di Azure.

    Seguire la procedura descritta in Assegnare i ruoli di Azure per aggiungere il ruolo server di pubblicazione delle metriche di monitoraggio dalla risorsa di Application Insights di destinazione alla risorsa di Azure da cui vengono inviati i dati di telemetria.

    Nota

    Sebbene il ruolo di server di pubblicazione delle metriche di monitoraggio indichi "metriche", pubblicherà tutti i dati di telemetria nella risorsa di Application Insights.

  3. Seguire le indicazioni di configurazione in base alla lingua seguente.

Nota

Il supporto per Microsoft Entra ID in Application Insights .NET SDK è incluso a partire dalla versione 2.18-Beta3.

Application Insights .NET SDK supporta le classi di credenziali fornite da Azure Identity.

  • È consigliabile DefaultAzureCredential per lo sviluppo locale.
  • È consigliabile ManagedIdentityCredential usare le identità gestite assegnate dal sistema e assegnate dall'utente.
    • Per l'assegnazione del sistema, usare il costruttore predefinito senza parametri.
    • Per l'assegnazione dell'utente, specificare l'ID client al costruttore.

L'esempio seguente illustra come creare e configurare manualmente TelemetryConfiguration usando .NET:

TelemetryConfiguration.Active.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/";
var credential = new DefaultAzureCredential();
TelemetryConfiguration.Active.SetAzureTokenCredential(credential);

L'esempio seguente illustra come configurare TelemetryConfiguration usando .NET Core:

services.Configure<TelemetryConfiguration>(config =>
{
       var credential = new DefaultAzureCredential();
       config.SetAzureTokenCredential(credential);
});
services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
    ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/"
});

Disabilita autenticazione locale

Dopo aver abilitato l'autenticazione di Microsoft Entra, è possibile scegliere di disabilitare l'autenticazione locale. Questa configurazione consente di inserire i dati di telemetria autenticati esclusivamente dall'ID Entra di Microsoft e influisce sull'accesso ai dati, ad esempio tramite chiavi API.

È possibile disabilitare l'autenticazione locale usando il portale di Azure o Criteri di Azure o a livello di codice.

Azure portal

  1. Dalla risorsa di Application Insights selezionare Proprietà sotto l'intestazione Configura nel menu a sinistra. Selezionare Abilitato (fare clic per modificare) se l'autenticazione locale è abilitata.

    Screenshot che mostra le proprietà nella sezione Configura e il pulsante Di autenticazione locale Abilitato (selezionare per modificare).

  2. Selezionare Disabilitato e applicare le modifiche.

    Screenshot che mostra l'autenticazione locale con il pulsante Abilitato/Disabilitato.

  3. Dopo aver disabilitato l'autenticazione locale nella risorsa, verranno visualizzate le informazioni corrispondenti nel riquadro Panoramica .

    Screenshot che mostra la scheda Panoramica con il pulsante Di autenticazione locale Disabilitato (selezionare per modificare).

Criteri di Azure

Criteri di Azure per DisableLocalAuth negare agli utenti la possibilità di creare una nuova risorsa di Application Insights senza questa proprietà impostata su true. Il nome del criterio è Application Insights components should block non-AAD auth ingestion.

Per applicare questa definizione di criteri alla sottoscrizione, creare una nuova assegnazione di criteri e assegnare i criteri.

L'esempio seguente mostra la definizione del modello di criteri:

{
    "properties": {
        "displayName": "Application Insights components should block non-AAD auth ingestion",
        "policyType": "BuiltIn",
        "mode": "Indexed",
        "description": "Improve Application Insights security by disabling log ingestion that are not AAD-based.",
        "metadata": {
            "version": "1.0.0",
            "category": "Monitoring"
        },
        "parameters": {
            "effect": {
                "type": "String",
                "metadata": {
                    "displayName": "Effect",
                    "description": "The effect determines what happens when the policy rule is evaluated to match"
                },
                "allowedValues": [
                    "audit",
                    "deny",
                    "disabled"
                ],
                "defaultValue": "audit"
            }
        },
        "policyRule": {
            "if": {
                "allOf": [
                    {
                        "field": "type",
                        "equals": "Microsoft.Insights/components"
                    },
                    {
                        "field": "Microsoft.Insights/components/DisableLocalAuth",
                        "notEquals": "true"                        
                    }
                ]
            },
            "then": {
                "effect": "[parameters('effect')]"
            }
        }
    }
}

Abilitazione a livello di codice

La proprietà DisableLocalAuth viene usata per disabilitare qualsiasi autenticazione locale nella risorsa di Application Insights. Quando questa proprietà è impostata su true, impone l'uso dell'autenticazione di Microsoft Entra per tutti gli accessi.

L'esempio seguente illustra il modello di Azure Resource Manager che è possibile usare per creare una risorsa di Application Insights basata sull'area di lavoro con LocalAuth disabilitato.

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "string"
        },
        "type": {
            "type": "string"
        },
        "regionId": {
            "type": "string"
        },
        "tagsArray": {
            "type": "object"
        },
        "requestSource": {
            "type": "string"
        },
        "workspaceResourceId": {
            "type": "string"
        },
        "disableLocalAuth": {
            "type": "bool"
        }
     
    },
    "resources": [
        {
        "name": "[parameters('name')]",
        "type": "microsoft.insights/components",
        "location": "[parameters('regionId')]",
        "tags": "[parameters('tagsArray')]",
        "apiVersion": "2020-02-02-preview",
        "dependsOn": [],
        "properties": {
            "Application_Type": "[parameters('type')]",
            "Flow_Type": "Redfield",
            "Request_Source": "[parameters('requestSource')]",
            "WorkspaceResourceId": "[parameters('workspaceResourceId')]",
            "DisableLocalAuth": "[parameters('disableLocalAuth')]"
            }
    }
 ]
}

Destinatari dei token

Quando si sviluppa un client personalizzato per ottenere un token di accesso da Microsoft Entra ID per l'invio di dati di telemetria ad Application Insights, vedere la tabella seguente per determinare la stringa di destinatari appropriata per l'ambiente host specifico.

Versione cloud di Azure Valore del gruppo di destinatari del token
Cloud pubblico di Azure https://monitor.azure.com
Microsoft Azure gestito dal cloud 21Vianet https://monitor.azure.cn
Cloud di Azure US Government https://monitor.azure.us

Se si usano cloud sovrani, è possibile trovare anche le informazioni sui destinatari nel stringa di connessione. Il stringa di connessione segue questa struttura:

InstrumentationKey={profile. InstrumentationKey}; IngestionEndpoint={ingestionEndpoint}; LiveEndpoint={liveDiagnosticsEndpoint}; AADAudience={aadAudience}

Il parametro audience, AADAudience, può variare a seconda dell'ambiente specifico.

Risoluzione dei problemi

Questa sezione fornisce scenari di risoluzione dei problemi e passaggi distinti che è possibile eseguire per risolvere un problema prima di generare un ticket di supporto.

Errori HTTP di inserimento

Il servizio di inserimento restituisce errori specifici, indipendentemente dal linguaggio SDK. Il traffico di rete può essere raccolto usando uno strumento come Fiddler. È consigliabile filtrare il traffico verso l'endpoint di inserimento impostato nella stringa di connessione.

Autenticazione HTTP/1.1 400 non supportata

Questo errore indica che la risorsa è impostata solo per Microsoft Entra-only. È necessario configurare correttamente l'SDK perché viene inviato all'API errata.

Nota

"v2/track" non supporta Microsoft Entra ID. Quando l'SDK è configurato correttamente, i dati di telemetria verranno inviati a "v2.1/track".

Successivamente, è necessario esaminare la configurazione dell'SDK.

Autorizzazione RICHIESTA HTTP/1.1 401

Questo errore indica che l'SDK è configurato correttamente, ma non è in grado di acquisire un token valido. Questo errore potrebbe indicare un problema con Microsoft Entra ID.

Successivamente, è necessario identificare le eccezioni nei log dell'SDK o negli errori di rete da Identità di Azure.

HTTP/1.1 403 Non autorizzato

Questo errore indica che l'SDK usa le credenziali senza autorizzazione per la risorsa o la sottoscrizione di Application Insights.

Prima di tutto, controllare il controllo di accesso della risorsa di Application Insights. È necessario configurare l'SDK con le credenziali con il ruolo di server di pubblicazione delle metriche di monitoraggio.

Risoluzione dei problemi specifici del linguaggio

Origine evento

Application Insights .NET SDK genera i log degli errori usando l'origine evento. Per altre informazioni sulla raccolta dei log dell'origine eventi, vedere Risoluzione dei problemi relativi a nessun dato: raccogliere i log con PerfView.

Se l'SDK non riesce a ottenere un token, il messaggio di eccezione viene registrato come Failed to get AAD Token. Error message:.

Passaggi successivi