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

能否复用BlobServiceClient的账号密钥/SAS创建MetricsQueryClient?

问题解答

核心结论

答案是不行的——你没法直接复用Azure Blob Storage的连接字符串、账号密钥或SAS令牌来创建MetricsQueryClient,这两个客户端的身份验证机制完全不同:

  • BlobServiceClient是针对存储账户数据平面的操作,支持用存储密钥、SAS或连接字符串做身份验证;
  • MetricsQueryClient属于Azure Monitor的管理平面API,依赖Azure Active Directory (Azure AD) 身份验证,不支持直接使用存储账户的密钥或SAS令牌。

为什么不能复用?

Azure Monitor的指标查询是全局的管理服务,要求调用者拥有对应的Azure AD权限(比如Monitoring Reader、Reader这类角色)。而存储账户的密钥/SAS只能用来操作存储里的具体数据(比如上传下载Blob),根本没有权限访问Azure Monitor的管理接口。

正确的实现方式

要通过MetricsQueryClient查询存储账户的指标,必须用Azure AD身份验证,常用的几种方式:

  • 托管标识:如果你的应用部署在Azure服务(比如App Service、VM)上,用托管标识最省心,不用手动管理凭据;
  • 客户端凭据:本地开发或者非Azure环境的应用,可以用Azure AD注册应用的客户端ID、密钥和租户ID来验证;
  • 用户凭据:适合需要用户手动登录的场景。

示例代码(客户端凭据方式)

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

// 替换成你的实际信息
var tenantId = "你的Azure AD租户ID";
var clientId = "你的Azure AD应用客户端ID";
var clientSecret = "你的Azure AD应用客户端密钥";
var subscriptionId = "你的Azure订阅ID";
var resourceId = $"/subscriptions/{subscriptionId}/resourceGroups/{你的资源组名}/providers/Microsoft.Storage/storageAccounts/{你的存储账户名}";

// 创建Azure AD凭据
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

// 初始化MetricsQueryClient
var metricsClient = new MetricsQueryClient(credential);

// 查询存储账户的Blob容量指标(时间范围最近1天)
var response = await metricsClient.QueryResourceAsync(
    resourceId,
    new[] { "BlobCapacity" },
    new MetricsQueryOptions
    {
        TimeRange = new QueryTimeRange(TimeSpan.FromDays(1))
    });

// 输出查询结果
foreach (var metric in response.Value.Metrics)
{
    Console.WriteLine($"指标: {metric.Name.LocalizedValue}");
    foreach (var timeSeries in metric.TimeSeries)
    {
        foreach (var dataPoint in timeSeries.Data)
        {
            Console.WriteLine($"{dataPoint.Timestamp:yyyy-MM-dd HH:mm}: {dataPoint.Value}");
        }
    }
}

权限配置要点

你用来验证的Azure AD应用或者托管标识,必须被授予以下至少一种权限:

  • Monitoring Reader:可以读取所有监控数据;
  • Reader:可以读取所有资源的元数据和监控数据;
  • 针对目标存储账户的Storage Account Reader角色,再结合监控相关权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 04:27:28