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

如何保障私有容器生成的SAS令牌仅对生成该令牌的授权用户可用?

解决Azure Blob SAS链接仅限授权用户访问的问题

核心解决方案

SAS本质是基于URL的访问凭证,只要获取链接就能访问,因此需通过绑定用户身份、限制访问场景等方式补充安全校验,结合你的跨域需求,可采用以下方案:

1. 采用用户委派SAS绑定身份

用户委派SAS基于Azure AD用户身份生成,与生成令牌的用户身份绑定,存储服务会验证请求者的Azure AD身份是否匹配SAS关联的身份:

  • 生成时需通过Azure AD授权的用户上下文调用存储API,令牌会嵌入用户身份信息
  • 即便链接泄露,未持有对应Azure AD身份的用户也无法使用该SAS访问Blob

2. 限制SAS的访问IP范围

若用户IP相对固定(如企业内网IP段),生成SAS时可指定IPRange参数,仅允许特定IP/IP段发起请求:

  • 示例C#代码:
var sasBuilder = new BlobSasBuilder(BlobSasPermissions.Read, DateTimeOffset.UtcNow.AddHours(1))
{
    IPRange = new SasIPRange(IPAddress.Parse("192.168.1.0"), IPAddress.Parse("192.168.1.255")),
    // 配置其他必要参数
};
  • 注意:该方案不适用于用户IP不固定的移动办公场景

3. 短有效期SAS+实时后端生成

将SAS有效期设置为极短(5-10秒),前端发起Blob访问前,先向你的后端请求实时生成的SAS,拿到后立即发起Blob请求:

  • 即便链接泄露,过期后也无法被滥用,大幅降低风险
  • 跨域场景下,需在Azure存储账户配置CORS规则,仅允许你的前端域名发起请求

4. Azure CDN + 令牌认证

若Blob需频繁访问,可绑定Azure CDN并在CDN层配置令牌认证:

  • 后端生成CDN专用访问令牌(替代SAS),用户通过CDN访问Blob时,CDN会先验证令牌有效性、用户身份或域名
  • CDN可直接处理跨域请求,无需在存储账户单独配置CORS

关键注意事项

  • 禁止将SAS令牌存储在前端本地存储(localStorage/sessionStorage),必须由后端实时生成并返回,用完即失效
  • 跨域场景下,务必在Azure存储账户的CORS设置中,将AllowedOrigins限制为你的前端域名,避免其他域通过合法SAS发起请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:12:16