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

如何通过Azure Vault机密列举Azure存储容器文件

基于Azure Key Vault读取SAS实现存储容器文件列举

前置依赖

  • 安装Az模块合集(包含Key Vault、存储操作所需命令),执行以下命令为当前用户安装:
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
  • 提前确认以下参数:
    • 存储SAS令牌所在Key Vault的实例名称
    • SAS令牌对应的Key Vault机密名称
    • 存储账户名、容器名、本地目标路径等原有业务参数
  • 运行前执行Connect-AzAccount登录Azure账号,所用账号需已授予目标Key Vault的机密读取权限。

修改说明

原有脚本硬编码SAS的逻辑替换为直接从Key Vault拉取机密值到内存变量,全程不需要输出SAS明文,直接传入存储上下文构造参数即可。注意:New-AzStorageContext要求SASToken参数以?开头,如果Key Vault中存储的SAS没有带这个前缀,需要在脚本中手动补全。

完整可用脚本

# 配置固定参数
$KeyVaultName = "替换为你的Key Vault名称"
$SASSecretName = "替换为SAS对应的机密名称"
$StorageAccountName = "trialstorageaccount3"
$ContainerName = "trialcontainer1"
$TargetFolderPath = "D:\Anand\Downloads\HTC\DATA\AzureBlob\"

# 从Key Vault读取SAS令牌,结果仅存于内存,不打印明文
$ContainerSAS = Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $SASSecretName -AsPlainText
# 补全SAS开头的?,如果Key Vault中存储的SAS已带?可注释掉本段判断
if (-not $ContainerSAS.StartsWith("?")) {
    $ContainerSAS = "?" + $ContainerSAS
}

# 构造存储上下文
$context = New-AzStorageContext -StorageAccountName $StorageAccountName -SASToken $ContainerSAS

# 列举容器内所有Blob
$blobs = Get-AzStorageBlob -Container $ContainerName -Context $context

foreach($blob in $blobs) {
    Write-Host $blob.Name
    # 取消以下注释可开启Blob下载功能
    # New-Item -ItemType Directory -Force -Path $TargetFolderPath
    # Get-AzStorageBlobContent -Container $ContainerName -Blob $blob.Name -Destination $TargetFolderPath -Context $context
}

补充说明

  • 脚本运行全程不会暴露SAS明文,符合组织的密钥管控要求
  • 无人值守自动化场景下,可替换登录方式为服务主体或Azure托管身份,只要给对应身份分配Key Vault机密读取权限即可正常运行,无需交互式操作
  • 旧版AzureRM模块已停止维护,统一使用Az模块可避免命令兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:27:10