Freigeben über


Sicherheitsüberlegungen zum Ausführen des .NET.NET Aspire Dashboards

Das .NET.NET Aspire-Dashboard bietet leistungsstarke Einblicke in Ihre Apps. Das Dashboard zeigt Informationen zu Ressourcen an, einschließlich ihrer Konfiguration, Konsolenprotokolle und detaillierter Telemetrie.

Daten, die im Dashboard angezeigt werden, können vertraulich sein. Beispielsweise kann die Konfiguration geheime Schlüssel in Umgebungsvariablen enthalten, und Telemetrie kann vertrauliche Laufzeitdaten enthalten. Achten Sie darauf, den Zugriff auf das Dashboard zu sichern.

Szenarien zum Ausführen des Dashboards

Das Dashboard kann in verschiedenen Szenarien ausgeführt werden, z. B. automatisch mit .NET Aspire Tools oder als eigenständige Anwendung, die von anderen .NET Aspire Integrationen getrennt ist. Schritte zum Sichern des Dashboards hängen davon ab, wie es ausgeführt wird.

.NET .NET Aspire Tools

Das Dashboard wird automatisch gestartet, wenn ein .NET.NET Aspire App-Host ausgeführt wird. Das Dashboard ist standardmäßig sicher, wenn es über .NET.NET Aspire Tooling ausgeführt wird:

  • Der Transport ist mit HTTPS gesichert. Die Verwendung von HTTPS ist in launchSettings standardmäßig konfiguriert.json. Das Startprofil enthält https Adressen in applicationUrl und DOTNET_DASHBOARD_OTLP_ENDPOINT_URL Werten.
  • Browser-Frontend mit einem Browsertoken authentifiziert.
  • Eingehende Telemetrie, die mit einem API-Schlüssel authentifiziert wurde.

HTTPS im Dashboard verwendet das ASP.NET Core Entwicklungszertifikat. Das Zertifikat muss vertrauenswürdig sein, damit das Dashboard ordnungsgemäß funktioniert. Die Schritte, die erforderlich sind, um dem Entwicklungszertifikat zu vertrauen, unterscheiden sich je nach Betriebssystem des Computers:

Es gibt Szenarien, in denen Sie einen unsicheren Transport zulassen möchten. Das Dashboard kann ohne HTTPS vom .NET.NET Aspire App-Host ausgeführt werden, indem die einstellung ASPIRE_ALLOW_UNSECURED_TRANSPORT auf truekonfiguriert wird. Weitere Informationen finden Sie unter Zulassen des ungesicherten Transports in .NET.NET Aspire.

Eigenständiger Modus

Das Dashboard wird als Docker Bild ausgeliefert und kann ohne die rest von .NET Aspireverwendet werden. Wenn das Dashboard im eigenständigen Modus gestartet wird, wird standardmäßig eine Mischung aus sicheren und ungesicherten Einstellungen verwendet.

  • Browser-Frontend mit einem Browsertoken authentifiziert.
  • Eingehende Telemetrie ist ungesichert. Warnungen werden in der Konsolen- und Dashboard-Benutzeroberfläche angezeigt.

Der Telemetrieendpunkt akzeptiert eingehende OTLP-Daten ohne Authentifizierung. Wenn der Endpunkt ungesichert ist, ist das Dashboard geöffnet, um Telemetrie von nicht vertrauenswürdigen Apps zu empfangen.

Informationen zum Sichern der Telemetrie beim Ausführen des Dashboards im eigenständigen Modus finden Sie unter Sichern des Telemetrieendpunkts.

Endpunkt für sichere Telemetrie

Das .NET.NET Aspire-Dashboard bietet eine Vielzahl von Möglichkeiten zum Anzeigen von Protokollen, Ablaufverfolgungen und Metriken für Ihre App. Mit diesen Informationen können Sie das Verhalten und die Leistung Ihrer App nachverfolgen und probleme diagnostizieren, die auftreten. Es ist wichtig, dass Sie diesen Informationen vertrauen können, und eine Warnung wird in der Dashboard-Benutzeroberfläche angezeigt, wenn Telemetrie nicht gesichert ist.

Das Dashboard sammelt Telemetrie über einen OTLP (OpenTelemetry Protokoll) Endpunkt. Apps senden Telemetrie an diesen Endpunkt, und das Dashboard speichert die externen Informationen, die sie im Arbeitsspeicher empfängt, was dann über die Benutzeroberfläche zugänglich ist.

Um zu verhindern, dass nicht vertrauenswürdige Apps Telemetrie an .NET.NET Aspiresenden, sollte der OTLP-Endpunkt gesichert werden. Der OTLP-Endpunkt wird automatisch mit einem API-Schlüssel gesichert, wenn das Dashboard durch .NET.NET Aspire Tools gestartet wird. Für den eigenständigen Modus ist eine zusätzliche Konfiguration erforderlich.

Die API-Schlüsselauthentifizierung kann auf dem Telemetrieendpunkt mit einer zusätzlichen Konfiguration aktiviert werden:

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

Der oben Docker Befehl:

  • Startet das .NET.NET Aspire Dashboardimage und macht den OTLP-Endpunkt als Port 4317 verfügbar.
  • Konfiguriert den OTLP-Endpunkt für die Verwendung ApiKey Authentifizierung. Dies erfordert, dass eingehende Telemetrie einen gültigen x-otlp-api-key Headerwert aufweist.
  • Konfiguriert den erwarteten API-Schlüssel. {MY_APIKEY} im Beispielwert sollte durch einen echten API-Schlüssel ersetzt werden. Der API-Schlüssel kann ein beliebiger Text sein, aber ein Wert mit mindestens 128 Bit Entropie wird empfohlen.

Wenn die API-Schlüsselauthentifizierung konfiguriert ist, überprüft das Dashboard eingehende Telemetrie mit einem erforderlichen API-Schlüssel. Apps, die die Dashboard-Telemetrie senden, müssen so konfiguriert werden, dass der API-Schlüssel gesendet wird. Dies kann in .NET mit OtlpExporterOptions.Headerskonfiguriert werden:

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

Andere Sprachen weisen unterschiedliche OpenTelmetry-APIs auf. Das Übergeben der OTEL_EXPORTER_OTLP_HEADERS Umgebungsvariablen an Apps ist eine universelle Möglichkeit zum Konfigurieren des Headers.

Speichererschöpfung

Das Dashboard speichert externe Informationen, die es im Arbeitsspeicher empfängt, z. B. Ressourcendetails und Telemetrie. Während die Anzahl der Ressourcen, die die Dashboardspuren begrenzt haben, gibt es keine Beschränkung auf die Anzahl der Telemetrie-Apps, die an das Dashboard gesendet werden. Es müssen Grenzwerte für die Menge der Gespeicherten Informationen gesetzt werden, um zu verhindern, dass das Dashboard übermäßig viel Arbeitsspeicher und auf dem aktuellen Computer verfügbaren Arbeitsspeicher verbraucht.

Telemetriegrenzwerte

Um die Speicherauslastung zu verhindern, schränkt das Dashboard die Anzahl der Telemetrie ein, die standardmäßig gespeichert wird. Es gibt beispielsweise maximal 10.000 strukturierte Protokolleinträge pro Ressource. Sobald der Grenzwert erreicht ist, bewirkt jeder empfangene neue Protokolleintrag, dass ein alter Eintrag entfernt wird.

Die Konfiguration kann Telemetriegrenzwerte anpassen.