本文档介绍如何备份密钥保管库中存储的机密、密钥和证书。 备份旨在提供所有机密的脱机副本,而你不太可能失去对密钥保管库的访问权限。
概述
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}