Delen via


Beveiligingsoverwegingen voor het uitvoeren van het .NET.NET Aspire-dashboard

Het .NET.NET Aspire dashboard biedt krachtige inzichten in uw apps. In het dashboard wordt informatie weergegeven over resources, waaronder de configuratie, consolelogboeken en uitgebreide telemetrie.

Gegevens die in het dashboard worden weergegeven, kunnen gevoelig zijn. Configuratie kan bijvoorbeeld geheimen bevatten in omgevingsvariabelen en telemetrie kan gevoelige runtimegegevens bevatten. Zorg ervoor dat u de toegang tot het dashboard beveiligt.

Scenario's voor het uitvoeren van het dashboard

Het dashboard kan in verschillende scenario's worden uitgevoerd, zoals automatisch beginnen met .NET Aspire hulpprogramma's of als een zelfstandige toepassing die losstaat van andere .NET Aspire-integraties. Stappen voor het beveiligen van het dashboard zijn afhankelijk van hoe het wordt uitgevoerd.

hulpprogramma's voor .NET.NET Aspire

Het dashboard wordt automatisch gestart wanneer een .NET.NET Aspire app-host wordt uitgevoerd. Het dashboard is standaard beveiligd wanneer het wordt uitgevoerd vanuit .NET.NET Aspire hulpprogramma's:

  • Transport wordt beveiligd met HTTPS. Het gebruik van HTTPS is standaard geconfigureerd in launchSettings.json. Het startprofiel bevat https adressen in applicationUrl en DOTNET_DASHBOARD_OTLP_ENDPOINT_URL waarden.
  • De front-end van de browser is geverifieerd met een browsertoken.
  • Binnenkomende telemetrie geverifieerd met een API-sleutel.

HTTPS in het dashboard maakt gebruik van het ASP.NET Core ontwikkelingscertificaat. Het certificaat moet worden vertrouwd om het dashboard correct te laten werken. De stappen die nodig zijn om het ontwikkelingscertificaat te vertrouwen, zijn afhankelijk van het besturingssysteem van de computer:

Er zijn scenario's waarin u mogelijk een onbeveiligd transport wilt toestaan. Het dashboard kan worden uitgevoerd zonder HTTPS van de .NET.NET Aspire-app-host door de ASPIRE_ALLOW_UNSECURED_TRANSPORT-instelling te configureren voor true. Zie Onbeveiligd vervoer toestaan in .NET.NET Aspirevoor meer informatie.

Zelfstandige modus

Het dashboard wordt geleverd als een Docker afbeelding en kan worden gebruikt zonder de rest van .NET Aspire. Wanneer het dashboard wordt gestart in de zelfstandige modus, wordt het standaard ingesteld op een combinatie van beveiligde en onbeveiligde instellingen.

  • De front-end van de browser is geverifieerd met een browsertoken.
  • Binnenkomende telemetrie is onbeveiligd. Waarschuwingen worden weergegeven in de gebruikersinterface van de console en het dashboard.

Het telemetrie-eindpunt accepteert binnenkomende OTLP-gegevens zonder verificatie. Wanneer het eindpunt onbeveiligd is, is het dashboard geopend voor het ontvangen van telemetrie van niet-vertrouwde apps.

Zie Het telemetrie-eindpunt beveiligenvoor informatie over het beveiligen van de telemetriegegevens tijdens het uitvoeren van het dashboard in de zelfstandige modus.

Telemetrie-eindpunt beveiligen

Het .NET.NET Aspire-dashboard biedt verschillende manieren om logboeken, traceringen en metrische gegevens voor uw app weer te geven. Met deze informatie kunt u het gedrag en de prestaties van uw app bijhouden en eventuele problemen vaststellen die zich voordoen. Het is belangrijk dat u deze informatie kunt vertrouwen en dat er een waarschuwing wordt weergegeven in de gebruikersinterface van het dashboard als telemetrie niet is beveiligd.

Het dashboard verzamelt telemetrie via een OTLP (OpenTelemetry protocol) eindpunt. Apps verzenden telemetrie naar dit eindpunt en het dashboard slaat de externe informatie op die in het geheugen wordt ontvangen, die vervolgens toegankelijk is via de gebruikersinterface.

Om te voorkomen dat niet-vertrouwde apps telemetrie verzenden naar .NET.NET Aspire, moet het OTLP-eindpunt worden beveiligd. Het OTLP-eindpunt wordt automatisch beveiligd met een API-sleutel wanneer het dashboard wordt gestart door .NET.NET Aspire hulpprogramma's. Er is extra configuratie vereist voor de zelfstandige modus.

Verificatie van API-sleutels kan worden ingeschakeld op het telemetrie-eindpunt met een extra configuratie:

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

De voorgaande Docker opdracht:

  • Start de .NET.NET Aspire dashboardafbeelding en toont OTLP-eindpunt als poort 4317
  • Hiermee configureert u het OTLP-eindpunt voor het gebruik van ApiKey-verificatie. Hiervoor is vereist dat binnenkomende telemetrie een geldige x-otlp-api-key headerwaarde heeft.
  • Hiermee configureert u de verwachte API-sleutel. {MY_APIKEY} in de voorbeeldwaarde moet worden vervangen door een echte API-sleutel. De API-sleutel kan elke tekst zijn, maar een waarde met ten minste 128 bits entropie wordt aanbevolen.

Wanneer VERIFICATIE van API-sleutels is geconfigureerd, valideert het dashboard dat binnenkomende telemetrie een vereiste API-sleutel heeft. Apps die de telemetrie van het dashboard verzenden, moeten worden geconfigureerd om de API-sleutel te verzenden. Dit kan worden geconfigureerd in .NET met OtlpExporterOptions.Headers:

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

Andere talen hebben verschillende OpenTelmetry-API's. Het doorgeven van de OTEL_EXPORTER_OTLP_HEADERS omgevingsvariabele aan apps is een universele manier om de header te configureren.

Geheugenuitputting

In het dashboard worden externe gegevens opgeslagen die in het geheugen worden ontvangen, zoals resourcedetails en telemetrie. Hoewel het aantal resources dat het dashboard bijhoudt, is er geen limiet voor het aantal telemetrie-apps dat naar het dashboard wordt verzonden. Er moeten limieten worden ingesteld voor de hoeveelheid informatie die wordt opgeslagen om te voorkomen dat het dashboard een overmatige hoeveelheid geheugen gebruikt en het beschikbare geheugen op de huidige computer verbruikt.

Telemetrielimieten

Om geheugenuitputting te voorkomen, beperkt het dashboard standaard hoeveel telemetrie wordt opgeslagen. Er zijn bijvoorbeeld maximaal 10.000 gestructureerde logboekvermeldingen per resource. Zodra de limiet is bereikt, zorgt elke ontvangen nieuwe logboekvermelding ervoor dat een oude vermelding wordt verwijderd.

Configuratie kan telemetrielimieten aanpassen.