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

Azure Blob Storage用户委托SAS令牌能否不绑定特定容器/Blob?

关于用户委托SAS令牌访问存储账户所有资源的问题

我通过以下代码创建用户委托SAS令牌:

var blobClient = new BlobServiceClient(blobUri, tokenCredential, null);
  
var userDelegationKey = await blobClient.GetUserDelegationKeyAsync(startDate, expiryDate);

这部分运行正常,但当我需要使用BlobSasBuilder生成可访问Blob的查询字符串时:

var startDate = DateTimeOffset.UtcNow;
var expiryDate = DateTimeOffset.UtcNow.AddDays(1);
var sasBuilder = new BlobSasBuilder
{
  Resource = "c",
  StartsOn = startDate,
  ExpiresOn = expiryDate,
};

sasBuilder.SetPermissions(BlobSasPermissions.Read | BlobSasPermissions.List | BlobSasPermissions.Write | BlobSasPermissions.Create | BlobSasPermissions.Delete | BlobSasPermissions.Add);

问题在于必须指定Resource为Blob("b")或容器("c")。我正在修改遗留应用,需要一个可访问存储账户下所有资源、不绑定特定容器或Blob的SAS令牌,请问这是否可行?


解答

用户委托SAS无法生成覆盖整个存储账户的SAS令牌,它的设计粒度仅支持容器("c")或单个Blob("b")级别的资源授权,无法扩展到账户级全资源访问。

如果需要实现访问存储账户下所有资源的需求,应该使用账户SAS令牌,它基于存储账户的访问密钥生成,支持指定覆盖整个账户的资源范围:

账户SAS生成示例代码

var startDate = DateTimeOffset.UtcNow;
var expiryDate = DateTimeOffset.UtcNow.AddDays(1);

// 初始化账户SAS构建器
var accountSasBuilder = new AccountSasBuilder
{
    // 指定覆盖账户下所有资源类型:服务、容器、对象
    ResourceTypes = AccountSasResourceTypes.Service | AccountSasResourceTypes.Container | AccountSasResourceTypes.Object,
    // 指定SAS适用的服务:这里针对Blob存储
    Services = AccountSasServices.Blobs,
    StartsOn = startDate,
    ExpiresOn = expiryDate
};

// 设置所需的权限,对应你需要的读写删等操作
accountSasBuilder.SetPermissions(AccountSasPermissions.Read | AccountSasPermissions.List | AccountSasPermissions.Write | AccountSasPermissions.Create | AccountSasPermissions.Delete | AccountSasPermissions.Add);

// 使用存储账户的访问密钥生成SAS令牌
var sasToken = accountSasBuilder.ToSasQueryParameters(new StorageSharedKeyCredential(storageAccountName, storageAccountKey)).ToString();

关键区别说明

  • 用户委托SAS:基于Azure AD身份生成,依赖用户委托密钥,仅支持容器/Blob级授权,优势是无需暴露账户密钥,权限更细粒度。
  • 账户SAS:基于存储账户访问密钥生成,支持账户级全资源授权,适合需要批量访问多个容器/Blob的场景,但需要妥善保管账户密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:27:22