ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ApplicationInsights-dotnet 安全进阶:用 AAD/Entra ID 认证替代连接字符串的零信任方案

ApplicationInsights-dotnet 安全进阶:用 AAD/Entra ID 认证替代连接字符串的零信任方案 ApplicationInsights-dotnet 安全进阶用 AAD/Entra ID 认证替代连接字符串的零信任方案【免费下载链接】ApplicationInsights-dotnetApplicationInsights-dotnet项目地址: https://gitcode.com/gh_mirrors/ap/ApplicationInsights-dotnet本文介绍ApplicationInsights-dotnet如何用AADAzure Active Directory/ Entra ID 认证替代连接字符串中的 InstrumentationKey为 .NET 应用实现零信任遥测上报。只需几行配置就能让遥测数据以身份而非密钥通过身份验证从根上消除密钥泄露风险。为什么要把连接字符串换成 AAD 认证传统方式下应用靠连接字符串里的InstrumentationKey上报遥测数据。这种做法有几个典型痛点维度连接字符串 InstrumentationKeyAAD / Entra ID 认证凭据形态静态字符串写死在代码或配置里短期有效的身份令牌自动刷新泄露风险密钥进源码、被提交到仓库即泄露无长期凭据令牌过期自动作废权限管理一把钥匙开所有门可结合托管标识Managed Identity按环境授权零信任契合度低高每次上报都验证身份核心思路不再把钥匙交给应用而是让应用先证明我是谁再允许它上报数据。这正是零信任Zero Trust模型在可观测性链路上的落地。底层原理ApplicationInsights-dotnet 如何接入 Entra ID在 3.x 版本中SDK 底层已切换到 OpenTelemetry 管道AAD 认证的接入点非常清晰调用 TelemetryConfiguration.SetAzureTokenCredential 传入一个Azure.Core.TokenCredentialSDK 内部会把它透传给 Azure Monitor Exporter 的Credential选项由导出器在每次上报时自动获取、刷新令牌在依赖注入DI场景中则直接给 ApplicationInsightsServiceOptions.Credential 赋值即可。也就是说两种写法殊途同归——最终都会设置为导出器的AzureMonitorExporterOptions.Credential。相关行为有完整的单元测试覆盖见 TelemetryConfigurationAadTests.cs正常凭据生效、空凭据抛异常、配置构建后禁止再修改。快速上手3 步在非 DI 场景启用 AAD 认证适用于控制台应用、经典 ASP.NET如 examples/ClassicAspNetWebApp/Global.asax.cs 中的示例。只需引入Azure.Identity包然后var config TelemetryConfiguration.CreateDefault(); config.ConnectionString InstrumentationKey...;IngestionEndpoint...; config.SetAzureTokenCredential(new DefaultAzureCredential()); var client new TelemetryClient(config);3 个要点3.x 中TelemetryConfiguration.Active已移除改用TelemetryConfiguration.CreateDefault()必须在创建 TelemetryClient 之前调用SetAzureTokenCredential()——配置一旦构建完成就不允许再修改连接字符串仍需保留指向目标工作区但其中的密钥不再是认证依据。ASP.NET Core / Worker ServiceDI 场景一行搞定使用依赖注入时推荐直接用Credential选项这是 3.x 的新增、首选方式builder.Services.AddApplicationInsightsTelemetry(options { options.ConnectionString InstrumentationKey...;IngestionEndpoint...; options.Credential new DefaultAzureCredential(); }); 使用 NLog 目标上报时同理在 NLog 配置中给Credential属性赋DefaultAzureCredential即可开启 AAD 认证参考 examples/NLogConsoleApp/Program.cs。从 2.x 迁移过来的 3 个动作删移除调用旧版SetAzureTokenCredential(object)的IConfigureOptionsTelemetryConfiguration辅助类及其注册改参数从object变为强类型TokenCredential去掉强制类型转换设在AddApplicationInsightsTelemetry()的 options 中直接设置options.Credential。详细迁移对照可查阅 aad-authentication-migration.md。选对凭据DefaultAzureCredential 还是 ManagedIdentityCredentialAzure.Identity提供了多种TokenCredential实现按部署环境选择凭据适用场景说明DefaultAzureCredential开发机 多环境通用按内置顺序尝试环境变量、托管标识、Azure CLI 等多种来源开箱即用ManagedIdentityCredential(your-client-id)App Service、AKS、VM 等托管环境直接指定托管标识的 Client ID链路最短、最安全// 针对特定托管标识推荐用于生产环境 config.SetAzureTokenCredential(new ManagedIdentityCredential(your-client-id));本地开发时DefaultAzureCredential会自动回退到 Azure CLI 登录身份同一份代码无需修改即可覆盖开发和生产环境——这也是零信任方案体验顺滑的关键。常见坑与注意事项 ⚠️构建后再设置会抛异常SetAzureTokenCredential只能在 SDK 构建前调用否则抛出InvalidOperationException。把认证配置集中放在应用启动最早期传 null 会抛ArgumentNullException3.x 是强类型签名编译器会帮你提前拦截错误比 2.x 的反射式object参数安全得多仍依赖Azure.Identity包这是引入TokenCredential类型的包别忘了添加连接字符串本身也要防泄露可以改用环境变量APPLICATIONINSIGHTS_CONNECTION_STRING注入SDK 在代码未显式设置时会自动读取见 TelemetryConfiguration.Build 的回退逻辑。小结ApplicationInsights-dotnet 3.x 通过SetAzureTokenCredential非 DI或ApplicationInsightsServiceOptions.CredentialDI两条路径支持AAD / Entra ID 认证用身份令牌替代静态 InstrumentationKey配合托管标识即可实现零信任遥测上报迁移成本低删旧类、改强类型、设新属性三步完成。延伸资料完整迁移指南aad-authentication-migration.md3.x 变更记录CHANGELOG.md更多安全与认证实践MigrationGuidance.md【免费下载链接】ApplicationInsights-dotnetApplicationInsights-dotnet项目地址: https://gitcode.com/gh_mirrors/ap/ApplicationInsights-dotnet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表