Compartilhar via


Considerações de segurança para executar o painel de .NET.NET Aspire

O painel de .NET.NET Aspire oferece insights avançados para seus aplicativos. O painel exibe informações sobre recursos, incluindo sua configuração, logs de console e telemetria detalhada.

Os dados exibidos no painel podem ser confidenciais. Por exemplo, a configuração pode incluir segredos em variáveis de ambiente e a telemetria pode incluir dados confidenciais de runtime. Deve-se tomar cuidado para proteger o acesso ao painel.

Cenários para executar o painel

O painel pode ser executado em cenários diferentes, como ser iniciado automaticamente por .NET Aspire ferramentas ou como um aplicativo autônomo separado de outras integrações .NET Aspire. As etapas para proteger o painel dependem de como ele está sendo executado.

ferramentas .NET.NET Aspire

O painel é iniciado automaticamente quando um host de aplicativo .NET.NET Aspire é executado. O painel é seguro por padrão quando executado de .NET.NET Aspire ferramentas:

  • O transporte é protegido com HTTPS. O uso de HTTPS é configurado por padrão em launchSettings.json. O perfil de inicialização inclui endereços https em valores applicationUrl e DOTNET_DASHBOARD_OTLP_ENDPOINT_URL.
  • Front-end do navegador autenticado com um token de navegador.
  • Telemetria de entrada autenticada com uma chave de API.

O HTTPS no painel usa o certificado de desenvolvimento ASP.NET Core. O certificado deve ser confiável para que o painel funcione corretamente. As etapas necessárias para confiar no certificado de desenvolvimento são diferentes dependendo do sistema operacional do computador:

Há cenários em que talvez você queira permitir um transporte sem segurança. O painel pode ser executado sem HTTPS no host do aplicativo .NET.NET Aspire definindo a configuração de ASPIRE_ALLOW_UNSECURED_TRANSPORT para true. Para obter mais informações, consulte Permitir transporte sem segurança no .NET.NET Aspire.

Modo autônomo

O painel é enviado como uma imagem Docker e pode ser usado sem o rest de .NET Aspire. Quando o painel é iniciado no modo autônomo, ele usa como padrão uma combinação de configurações seguras e não seguras.

  • Front-end do navegador autenticado com um token de navegador.
  • A telemetria de entrada não é simultânea. Os avisos são exibidos na interface do usuário do console e do painel.

O ponto de extremidade de telemetria aceita dados OTLP de entrada sem autenticação. Quando o ponto de extremidade está sem segurança, o painel está aberto para receber telemetria de aplicativos não confiáveis.

Para obter informações sobre como proteger a telemetria ao executar o painel no modo autônomo, consulte Protegendo o ponto de extremidade de telemetria.

Ponto de extremidade de telemetria seguro

O painel .NET.NET Aspire fornece várias maneiras de exibir logs, rastreamentos e métricas para seu aplicativo. Essas informações permitem que você acompanhe o comportamento e o desempenho do aplicativo e diagnostice os problemas que surgirem. É importante que você possa confiar nessas informações e um aviso será exibido na interface do usuário do painel se a telemetria não estiver protegida.

O painel coleta telemetria por meio de um OTLP (protocoloOpenTelemetry) ponto de extremidade. Os aplicativos enviam telemetria para esse ponto de extremidade e o painel armazena as informações externas recebidas na memória, que podem ser acessadas por meio da interface do usuário.

Para impedir que aplicativos não confiáveis enviem telemetria para .NET.NET Aspire, o ponto de extremidade OTLP deve ser protegido. O ponto de extremidade OTLP é protegido automaticamente com uma chave de API quando o painel é iniciado por .NET.NET Aspire ferramentas. A configuração adicional é necessária para o modo autônomo.

A autenticação de chave de API pode ser habilitada no ponto de extremidade de telemetria com alguma configuração 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

O comando Docker anterior:

  • Inicia a imagem do painel .NET.NET Aspire e expõe o ponto de extremidade OTLP como porta 4317
  • Configura o ponto de extremidade OTLP para usar ApiKey autenticação. Isso requer que a telemetria de entrada tenha um valor de cabeçalho de x-otlp-api-key válido.
  • Configura a chave de API esperada. {MY_APIKEY} no valor de exemplo devem ser substituídos por uma chave de API real. A chave de API pode ser qualquer texto, mas é recomendável um valor com pelo menos 128 bits de entropia.

Quando a autenticação de chave de API é configurada, o painel valida a telemetria de entrada tem uma chave de API necessária. Os aplicativos que enviam a telemetria do painel devem ser configurados para enviar a chave de API. Isso pode ser configurado em .NET com OtlpExporterOptions.Headers:

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

Outros idiomas têm APIs opentelmetry diferentes. Passar a variável de ambiente OTEL_EXPORTER_OTLP_HEADERS para aplicativos é uma maneira universal de configurar o cabeçalho.

Esgotamento de memória

O painel armazena informações externas recebidas na memória, como detalhes do recurso e telemetria. Embora o número de recursos que as faixas do painel estejam limitados, não há um limite para a quantidade de telemetria que os aplicativos enviam para o painel. Os limites devem ser colocados na quantidade de informações armazenadas para impedir que o painel use uma quantidade excessiva de memória e esgotamento da memória disponível no computador atual.

Limites de telemetria

Para ajudar a evitar o esgotamento da memória, o painel limita a quantidade de telemetria que armazena por padrão. Por exemplo, há um máximo de 10.000 entradas de log estruturadas por recurso. Depois que o limite é atingido, cada nova entrada de log recebida faz com que uma entrada antiga seja removida.

A configuração pode personalizar os limites de telemetria.