如何使用托管标识(Entra ID)向Azure Monitor OpenTelemetry进行身份验证?
如何使用托管标识(Entra ID)向Azure Monitor OpenTelemetry进行身份验证?
我来给你一步步梳理怎么配置和启用基于Microsoft Entra ID的身份验证,用于Azure Monitor OpenTelemetry Distro,这是官方推荐的标准实现方式:
首先在你的ASP.NET Core项目里,按照下面的代码示例完成基础配置:
// 创建一个新的ASP.NET Core Web应用构建器 var builder = WebApplication.CreateBuilder(args); // 向应用添加OpenTelemetry遥测服务 // 该服务负责处理遥测数据的收集、处理与导出 builder.Services.AddOpenTelemetry() // 配置指标收集与Azure Monitor导出 .WithMetrics(metrics => metrics .AddAspNetCoreInstrumentation() .AddAzureMonitorMetricExporter(exporter => { // 启用基于Entra ID的身份验证 exporter.UseAzureTokenCredential = true; })) // 配置追踪数据收集与Azure Monitor导出 .WithTracing(tracing => tracing .AddAspNetCoreInstrumentation() .AddAzureMonitorTraceExporter(exporter => { // 启用基于Entra ID的身份验证 exporter.UseAzureTokenCredential = true; })); var app = builder.Build(); // 这里可以继续添加你的应用中间件配置,比如路由、授权等 app.MapGet("/", () => "Hello World!"); app.Run();
另外还有几个关键的前置和注意事项要记牢:
- 你的应用必须已经在Azure环境中配置了系统分配或用户分配的托管标识,这是Entra ID身份验证的基础
- 务必给这个托管标识授予对应的Azure Monitor权限,比如**「Monitoring Metrics Publisher」(用于指标推送)或者「Log Analytics Contributor」**(用于日志/追踪推送),没有这些权限的话,数据是无法成功发送到Azure Monitor的
- 当你设置
UseAzureTokenCredential = true后,OpenTelemetry导出器会自动通过托管标识获取访问令牌,不需要再在连接字符串里配置密钥,这样更安全
备注:内容来源于stack exchange,提问作者Mo B.
相关产品推荐
相关产品推荐

