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

使用Set-AzKeyVaultManagedStorageSasDefinition生成的SAS令牌报签名不匹配错误

托管SAS定义签名不匹配问题排查方案
  • 检查密钥一致性:KeyVault创建托管SAS时会基于存储账户密钥重新生成令牌,而非直接存储模板SAS。如果模板SAS用的是存储账户的key2,但创建托管SAS时未指定-StorageAccountKeyName,KeyVault默认会用key1,导致签名不匹配。创建时显式指定密钥名称:

    Set-AzKeyVaultManagedStorageSasDefinition -VaultName "myvault" -AccountName "myStorageAccount" -Name "mySasDef" -TemplateUri "<你的模板SAS URI>" -SasType "service" -StorageAccountKeyName "key2"
    
  • 验证SAS格式:用Get-AzKeyVaultSecret获取的SAS可能是完整的Blob访问URL(包含路径和参数),如果使用时重复拼接Blob地址,会导致URL格式错误。执行以下命令确认SAS内容:

    $sas = Get-AzKeyVaultSecret -VaultName "myvault" -Name "myStorageAccount-SecretName" -AsPlainText
    Write-Output $sas
    

    若输出是完整URL,直接使用该URL访问,无需额外拼接路径。

  • 确认有效期配置:即使模板SAS有效期超30天,若创建托管SAS时未明确指定-ValidityPeriod,KeyVault可能会套用默认有效期,导致生成的SAS参数与模板不符。创建时显式设置有效期:

    Set-AzKeyVaultManagedStorageSasDefinition -VaultName "myvault" -AccountName "myStorageAccount" -Name "mySasDef" -TemplateUri "<你的模板SAS URI>" -SasType "service" -ValidityPeriod ([System.Timespan]::FromDays(60))
    
  • 处理模板SAS转义:如果模板SAS包含+、/等特殊字符,未编码就传入KeyVault会导致参数失真。先对模板URI做URL编码再创建定义:

    $encodedTemplateUri = [System.Web.HttpUtility]::UrlEncode("https://myaccount.blob.core.windows.net/lockedcontainer/checkmark.png?<原始SAS令牌>")
    Set-AzKeyVaultManagedStorageSasDefinition -VaultName "myvault" -AccountName "myStorageAccount" -Name "mySasDef" -TemplateUri $encodedTemplateUri -SasType "service"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:55:31