运行 .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 证书
在某些情况下,你可能希望允许不安全的传输。 仪表板可以通过将 ASPIRE_ALLOW_UNSECURED_TRANSPORT
设置配置为 true
,从 .NET.NET Aspire 应用主机中运行 HTTPS。 有关详细信息,请参阅 允许 .NET.NET Aspire中的不安全传输。
独立模式
仪表板作为 Docker 映像提供,无需 .NET Aspirerest 即可使用。 在独立模式下启动仪表板时,默认为安全设置和不安全设置的组合。
- 使用浏览器令牌进行身份验证的浏览器前端。
- 传入的遥测数据不安全。 警告显示在控制台和仪表板 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 密钥。 可以使用 OtlpExporterOptions.Headers
在 .NET 中配置此配置:
builder.Services.Configure<OtlpExporterOptions>(
o => o.Headers = $"x-otlp-api-key={MY_APIKEY}");
其他语言具有不同的 OpenTelmetry API。 将 OTEL_EXPORTER_OTLP_HEADERS
环境变量 传递给应用是配置标头的通用方法。
内存耗尽
仪表板将它接收的外部信息存储在内存中,例如资源详细信息和遥测数据。 虽然仪表板跟踪的资源数量有限,但不会限制发送到仪表板的遥测应用数量。 必须限制存储多少信息,以防止仪表板使用过多的内存和耗尽当前计算机上的可用内存。
遥测限制
为了帮助防止内存耗尽,仪表板会限制默认存储的遥测数据量。 例如,每个资源最多有 10,000 个结构化日志条目。 达到限制后,收到的每个新日志条目都会导致删除旧条目。
配置可以自定义遥测限制。