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 diapplicationUrl
eDOTNET_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:
- Considerare attendibile il certificato di sviluppo HTTPS ASP.NET Core in Windows e macOS
- considera attendibile il certificato HTTPS in Linux
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
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 intestazionex-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.