執行 .NET.NET Aspire 儀錶板的安全性考慮
.NET .NET Aspire 儀錶板 提供您應用程式的強大見解。 儀錶板會顯示資源的相關信息,包括其設定、主控台記錄和深入遙測。
儀錶板中顯示的數據可能十分敏感。 例如,組態可以包含環境變數中的秘密,而遙測可以包含機密運行時間數據。 請務必小心保護儀錶板的存取。
執行儀錶板的案例
儀錶板可以在不同的案例中執行,例如自動從 .NET Aspire 工具開始,或作為與其他 .NET Aspire 整合分開的獨立應用程式。 保護儀錶板的步驟取決於其執行方式。
.NET .NET Aspire 工具
執行 .NET.NET Aspire 應用程式主機時,系統會自動啟動儀錶板。 從 .NET.NET Aspire 工具執行時,儀錶板預設為安全:
- 傳輸會受到 HTTPS 保護。
launchSettings 中預設會設定使用 HTTPS。json。 啟動配置檔包含
applicationUrl
和DOTNET_DASHBOARD_OTLP_ENDPOINT_URL
值中的https
位址。 - 使用瀏覽器令牌驗證的瀏覽器前端。
- 使用 API 金鑰驗證的傳入遙測。
儀錶板中的 HTTPS 會使用 ASP.NET Core 開發憑證。 儀錶板必須信任憑證才能正常運作。 信任開發憑證所需的步驟會根據電腦的作業系統而有所不同:
- 信任 Windows 和 macOS 上的 ASP.NET Core HTTPS 開發憑證
- 信任 Linux 上的 HTTPS 憑證
在某些情況下,您可能會想要允許不安全的傳輸。 儀錶板可以從 .NET.NET Aspire 應用程式主機執行,方法是將 ASPIRE_ALLOW_UNSECURED_TRANSPORT
設定設定設定為 true
。 如需詳細資訊,請參閱 在 .NET.NET Aspire中允許不安全的傳輸。
獨立模式
儀錶板會以 Docker 映射的形式出貨,而且不需要 .NET Aspire的 rest 即可使用。 當儀錶板以獨立模式啟動時,預設會混合使用安全與不安全的設定。
- 使用瀏覽器令牌驗證的瀏覽器前端。
- 內送遙測不安全。 警告會顯示在主控台和儀錶板UI中。
遙測端點會接受傳入的 OTLP 數據,而不需要驗證。 當端點不安全時,儀錶板會開啟,以從不受信任的應用程式接收遙測。
如需在獨立模式中執行儀錶板時保護遙測的資訊,請參閱 保護遙測端點。
保護遙測端點
.NET .NET Aspire 儀錶板提供各種方式來檢視應用程式的記錄、追蹤和計量。 這項資訊可讓您追蹤應用程式的行為和效能,以及診斷所發生的任何問題。 請務必信任這項資訊,如果遙測未受到保護,儀錶板 UI 中會顯示警告。
儀錶板會透過 OTLP(OpenTelemetry 通訊協定) 端點收集遙測。 應用程式會將遙測傳送至此端點,而儀錶板會將它接收的外部資訊儲存在記憶體中,然後可透過UI存取。
若要防止不受信任的應用程式將遙測傳送至 .NET.NET Aspire,應保護OTLP端點。 當儀錶板由 .NET.NET Aspire 工具啟動時,OTLP 端點會自動受到 API 金鑰保護。 獨立模式需要額外的設定。
您可以使用額外設定,在遙測端點上啟用 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 位的 entropy 值。
設定 API 金鑰驗證時,儀錶板會驗證傳入遙測具有必要的 API 金鑰。 傳送儀表板遙測的應用程式必須設定為傳送 API 金鑰。 這可以在 .NET 中使用 OtlpExporterOptions.Headers
進行設定:
builder.Services.Configure<OtlpExporterOptions>(
o => o.Headers = $"x-otlp-api-key={MY_APIKEY}");
其他語言有不同的 OpenTelmetry API。 將 OTEL_EXPORTER_OTLP_HEADERS
環境變數 傳遞至應用程式是設定標頭的通用方式。
記憶體耗盡
儀錶板會將它接收的外部資訊儲存在記憶體中,例如資源詳細數據和遙測。 雖然儀錶板追蹤的資源數目已系結,但不會限制遙測應用程式傳送至儀錶板的數量。 必須限制儲存多少資訊,以防止儀錶板使用過多的記憶體,並耗盡目前計算機上的可用記憶體。
遙測限制
為了協助防止記憶體耗盡,儀錶板預設會限制其儲存的遙測量。 例如,每個資源最多有10,000個結構化記錄專案。 達到限制之後,收到的每個新記錄專案都會移除舊的專案。
設定可以自定義遙測限制。