如何备份与恢复包含密钥、机密、证书及RBAC的Azure Key Vault?
Azure Key Vault 备份与恢复全流程(含密钥、机密、证书及RBAC权限)
一、备份操作
1. 密钥(Keys)备份
单个密钥备份
使用Azure CLI执行以下命令,将指定密钥备份到本地文件:
az keyvault key backup --vault-name <你的Vault名称> --name <密钥名称> --file <备份文件路径,如./key-backup.bin>
批量备份所有密钥
先列出Vault内所有密钥,再循环备份:
# 列出所有密钥名称并保存到临时文件 az keyvault key list --vault-name <你的Vault名称> --query "[].name" -o tsv > key-names.txt # 循环备份每个密钥(提前创建./backups/keys目录) while read -r key_name; do az keyvault key backup --vault-name <你的Vault名称> --name "$key_name" --file "./backups/keys/$key_name-backup.bin" done < key-names.txt
2. 机密(Secrets)备份
单个机密备份
az keyvault secret backup --vault-name <你的Vault名称> --name <机密名称> --file <备份文件路径,如./secret-backup.bin>
批量备份所有机密
# 列出所有机密名称 az keyvault secret list --vault-name <你的Vault名称> --query "[].name" -o tsv > secret-names.txt # 循环备份(提前创建./backups/secrets目录) while read -r secret_name; do az keyvault secret backup --vault-name <你的Vault名称> --name "$secret_name" --file "./backups/secrets/$secret_name-backup.bin" done < secret-names.txt
3. 证书(Certificates)备份
证书备份会包含证书本身、私钥(若为可导出类型)及关联的密钥/机密:
单个证书备份
az keyvault certificate backup --vault-name <你的Vault名称> --name <证书名称> --file <备份文件路径,如./cert-backup.bin>
批量备份所有证书
# 列出所有证书名称 az keyvault certificate list --vault-name <你的Vault名称> --query "[].name" -o tsv > cert-names.txt # 循环备份(提前创建./backups/certs目录) while read -r cert_name; do az keyvault certificate backup --vault-name <你的Vault名称> --name "$cert_name" --file "./backups/certs/$cert_name-backup.bin" done < cert-names.txt
4. RBAC权限备份
Key Vault的RBAC权限属于Azure RBAC体系,需单独导出角色分配:
az role assignment list --scope "/subscriptions/<订阅ID>/resourceGroups/<资源组名称>/providers/Microsoft.KeyVault/vaults/<你的Vault名称>" --output json > rbac-backup.json
替换
<订阅ID>、<资源组名称>和<你的Vault名称>为实际值,备份文件会保存所有针对该Vault的角色分配信息。
二、恢复操作
1. 密钥(Keys)恢复
单个密钥恢复
az keyvault key restore --vault-name <目标Vault名称> --file <备份文件路径>
批量恢复所有密钥
# 遍历密钥备份目录下的所有文件 for backup_file in ./backups/keys/*.bin; do az keyvault key restore --vault-name <目标Vault名称> --file "$backup_file" done
2. 机密(Secrets)恢复
单个机密恢复
az keyvault secret restore --vault-name <目标Vault名称> --file <备份文件路径>
批量恢复所有机密
for backup_file in ./backups/secrets/*.bin; do az keyvault secret restore --vault-name <目标Vault名称> --file "$backup_file" done
3. 证书(Certificates)恢复
单个证书恢复
az keyvault certificate restore --vault-name <目标Vault名称> --file <备份文件路径>
批量恢复所有证书
for backup_file in ./backups/certs/*.bin; do az keyvault certificate restore --vault-name <目标Vault名称> --file "$backup_file" done
注意:若目标Vault已存在同名证书,恢复操作会失败,需先删除同名证书或重命名后再恢复。
4. RBAC权限恢复
需借助jq工具解析备份的JSON文件(提前安装jq:sudo apt install jq或brew install jq):
# 遍历备份的角色分配并逐一创建 cat rbac-backup.json | jq -c '.[]' | while read -r assignment; do role_name=$(echo "$assignment" | jq -r '.roleDefinitionName') principal_id=$(echo "$assignment" | jq -r '.principalId') scope=$(echo "$assignment" | jq -r '.scope') az role assignment create --role "$role_name" --assignee "$principal_id" --scope "$scope" done
注意:执行恢复的账号需拥有目标Vault所在资源的
Owner或User Access Administrator权限;若备份中的主体(用户/组/服务主体)在目标租户中不存在,该条角色分配会恢复失败。
关键注意事项
- 备份文件加密绑定源租户,仅能在同一Azure租户内的Vault中恢复。
- 恢复前确保目标Vault已开启软删除和清除保护(与源Vault配置一致可避免意外数据丢失)。
- 批量操作前建议先测试单个备份/恢复流程,确认无问题后再执行批量操作。
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

