Partilhar via


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

O painel .NET.NET Aspire oferece informações poderosas para seus aplicativos. O painel exibe informações sobre recursos, incluindo sua configuração, logs do 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 tempo de execução. Deve-se tomar cuidado para proteger o acesso ao painel.

Cenários para executar o painel

O painel pode ser executado em diferentes cenários, como ser iniciado automaticamente por ferramentas .NET Aspire 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 a partir de ferramentas .NET.NET Aspire:

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

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 da máquina:

Há cenários em que você pode querer permitir um transporte não seguro. O painel pode ser executado sem HTTPS do host do aplicativo .NET.NET Aspire configurando a configuração ASPIRE_ALLOW_UNSECURED_TRANSPORT para true. Para obter mais informações, consulte Permitir transporte não seguro 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 assume como padrão uma combinação de configurações seguras e não seguras.

  • Frontend do navegador autenticado com um token de navegador.
  • A telemetria de entrada não é segura. 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 não é seguro, o painel fica 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 segura

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 seu aplicativo e diagnostique quaisquer problemas que surjam. É 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 que recebe na memória, que é acessível por meio da interface do usuário.

Para evitar 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 é automaticamente protegido com uma chave de API quando o painel é iniciado por ferramentas .NET.NET Aspire. É necessária uma configuração adicional para o modo autónomo.

A autenticação de chave de API pode ser habilitada no ponto de extremidade de telemetria com algumas configurações adicionais:

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 a autenticação ApiKey. Isso requer que a telemetria de entrada tenha um valor de cabeçalho 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 da API pode ser qualquer texto, mas recomenda-se 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 que tem uma chave de API necessária. Os aplicativos que enviam a telemetria do painel devem ser configurados para enviar a chave da API. Isso pode ser configurado de .NET com OtlpExporterOptions.Headers:

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

Outras linguagens 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.

Exaustão da memória

O painel armazena informações externas que recebe na memória, como detalhes de recursos e telemetria. Embora o número de recursos que o painel rastreia seja limitado, não há um limite para a quantidade de aplicativos de telemetria enviados para o painel. Devem ser colocados limites à quantidade de informação armazenada para evitar que o painel utilize uma quantidade excessiva de memória e esgote a memória disponível na máquina 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. Quando 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.