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
emapplicationUrl
eDOTNET_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:
- Confie no certificado de desenvolvimento HTTPS ASP.NET Core no Windows e macOS
- Confiar no certificado HTTPS no Linux
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çalhox-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.