Udostępnij za pośrednictwem


Zagadnienia dotyczące zabezpieczeń dotyczące uruchamiania pulpitu nawigacyjnego .NET.NET Aspire

Pulpit nawigacyjny .NET.NET Aspire oferuje zaawansowane szczegółowe informacje dla aplikacji. Na pulpicie nawigacyjnym są wyświetlane informacje o zasobach, w tym ich konfiguracja, dzienniki konsoli i szczegółowe dane telemetryczne.

Dane wyświetlane na pulpicie nawigacyjnym mogą być poufne. Na przykład konfiguracja może zawierać wpisy tajne w zmiennych środowiskowych, a dane telemetryczne mogą obejmować poufne dane środowiska uruchomieniowego. Należy zadbać o zabezpieczenie dostępu do pulpitu nawigacyjnego.

Scenariusze uruchamiania pulpitu nawigacyjnego

Pulpit nawigacyjny można uruchamiać w różnych scenariuszach, takich jak automatyczne uruchamianie przez narzędzia .NET Aspire lub jako autonomiczna aplikacja oddzielona od innych integracji .NET Aspire. Kroki zabezpieczania pulpitu nawigacyjnego zależą od sposobu jego uruchamiania.

narzędzia .NET.NET Aspire

Pulpit nawigacyjny jest uruchamiany automatycznie po uruchomieniu hosta aplikacji .NET.NET Aspire. Pulpit nawigacyjny jest domyślnie bezpieczny podczas uruchamiania z narzędzi .NET.NET Aspire:

  • Transport jest zabezpieczony przy użyciu protokołu HTTPS. Korzystanie z protokołu HTTPS jest domyślnie konfigurowane w launchSettings.json. Profil uruchamiania zawiera adresy https w wartościach applicationUrl i DOTNET_DASHBOARD_OTLP_ENDPOINT_URL.
  • Fronton przeglądarki uwierzytelniony przy użyciu tokenu przeglądarki.
  • Przychodzące dane telemetryczne uwierzytelnione przy użyciu klucza interfejsu API.

Protokół HTTPS na pulpicie nawigacyjnym używa certyfikatu dewelopera ASP.NET Core. Aby pulpit nawigacyjny działał prawidłowo, certyfikat musi być zaufany. Kroki wymagane do zaufania certyfikatowi programistycznemu różnią się w zależności od systemu operacyjnego maszyny:

Istnieją scenariusze, w których można zezwolić na niezabezpieczony transport. Pulpit nawigacyjny może działać bez protokołu HTTPS z hosta aplikacji .NET.NET Aspire, konfigurując ustawienie ASPIRE_ALLOW_UNSECURED_TRANSPORT na true. Aby uzyskać więcej informacji, zobacz Zezwalaj na niezabezpieczony transport w .NET.NET Aspire.

Tryb autonomiczny

Pulpit nawigacyjny jest dostarczany jako obraz Docker i może być używany bez reszty .NET Aspire. Po uruchomieniu pulpitu nawigacyjnego w trybie autonomicznym domyślnie jest to kombinacja bezpiecznych i niezabezpieczonych ustawień.

  • Fronton przeglądarki uwierzytelniony przy użyciu tokenu przeglądarki.
  • Przychodzące dane telemetryczne są niezabezpieczone. Ostrzeżenia są wyświetlane w konsoli i interfejsie użytkownika pulpitu nawigacyjnego.

Punkt końcowy telemetrii akceptuje przychodzące dane OTLP bez uwierzytelniania. Gdy punkt końcowy jest niezabezpieczony, pulpit nawigacyjny jest otwarty w celu odbierania danych telemetrycznych z niezaufanych aplikacji.

Aby uzyskać informacje na temat zabezpieczania danych telemetrycznych podczas uruchamiania pulpitu nawigacyjnego w trybie autonomicznym, zobacz Zabezpieczanie punktu końcowego telemetrii.

