Compartir a través de


Consideraciones de seguridad para ejecutar el panel de .NET.NET Aspire

El panel .NET.NET Aspire ofrece información eficaz a las aplicaciones. El panel muestra información sobre los recursos, incluida su configuración, los registros de consola y la telemetría detallada.

Los datos que se muestran en el panel pueden ser confidenciales. Por ejemplo, la configuración puede incluir secretos en variables de entorno y la telemetría puede incluir datos confidenciales en tiempo de ejecución. Se debe tener cuidado para proteger el acceso al panel.

Escenarios para ejecutar el panel

El panel se puede ejecutar en diferentes escenarios, como iniciar automáticamente mediante herramientas de .NET Aspire o como una aplicación independiente que sea independiente de otras integraciones de .NET Aspire. Los pasos para proteger el panel dependen de cómo se ejecuta.

herramientas de .NET.NET Aspire

El panel se inicia automáticamente cuando se ejecuta un host de aplicación de .NET.NET Aspire. El panel es seguro de forma predeterminada cuando se ejecuta desde .NET.NET Aspire herramientas:

  • El transporte está protegido con HTTPS. El uso de HTTPS se configura de forma predeterminada en launchSettings.json. El perfil de inicio incluye direcciones de https en applicationUrl y valores de DOTNET_DASHBOARD_OTLP_ENDPOINT_URL.
  • Front-end del explorador autenticado con un token de explorador.
  • Telemetría entrante autenticada con una clave de API.

HTTPS en el panel usa el certificado de desarrollo ASP.NET Core. El certificado debe ser de confianza para que el panel funcione correctamente. Los pasos necesarios para confiar en el certificado de desarrollo son diferentes en función del sistema operativo de la máquina:

Hay escenarios en los que es posible que desee permitir un transporte no seguro. El panel se puede ejecutar sin HTTPS desde el host de aplicación de .NET.NET Aspire configurando el valor de ASPIRE_ALLOW_UNSECURED_TRANSPORT en true. Para obtener más información, vea Permitir el transporte no seguro en .NET.NET Aspire.

Modo independiente

El panel se envía como una imagen de Docker y se puede usar sin el rest de .NET Aspire. Cuando el panel se inicia en modo independiente, el valor predeterminado es una combinación de configuraciones seguras y no seguras.

  • Front-end del explorador autenticado con un token de explorador.
  • La telemetría entrante no está seguro. Las advertencias se muestran en la interfaz de usuario de la consola y del panel.

El punto de conexión de telemetría acepta datos de OTLP entrantes sin autenticación. Cuando el punto de conexión no está seguro, el panel está abierto para recibir telemetría de aplicaciones que no son de confianza.

Para obtener información sobre cómo proteger la telemetría al ejecutar el panel en modo independiente, consulte Protección del punto de conexión de telemetría.

Punto de conexión de telemetría seguro

El panel de .NET.NET Aspire proporciona una variedad de formas de ver registros, seguimientos y métricas de la aplicación. Esta información permite realizar un seguimiento del comportamiento y el rendimiento de la aplicación y diagnosticar los problemas que surjan. Es importante que pueda confiar en esta información y se muestra una advertencia en la interfaz de usuario del panel si la telemetría no está protegida.

El panel recopila telemetría a través de un punto de conexión de OTLP (protocoloOpenTelemetry). Las aplicaciones envían telemetría a este punto de conexión y el panel almacena la información externa que recibe en la memoria, a la que se puede acceder a través de la interfaz de usuario.

Para evitar que las aplicaciones que no son de confianza envíen telemetría a .NET.NET Aspire, el punto de conexión de OTLP debe protegerse. El punto de conexión de OTLP se protege automáticamente con una clave de API cuando se inicia el panel .NET.NET Aspire herramientas. Se requiere configuración adicional para el modo independiente.

La autenticación de clave de API se puede habilitar en el punto de conexión de telemetría con alguna configuración adicional:

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

El comando Docker anterior:

  • Inicia la imagen del panel de .NET.NET Aspire y expone el punto de conexión de OTLP como puerto 4317.
  • Configura el punto de conexión de OTLP para usar la autenticación ApiKey. Esto requiere que la telemetría entrante tenga un valor de encabezado x-otlp-api-key válido.
  • Configura la clave de API esperada. {MY_APIKEY} en el valor de ejemplo debe reemplazarse por una clave de API real. La clave de API puede ser cualquier texto, pero se recomienda un valor con al menos 128 bits de entropía.

Cuando se configura la autenticación de clave de API, el panel valida que la telemetría entrante tenga una clave de API necesaria. Las aplicaciones que envían la telemetría del panel deben configurarse para enviar la clave de API. Esto se puede configurar en .NET con OtlpExporterOptions.Headers:

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

Otros lenguajes tienen diferentes API de OpenTelmetry. Pasar la variable de entorno OTEL_EXPORTER_OTLP_HEADERS a las aplicaciones es una manera universal de configurar el encabezado.

Agotamiento de memoria

El panel almacena información externa que recibe en memoria, como los detalles del recurso y la telemetría. Aunque el número de recursos a los que se enlaza el panel, no hay un límite para la cantidad de aplicaciones de telemetría que se envían al panel. Los límites deben colocarse en la cantidad de información almacenada para evitar que el panel use una cantidad excesiva de memoria y agotar la memoria disponible en la máquina actual.

Límites de telemetría

Para ayudar a evitar el agotamiento de memoria, el panel limita la cantidad de telemetría que almacena de forma predeterminada. Por ejemplo, hay un máximo de 10 000 entradas de registro estructuradas por recurso. Una vez alcanzado el límite, cada nueva entrada de registro recibida hace que se quite una entrada anterior.

La configuración puede personalizar los límites de telemetría.