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

如何在C#中实现Grant-AzDiskAccess获取磁盘SAS URL?

方式一:使用Azure Resource Manager SDK(推荐)
  • 依赖的NuGet包:Azure.ResourceManager.Compute(这是Azure最新的ARM SDK,替代旧版的Microsoft.Azure.Management.Compute)
  • 核心类与方法:
    • ArmClient:初始化Azure客户端,处理身份验证逻辑
    • DiskResource:代表单个磁盘资源,其GrantAccessAsync方法对应PowerShell的Grant-AzDiskAccess命令
    • DiskAccessGrantContent:用于指定访问权限(Read/Write)和SAS链接的过期时长

示例代码:

using Azure.ResourceManager;
using Azure.ResourceManager.Compute;
using Azure.ResourceManager.Compute.Models;
using System;
using System.Threading.Tasks;

public async Task<string> GetDiskSasUrl(string subscriptionId, string resourceGroupName, string diskName)
{
    // 使用DefaultAzureCredential处理身份验证(支持服务主体、托管标识等多种方式)
    var armClient = new ArmClient(new DefaultAzureCredential());
    
    // 构造磁盘资源的唯一标识符
    var diskId = new ResourceIdentifier($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}");
    var diskResource = armClient.GetDiskResource(diskId);
    
    // 配置访问参数:只读权限,1小时后过期
    var grantParams = new DiskAccessGrantContent(DiskAccessLevel.Read, TimeSpan.FromHours(1).TotalSeconds);
    
    // 发起请求获取SAS链接
    var accessResponse = await diskResource.GrantAccessAsync(WaitUntil.Completed, grantParams);
    
    return accessResponse.Value.AccessSas;
}
方式二:直接调用Azure REST API

如果不想依赖SDK,可直接调用Azure Compute服务的REST API:

  • API请求方式:POST
  • 请求端点:https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}/beginGetAccess?api-version=2023-04-02
  • 请求体示例:
{
  "access": "Read", // 可选值:Read/Write
  "durationInSeconds": 3600 // SAS过期时长,单位为秒,最大不超过86400(24小时)
}
  • 身份验证:请求头中需携带Authorization: Bearer {accessToken},令牌需拥有目标磁盘的Microsoft.Compute/disks/beginGetAccess/action权限
注意事项
  • 跨租户迁移场景下,确保身份验证主体(如服务主体)在源、目标租户的对应订阅/资源组中均拥有足够权限
  • SAS链接的过期时长不能超过24小时,需根据迁移需求合理设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:12:09