本文件說明如何備份儲存在金鑰保存庫中的秘密、金鑰和憑證。 備份的目的是要在萬一您無法存取金鑰保存庫時,為您提供所有秘密的離線複本。
概觀
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 地理位置內的金鑰保存庫。
先決條件
若要備份金鑰保存庫物件,您必須具有:
- Azure 訂用帳戶上的參與者層級權限或更高權限。
- 主要金鑰保存庫,其中包含您想要備份的秘密。
- 將在其中還原祕密的次要金鑰保存庫。
從 Azure 入口網站備份和還原
遵循本節中的步驟,使用 Azure 入口網站來備份和還原物件。
備份
前往 Azure 入口網站。
選取您的金鑰保存庫。
移至您想要備份的物件 (秘密、金鑰或憑證)。
選取物件。
選取 [下載備份]。
選擇 下載。
將加密的 Blob 儲存在安全的位置。
還原
前往 Azure 入口網站。
選取您的金鑰保存庫。
移至至您想要還原的物件類型 (秘密、金鑰或憑證)。
選取 [還原備份]。
移至您儲存加密 Blob 的位置。
請選擇 [確定]。
從 Azure CLI 或 Azure PowerShell 備份和還原
## Log in to Azure
az login
## 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}