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 valoresapplicationUrl
eDOTNET_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:
- confiar no certificado de desenvolvimento HTTPS ASP.NET Core no Windows e no macOS
- confiar no certificado HTTPS no Linux
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:
- Bash
- do PowerShell
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 dex-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.