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:
- Essere nel cloud pubblico.
- Acquisire familiarità con:
- Identità gestita.
- Entità servizio.
- Assegnazione dei ruoli di Azure.
- Avere un ruolo proprietario per il gruppo di risorse per concedere l'accesso usando i ruoli predefiniti di Azure.
- Comprendere gli scenari non supportati.
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:
- Application Insights Java 2.x SDK.
L'autenticazione di Microsoft Entra è disponibile solo per l'agente Java di Application Insights maggiore o uguale a 3.2.0. - ApplicationInsights JavaScript Web SDK.
- Application Insights OpenCensus Python SDK con Python versione 3.4 e 3.5.
- Strumenti automatici/monitoraggio senza codice per impostazione predefinita (per le lingue) per il servizio app Azure, Azure Macchine virtuali/Azure set di scalabilità di macchine virtuali e Funzioni di Azure.
- Profiler.
Configurare e abilitare l'autenticazione basata su ID Di Microsoft Entra
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.
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.
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
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.
Selezionare Disabilitato e applicare le modifiche.
Dopo aver disabilitato l'autenticazione locale nella risorsa, verranno visualizzate le informazioni corrispondenti nel riquadro Panoramica .
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:
.