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

如何查找管理存储账户密钥的Key Vault并解决SAS令牌过期问题

存储账户密钥由Key Vault管理时SAS令牌过期问题的解决方法

一、定位管理存储账户密钥的Key Vault

你可以通过Azure CLI或PowerShell直接查询存储账户的密钥关联属性:

Azure CLI

  1. 查询存储账户的密钥管理配置,直接获取关联的Key Vault信息:
az storage account show --name <你的存储账户名> --resource-group <资源组名> --query "properties.keyVaultProperties"

返回结果中的keyVaultUri和keyName会明确显示对应的Key Vault地址和存储的密钥名称。

  1. 若上述命令返回信息不明确,可先获取存储账户的托管标识主体ID,再查询Key Vault的访问策略:
# 获取存储账户的主体ID
az storage account show --name <你的存储账户名> --resource-group <资源组名> --query "identity.principalId" -o tsv

# 查询关联该主体ID的Key Vault
az keyvault list --query "[?properties.accessPolicies[].objectId == '<主体ID>'].name" -o tsv

PowerShell

$storageAccount = Get-AzStorageAccount -ResourceGroupName <资源组名> -Name <你的存储账户名>
$storageAccount.KeyVaultProperties

输出中的KeyVaultUri即为管理密钥的Key Vault地址,从中可提取Vault名称。

二、解决SAS令牌过期的可行方案

1. 用Key Vault创建SAS定义(推荐)

在找到对应的Key Vault后,创建SAS定义将SAS模板存储在Vault中,Key Vault会自动使用最新的存储账户密钥生成有效SAS令牌,无需手动维护:

示例:创建指定Blob目录的容器级SAS定义(Azure CLI)

az keyvault storage sas-definition create \
  --vault-name <Key Vault名称> \
  --account-name <存储账户名> \
  --name <自定义SAS定义名称> \
  --validity-period P90D \  # SAS令牌有效期,可按需调整
  --protocols https \
  --permissions rl \  # 权限:读取、列出
  --resource-types co \  # 资源类型:容器、对象
  --services b \  # 目标服务:Blob
  --container-name <容器名> \
  --prefix <Blob目录路径>  # 比如 "docs/reports/"

获取最新SAS令牌:

az keyvault storage sas-definition show --vault-name <Key Vault名称> --account-name <存储账户名> --name <SAS定义名称> --query "sasToken" -o tsv

2. 改用Azure AD身份验证

放弃SAS令牌,使用Azure AD身份验证访问Blob存储:

  • 给需要访问的用户/服务主体分配Storage Blob Data Reader或Storage Blob Data Contributor等角色(限定到目标容器/目录)
  • 通过Azure AD获取访问令牌,直接调用Blob存储API,完全不受密钥轮换影响

3. 调整密钥轮换周期(谨慎操作)

若业务对安全性要求不高,可修改Key Vault中存储账户密钥的轮换策略,延长轮换间隔,但此操作会降低账户安全性,需谨慎评估。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:05:04