Condividi tramite


Considerazioni sulla sicurezza per l'esecuzione del dashboard di .NET.NET Aspire

Il dashboard .NET.NET Aspire offre informazioni dettagliate avanzate per le app. Il dashboard visualizza informazioni sulle risorse, tra cui la configurazione, i log della console e i dati di telemetria approfonditi.

I dati visualizzati nel dashboard possono essere sensibili. Ad esempio, la configurazione può includere segreti nelle variabili di ambiente e i dati di telemetria possono includere dati di runtime sensibili. Prestare attenzione a proteggere l'accesso al dashboard.

Scenari per l'esecuzione del dashboard

Il dashboard può essere eseguito in scenari diversi, ad esempio l'avvio automatico .NET Aspire strumenti o come applicazione autonoma separata da altre integrazioni di .NET Aspire. I passaggi per proteggere il dashboard dipendono dalla modalità di esecuzione.

strumenti .NET.NET Aspire

Il dashboard viene avviato automaticamente quando viene eseguito un host app .NET.NET Aspire. Il dashboard è sicuro per impostazione predefinita quando viene eseguito dagli strumenti di .NET.NET Aspire:

  • Il trasporto è protetto con HTTPS. L'uso di HTTPS è configurato per impostazione predefinita in launchSettings.json. Il profilo di avvio include indirizzi https nei valori di applicationUrl e DOTNET_DASHBOARD_OTLP_ENDPOINT_URL.
  • Front-end del browser autenticato con un token del browser.
  • Dati di telemetria in ingresso autenticati con una chiave API.

HTTPS nel dashboard usa il certificato di sviluppo ASP.NET Core. Il certificato deve essere considerato attendibile perché il dashboard funzioni correttamente. I passaggi necessari per considerare attendibile il certificato di sviluppo sono diversi a seconda del sistema operativo del computer:

Esistono scenari in cui si potrebbe voler consentire un trasporto non protetto. Il dashboard può essere eseguito senza HTTPS dall'host dell'app .NET.NET Aspire configurando l'impostazione ASPIRE_ALLOW_UNSECURED_TRANSPORT su true. Per altre informazioni, vedere Consentire il trasporto non protetto in .NET.NET Aspire.

Modalità autonoma

Il dashboard viene fornito come immagine Docker e può essere usato senza il rest di .NET Aspire. Quando il dashboard viene avviato in modalità autonoma, per impostazione predefinita viene predefinito una combinazione di impostazioni sicure e non protette.

  • Front-end del browser autenticato con un token del browser.
  • I dati di telemetria in ingresso non sono protetti. Gli avvisi vengono visualizzati nell'interfaccia utente della console e del dashboard.

L'endpoint di telemetria accetta i dati OTLP in ingresso senza autenticazione. Quando l'endpoint non è protetto, il dashboard è aperto per ricevere dati di telemetria da app non attendibili.

Per informazioni sulla protezione dei dati di telemetria durante l'esecuzione del dashboard in modalità autonoma, vedere Protezione dell'endpoint di telemetria.

Endpoint di telemetria sicuro

Il dashboard .NET.NET Aspire offre diversi modi per visualizzare log, tracce e metriche per l'app. Queste informazioni consentono di tenere traccia del comportamento e delle prestazioni dell'app e di diagnosticare eventuali problemi che si verificano. È importante considerare attendibili queste informazioni e viene visualizzato un avviso nell'interfaccia utente del dashboard se i dati di telemetria non sono protetti.

Il dashboard raccoglie i dati di telemetria tramite un endpoint OTLP (protocollo) . Le app inviano dati di telemetria a questo endpoint e il dashboard archivia le informazioni esterne ricevute in memoria, che è quindi accessibile tramite l'interfaccia utente.

Per impedire alle app non attendibili di inviare dati di telemetria a .NET.NET Aspire, l'endpoint OTLP deve essere protetto. L'endpoint OTLP viene protetto automaticamente con una chiave API quando il dashboard viene avviato da .NET.NET Aspire strumenti. È necessaria una configurazione aggiuntiva per la modalità autonoma.

L'autenticazione con chiave API può essere abilitata nell'endpoint di telemetria con una configurazione aggiuntiva:

docker run --rm -it -d -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
    -e DASHBOARD__OTLP__AUTHMODE='ApiKey' \
    -e DASHBOARD__OTLP__PRIMARYAPIKEY='{MY_APIKEY}' \
    mcr.microsoft.com/dotnet/aspire-dashboard:9.0

Comando Docker precedente:

  • Avvia l'immagine del dashboard .NET.NET Aspire ed espone l'endpoint OTLP come porta 4317
  • Configura l'endpoint OTLP per l'uso dell'autenticazione ApiKey. Ciò richiede che i dati di telemetria in ingresso dispongano di un valore di intestazione x-otlp-api-key valido.
  • Configura la chiave API prevista. {MY_APIKEY} nel valore di esempio deve essere sostituito con una chiave API reale. La chiave API può essere qualsiasi testo, ma è consigliabile un valore con almeno 128 bit di entropia.

Quando l'autenticazione della chiave API è configurata, il dashboard convalida che i dati di telemetria in ingresso dispongano di una chiave API necessaria. Le app che inviano i dati di telemetria del dashboard devono essere configurate per inviare la chiave API. Questa operazione può essere configurata in .NET con OtlpExporterOptions.Headers:

builder.Services.Configure<OtlpExporterOptions>(
    o => o.Headers = $"x-otlp-api-key={MY_APIKEY}");

Altre lingue hanno API OpenTelmetry diverse. Il passaggio della variabile di ambiente OTEL_EXPORTER_OTLP_HEADERS alle app è un modo universale per configurare l'intestazione.

Esaurimento della memoria

Il dashboard archivia le informazioni esterne ricevute in memoria, ad esempio i dettagli delle risorse e i dati di telemetria. Anche se il numero di risorse a cui sono associate le tracce del dashboard, non esiste un limite alla quantità di dati di telemetria che le app inviano al dashboard. I limiti devono essere inseriti sulla quantità di informazioni archiviate per evitare che il dashboard usi una quantità eccessiva di memoria e esaurisca la memoria disponibile nel computer corrente.

Limiti di telemetria

Per evitare l'esaurimento della memoria, il dashboard limita la quantità di dati di telemetria archiviati per impostazione predefinita. Ad esempio, è previsto un massimo di 10.000 voci di log strutturate per risorsa. Una volta raggiunto il limite, ogni nuova voce di log ricevuta causa la rimozione di una voce precedente.

La configurazione può personalizzare i limiti di telemetria.