本文档介绍如何备份密钥保管库中存储的机密、密钥和证书。 备份旨在提供所有机密的脱机副本,而你不太可能失去对密钥保管库的访问权限。
概述
Azure Key Vault 提供了多个选项,用于确保保管库数据的可用性和可恢复性:
- 自动冗余和故障转移:Key Vault 在服务中断期间自动复制数据并处理故障转移 - 请参阅 Azure Key Vault 可用性和冗余
- 软删除和清除保护:防止意外或恶意删除保管库或保管库对象 - 请参阅 使用软删除和清除保护的 Azure Key Vault 恢复管理
- 手动备份和还原 (本文所述):对于单个机密、密钥和证书
本文重点介绍 Key Vault 中各个对象的手动备份和还原作。
何时使用备份
Azure Key Vault 自动提供功能来帮助维护可用性并防止数据丢失。 仅当具有关键业务理由时,才备份机密。 在密钥保管库中备份机密可能会带来操作上的挑战,例如在机密过期或轮换时维护多套日志、权限和备份。
请考虑在这些方案中使用备份:
- 需要在密钥保管库或 Azure 区域之间移动对象
- 出于法规或合规性原因,您需要保存机密信息的离线副本。
- 你使用的是不支持自动跨区域复制的区域(中国北部、中国东北或中国北部 3)
- 需要确保防止意外删除特定对象
对于大多数方案,Key Vault 的内置冗余和软删除功能可提供足够的保护,而无需手动备份。 有关详细信息,请参阅 Azure Key Vault 可用性和冗余。
局限性
重要
Key Vault 不支持备份超过 500 个以前版本的密钥、机密或证书对象,并且尝试这样做可能会导致错误。 无法删除密钥、机密或证书的历史版本。
Key Vault 当前不提供在单个作中备份整个密钥保管库的方法,并且必须单独备份密钥、机密和证书。
另请考虑以下问题:
- 备份具有多个版本的机密可能导致超时错误。
- 备份会创建一个时间点的快照。 机密可能会在备份期间续订,从而导致加密密钥不匹配。
- 如果超过每秒请求的密钥保管库服务限制,密钥保管库将受到限制,备份将失败。
设计注意事项
备份密钥保管库对象(如机密、密钥或证书)时,备份操作会将该对象作为加密的 blob 下载。 此 Blob 无法在 Azure 外部解密。 若要从此 Blob 获取可用数据,必须将 Blob 还原到同一 Azure 订阅和 Azure 地理位置中的密钥保管库。
先决条件
若要备份 Key Vault 对象,必须具备:
- Azure 订阅的参与者级或更高权限。
- 包含要备份的机密的主密钥保管库。
- 将要恢复机密的次级密钥保管库。
在 Azure 门户中进行备份和还原
按照本部分中的步骤使用 Azure 门户备份和还原对象。
备份
- 转到 Azure 门户。 
- 选择密钥保管库。 
- 转到要备份的对象(机密、密钥或证书)。   
- 选择对象。 
- 选择 下载备份。   
- 选择 下载。   
- 将加密的 Blob 存储在安全位置。 
还原
- 转到 Azure 门户。 
- 选择密钥保管库。 
- 转到要还原的对象类型(机密、密钥或证书)。 
- 选择“ 还原备份”。   
- 前往您存储加密 Blob 的位置。 
- 选择“确定”。 
从 Azure CLI 或 Azure PowerShell 备份和还原
## Log in to Azure
az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud   //means return to Public Azure.
## Set your subscription
az account set --subscription {AZURE SUBSCRIPTION ID}
## Register Key Vault as a provider
az provider register -n Microsoft.KeyVault
## Back up a certificate in Key Vault
az keyvault certificate backup --file {File Path} --name {Certificate Name} --vault-name {Key Vault Name} --subscription {SUBSCRIPTION ID}
## Back up a key in Key Vault
az keyvault key backup --file {File Path} --name {Key Name} --vault-name {Key Vault Name} --subscription {SUBSCRIPTION ID}
## Back up a secret in Key Vault
az keyvault secret backup --file {File Path} --name {Secret Name} --vault-name {Key Vault Name} --subscription {SUBSCRIPTION ID}
## Restore a certificate in Key Vault
az keyvault certificate restore --file {File Path} --vault-name {Key Vault Name} --subscription {SUBSCRIPTION ID}
## Restore a key in Key Vault
az keyvault key restore --file {File Path} --vault-name {Key Vault Name} --subscription {SUBSCRIPTION ID}
## Restore a secret in Key Vault
az keyvault secret restore --file {File Path} --vault-name {Key Vault Name} --subscription {SUBSCRIPTION ID}