Zabezpieczanie punktu końcowego telemetrii

Pulpit nawigacyjny .NET.NET Aspire oferuje różne sposoby wyświetlania dzienników, śladów i metryk dla aplikacji. Te informacje umożliwiają śledzenie zachowania i wydajności aplikacji oraz diagnozowanie wszelkich pojawiających się problemów. Ważne jest, aby ufać tym informacjom, a ostrzeżenie jest wyświetlane w interfejsie użytkownika pulpitu nawigacyjnego, jeśli dane telemetryczne nie są zabezpieczone.

Pulpit nawigacyjny zbiera dane telemetryczne za pośrednictwem punktu końcowego OTLP (protokół). Aplikacje wysyłają dane telemetryczne do tego punktu końcowego, a pulpit nawigacyjny przechowuje informacje zewnętrzne odbierane w pamięci, która jest następnie dostępna za pośrednictwem interfejsu użytkownika.

Aby uniemożliwić niezaufanym aplikacjom wysyłanie danych telemetrycznych do .NET.NET Aspire, punkt końcowy OTLP powinien być zabezpieczony. Punkt końcowy OTLP jest automatycznie zabezpieczony za pomocą klucza interfejsu API podczas uruchamiania pulpitu nawigacyjnego przez narzędzia .NET.NET Aspire. Dodatkowa konfiguracja jest wymagana dla trybu autonomicznego.

Uwierzytelnianie klucza interfejsu API można włączyć w punkcie końcowym telemetrii z dodatkową konfiguracją:

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

Poprzednie polecenie Docker:

  • Uruchamia obraz pulpitu nawigacyjnego .NET.NET Aspire i uwidacznia punkt końcowy OTLP jako port 4317
  • Konfiguruje punkt końcowy OTLP do korzystania z uwierzytelniania ApiKey. Wymaga to, aby przychodzące dane telemetryczne mają prawidłową wartość nagłówka x-otlp-api-key.
  • Konfiguruje oczekiwany klucz interfejsu API. {MY_APIKEY} w przykładowej wartości należy zastąpić rzeczywistym kluczem interfejsu API. Klucz interfejsu API może być dowolnym tekstem, ale zalecana jest wartość z co najmniej 128 bitami entropii.

Po skonfigurowaniu uwierzytelniania klucza interfejsu API pulpit nawigacyjny sprawdza, czy przychodzące dane telemetryczne mają wymagany klucz interfejsu API. Aplikacje wysyłające dane telemetryczne pulpitu nawigacyjnego muszą być skonfigurowane do wysyłania klucza interfejsu API. Można to skonfigurować w .NET za pomocą OtlpExporterOptions.Headers:

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

Inne języki mają różne interfejsy API OpenTelmetry. Przekazywanie zmiennej środowiskowej OTEL_EXPORTER_OTLP_HEADERS do aplikacji to uniwersalny sposób konfigurowania nagłówka.

Wyczerpanie pamięci

Pulpit nawigacyjny przechowuje informacje zewnętrzne odbierane w pamięci, takie jak szczegóły zasobów i dane telemetryczne. Chociaż liczba zasobów śledzonych przez pulpit nawigacyjny jest ograniczona, nie ma limitu liczby aplikacji telemetrycznych wysyłanych do pulpitu nawigacyjnego. Należy ograniczyć ilość przechowywanych informacji, aby zapobiec nadmiernej ilości pamięci na pulpicie nawigacyjnym i wyczerpaniu dostępnej pamięci na bieżącej maszynie.

Limity telemetrii

Aby zapobiec wyczerpaniu pamięci, pulpit nawigacyjny ogranicza domyślnie ilość przechowywanych przez nią danych telemetrycznych. Na przykład istnieje maksymalnie 10 000 wpisów dziennika strukturalnego na zasób. Po osiągnięciu limitu każdy nowy wpis dziennika odebrany powoduje usunięcie starego wpisu.

Konfiguracja może dostosować limity telemetrii.