如何使用AZ CLI循环下载密钥/机密?求实现示例
使用AZ CLI循环下载Azure密钥保管库的密钥与机密
完全可行。AZ CLI本身没有内置循环语法,但可以结合Shell(Bash/Zsh)或PowerShell的循环结构,配合AZ CLI的查询能力来批量下载密钥、机密。以下是针对不同场景的具体示例:
一、批量下载密钥保管库中的机密(Secrets)
Bash/Zsh 示例
# 替换为你的密钥保管库名称 VAULT_NAME="your-keyvault-name" # 创建本地存储目录(不存在则自动创建) mkdir -p downloaded-secrets # 遍历所有机密名称并执行下载 for secret_name in $(az keyvault secret list --vault-name $VAULT_NAME --query "[].name" --output tsv); do echo "正在下载机密: $secret_name" az keyvault secret download --vault-name $VAULT_NAME --name $secret_name --file "downloaded-secrets/$secret_name.txt" done
PowerShell 示例
$VAULT_NAME = "your-keyvault-name" # 创建本地存储目录(不存在则自动创建) New-Item -ItemType Directory -Force -Path "downloaded-secrets" # 遍历所有机密名称并执行下载 az keyvault secret list --vault-name $VAULT_NAME --query "[].name" --output tsv | ForEach-Object { Write-Host "正在下载机密: $_" az keyvault secret download --vault-name $VAULT_NAME --name $_ --file "downloaded-secrets/$_.txt" }
二、批量下载密钥保管库中的密钥(Keys)
密钥下载支持多种编码格式(如PEM、PFX),以下以PEM格式为例:
Bash/Zsh 示例
# 替换为你的密钥保管库名称 VAULT_NAME="your-keyvault-name" # 创建本地存储目录 mkdir -p downloaded-keys # 遍历所有密钥名称并执行下载 for key_name in $(az keyvault key list --vault-name $VAULT_NAME --query "[].name" --output tsv); do echo "正在下载密钥: $key_name" az keyvault key download --vault-name $VAULT_NAME --name $key_name --file "downloaded-keys/$key_name.pem" --encoding PEM done
PowerShell 示例
$VAULT_NAME = "your-keyvault-name" # 创建本地存储目录 New-Item -ItemType Directory -Force -Path "downloaded-keys" # 遍历所有密钥名称并执行下载 az keyvault key list --vault-name $VAULT_NAME --query "[].name" --output tsv | ForEach-Object { Write-Host "正在下载密钥: $_" az keyvault key download --vault-name $VAULT_NAME --name $_ --file "downloaded-keys/$_.pem" --encoding PEM }
注意事项
- 执行前确保已通过
az login完成身份验证,且当前账号拥有密钥保管库的Secret Reader(机密)或Key Reader(密钥)权限。 - 可根据需求调整下载文件的格式(如机密可导出为JSON,密钥可切换为PFX格式)和存储路径。
- 若需处理大量资源,可在循环中添加错误捕获逻辑(如Bash中用
if [ $? -eq 0 ]判断命令执行结果),避免单个下载失败中断整个流程。
内容的提问来源于stack exchange,提问作者Călimanu Loredan
相关产品推荐
相关产品推荐

