Рекомендации по безопасности для запуска панели мониторинга .NET.NET Aspire
Панель мониторинга
Данные, отображаемые на панели мониторинга, могут быть конфиденциальными. Например, конфигурация может включать секреты в переменные среды, а данные телеметрии могут включать конфиденциальные данные среды выполнения. Необходимо обеспечить безопасный доступ к панели мониторинга.
Сценарии запуска панели мониторинга
Панель мониторинга может выполняться в разных сценариях, таких как автоматическое запуск с помощью .NET Aspire инструментов или автономное приложение, отдельное от других интеграции .NET Aspire. Действия по защите панели мониторинга зависят от того, как она выполняется.
.NET .NET Aspire инструментов
Панель мониторинга автоматически запускается при запуске узла приложения .NET.NET Aspire. Панель мониторинга безопасна по умолчанию при запуске из .NET.NET Aspire инструментов:
- Транспорт защищен с помощью ПРОТОКОЛА HTTPS. Использование HTTPS настроено по умолчанию в launchSettings.json. Профиль запуска содержит адреса
https
в значенияхapplicationUrl
иDOTNET_DASHBOARD_OTLP_ENDPOINT_URL
. - Интерфейс браузера, прошедший проверку подлинности с помощью маркера браузера.
- Входящие данные телеметрии прошли проверку подлинности с помощью ключа API.
HTTPS на панели мониторинга использует сертификат разработки ASP.NET Core. Сертификат должен быть доверенным для правильной работы панели мониторинга. Действия, необходимые для доверия сертификату разработки, отличаются в зависимости от операционной системы компьютера:
- доверять сертификату разработки HTTPS ASP.NET Core в Windows и macOS
- доверять сертификату HTTPS на Linux
Существуют сценарии, в которых может потребоваться разрешить незащищенный транспорт. Панель мониторинга может выполняться без HTTPS из узла приложения .NET.NET Aspire, настроив параметр ASPIRE_ALLOW_UNSECURED_TRANSPORT
для true
. Дополнительные сведения см. в разделе Разрешить незащищенный транспорт в .NET.NET Aspire.
Автономный режим
Панель мониторинга поставляется как изображение Docker и может использоваться без остальных .NET Aspire. При запуске панели мониторинга в автономном режиме по умолчанию используется сочетание безопасных и незащищенных параметров.
- Интерфейс браузера, прошедший проверку подлинности с помощью маркера браузера.
- Входящие данные телеметрии незащищены. Предупреждения отображаются в пользовательском интерфейсе консоли и панели мониторинга.
Конечная точка телеметрии принимает входящие данные OTLP без проверки подлинности. Если конечная точка незащищена, панель мониторинга открыта для получения телеметрии из ненадежных приложений.
Сведения о защите телеметрии при запуске панели мониторинга в автономном режиме см. в защите конечной точки телеметрии.
Безопасная конечная точка телеметрии
Панель мониторинга .NET.NET Aspire предоставляет различные способы просмотра журналов, трассировок и метрик для приложения. Эта информация позволяет отслеживать поведение и производительность приложения и диагностировать возникающие проблемы. Важно, чтобы вы могли доверять этой информации, и предупреждение отображается в пользовательском интерфейсе панели мониторинга, если данные телеметрии не защищены.
Панель мониторинга собирает данные телеметрии через конечную точку OTLP (протоколOpenTelemetry). Приложения отправляют данные телеметрии в эту конечную точку, а панель мониторинга хранит внешнюю информацию, которую она получает в памяти, которая затем доступна через пользовательский интерфейс.
Чтобы предотвратить отправку телеметрии ненадежным приложениям в .NET.NET Aspire, необходимо защитить конечную точку OTLP. Конечная точка OTLP автоматически защищена ключом API при запуске панели мониторинга с помощью средств .NET.NET Aspire. Дополнительная конфигурация необходима для автономного режима.
Аутентификация ключа API может быть включена в конечной точке телеметрии с дополнительной конфигурацией:
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
Предыдущая команда Docker:
- Запускает образ панели мониторинга .NET.NET Aspire и предоставляет конечную точку OTLP в качестве порта 4317
- Настраивает конечную точку OTLP для использования проверки подлинности
ApiKey
. Для этого требуется, чтобы входящие данные телеметрии имеют допустимое значение заголовкаx-otlp-api-key
. - Настраивает ожидаемый ключ API.
{MY_APIKEY}
в примере значения следует заменить реальным ключом API. Ключ API может быть любым текстом, но рекомендуется использовать значение не менее 128 бит энтропии.
При настройке проверки подлинности ключа API панель мониторинга проверяет входящие данные телеметрии с обязательным ключом API. Приложения, отправляющие данные телеметрии панели мониторинга, должны быть настроены для отправки ключа API. Это можно настроить в .NET с помощью OtlpExporterOptions.Headers
:
builder.Services.Configure<OtlpExporterOptions>(
o => o.Headers = $"x-otlp-api-key={MY_APIKEY}");
Другие языки имеют разные API OpenTelmetry. Передача переменной среды OTEL_EXPORTER_OTLP_HEADERS
приложениям является универсальным способом настройки заголовка.
Исчерпание памяти
Панель мониторинга хранит внешнюю информацию, которую она получает в памяти, например сведения о ресурсах и телеметрию. Хотя количество ресурсов, отслеживаемых панелью мониторинга, привязано, нет ограничения на то, сколько приложений телеметрии отправляются на панель мониторинга. Ограничения должны быть размещены на том, сколько сведений хранится, чтобы предотвратить панель мониторинга с использованием чрезмерного объема памяти и исчерпания доступной памяти на текущем компьютере.
Ограничения телеметрии
Чтобы предотвратить исчерпание памяти, панель мониторинга ограничивает объем данных телеметрии, которую она хранит по умолчанию. Например, на ресурс имеется не более 10 000 структурированных записей журнала. После достижения ограничения каждая новая запись журнала получила, приводит к удалению старой записи.
Конфигурация может настраивать ограничения телеметрии.
.NET Aspire