如何使用Azure CLI为文本文件中的Azure密钥创建新版本及编写循环设置脚本
Azure密钥批量管理脚本实现
准备工作
先创建一个文本文件(例如key-names.txt),每行存储一个Azure密钥的名称,格式示例:
db-admin-password api-jwt-secret blob-storage-key
1. 批量设置密钥属性与值(Bash脚本)
以下脚本读取文本文件中的密钥名,循环为每个密钥配置属性(如过期时间、内容类型)并设置密钥值,可按需修改参数和值的来源:
#!/bin/bash # 配置基础参数 KEYVAULT_NAME="your-keyvault-name" KEY_EXPIRY="2025-12-31T23:59:59Z" CONTENT_TYPE="text/plain" # 读取密钥名文件并循环处理 while IFS= read -r KEY_NAME; do # 跳过空行 [[ -z "$KEY_NAME" ]] && continue # 替换为你的密钥值来源(可从变量、文件读取或生成随机值) KEY_VALUE="$(openssl rand -hex 16)" # 设置密钥属性与值 az keyvault secret set \ --vault-name "$KEYVAULT_NAME" \ --name "$KEY_NAME" \ --value "$KEY_VALUE" \ --expires "$KEY_EXPIRY" \ --content-type "$CONTENT_TYPE" echo "已处理密钥: $KEY_NAME" done < "key-names.txt"
关键说明
IFS= read -r KEY_NAME:确保读取含空格的密钥名时不会出错- 密钥值可灵活替换:比如从键值对文件读取、调用企业密码管理工具获取,或生成随机值
- 可选属性扩展:还可添加
--not-before(生效时间)、--tags(分类标签)等参数
2. 批量创建密钥新版本
Azure Key Vault中,对已有密钥重新设置不同值时会自动生成新版本。如果需要批量为文本文件中的密钥创建新版本,复用上述脚本即可——只要新值与当前版本不同,就会生成新的版本记录。
若要基于现有密钥属性克隆并生成新版本,可使用以下简化脚本:
#!/bin/bash KEYVAULT_NAME="your-keyvault-name" while IFS= read -r KEY_NAME; do [[ -z "$KEY_NAME" ]] && continue # 生成新密钥值 NEW_KEY_VALUE="$(openssl rand -hex 16)" # 创建新版本(自动继承原有属性,也可手动指定新属性) az keyvault secret set \ --vault-name "$KEYVAULT_NAME" \ --name "$KEY_NAME" \ --value "$NEW_KEY_VALUE" echo "已为密钥 $KEY_NAME 创建新版本" done < "key-names.txt"
PowerShell版本参考
如果使用PowerShell,实现逻辑一致:
$keyVaultName = "your-keyvault-name" $keyExpiry = "2025-12-31T23:59:59Z" $keyNames = Get-Content -Path "key-names.txt" foreach ($keyName in $keyNames) { if ([string]::IsNullOrEmpty($keyName)) { continue } $keyValue = [System.Web.Security.Membership]::GeneratePassword(16, 2) az keyvault secret set ` --vault-name $keyVaultName ` --name $keyName ` --value $keyValue ` --expires $keyExpiry Write-Host "已处理密钥: $keyName" }
注意事项
- 执行脚本前需通过
az login完成Azure CLI登录,且账号需拥有目标Key Vault的Secret Officer或更高权限 - 提前清理密钥名文本文件中的空行,或保留脚本中的空行过滤逻辑
- 密钥值生成方式可根据安全需求调整,比如使用Azure Key Vault内置的密码生成能力
内容的提问来源于stack exchange,提问作者Gapi
相关产品推荐
相关产品推荐

