You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过托管身份从.NET API连接Azure Log Analytics工作区

用托管身份替代Azure AD应用权限连接Log Analytics工作区(C#实现)

完全可以用托管身份替代Azure AD应用权限来连接Log Analytics工作区,不需要注册独立的AD应用,而且更安全(无需管理客户端密钥等敏感信息)。以下是具体实现步骤:

1. 配置托管身份与权限

  • 为你的C#应用所在的Azure资源(比如Azure Function、VM、App Service等)开启系统分配托管身份,或者创建用户分配托管身份并关联到该资源。
  • 在Log Analytics工作区的IAM访问控制中,为这个托管身份分配合适的角色:比如Log Analytics Reader(只读查询)或Log Analytics Contributor(读写权限),根据业务需求选择。

2. C#代码实现

使用Azure官方的Azure.Identity和Azure.Monitor.Query库来实现,无需手动处理令牌获取逻辑:

首先安装必要的NuGet包:

Install-Package Azure.Identity
Install-Package Azure.Monitor.Query

示例代码:

using Azure.Identity;
using Azure.Monitor.Query;

var workspaceId = "你的Log Analytics工作区ID";
// DefaultAzureCredential会自动适配环境:Azure托管环境用托管身份,本地开发用Azure CLI/VS登录身份
var credential = new DefaultAzureCredential();

// 初始化Log查询客户端
var logsClient = new LogsQueryClient(credential);

// 执行Kusto查询
var kustoQuery = "SecurityEvent | take 10";
var queryResponse = await logsClient.QueryWorkspaceAsync(workspaceId, kustoQuery);

// 处理查询结果
foreach (var row in queryResponse.Value)
{
    Console.WriteLine($"事件时间: {row["TimeGenerated"]}, 事件ID: {row["EventID"]}");
}

如果使用用户分配托管身份,只需把DefaultAzureCredential替换为指定客户端ID的ManagedIdentityCredential:

var credential = new ManagedIdentityCredential("你的用户分配托管身份客户端ID");

3. 注意事项

  • 确保托管身份的IAM角色分配已生效(通常需要几分钟)。
  • 不需要配置任何AD应用相关的敏感信息(客户端ID、密钥、租户ID),避免密钥泄露风险。
  • 本地调试时,DefaultAzureCredential会自动使用你本地登录的Azure身份(比如Azure CLI、Visual Studio登录的账号),无需额外配置。

内容的提问来源于stack exchange,提问作者Zhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 09:00:03