使用客戶管理的金鑰進行數據加密,適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

使用客戶自控密鑰進行數據加密,適用於 MySQL 的 Azure 資料庫 彈性伺服器,您可以攜帶自己的密鑰(BYOK)來保護待用數據,並實作管理密鑰和數據的職責區隔。 使用客戶管理的金鑰(CMK),客戶負責並最終控制密鑰生命週期管理(金鑰建立、上傳、輪替、刪除)、金鑰使用許可權,以及密鑰稽核作業。

福利

使用客戶自控金鑰進行資料加密,適用於 MySQL 的 Azure 資料庫 彈性伺服器提供下列優點:

  • 您可以藉由移除金鑰並讓資料庫無法存取的能力,完全控制數據存取
  • 完整控制金鑰生命週期,包括密鑰輪替以符合公司原則
  • Azure 金鑰保存庫 中的密鑰集中管理和組織
  • 能夠實作安全性人員、DBA 和系統管理員之間的職責分離

使用客戶自控金鑰的數據加密如何運作?

Microsoft Entra ID 中的受控識別提供 Azure 服務,其替代方式是布建自動指派的身分識別,以用來向支援 Microsoft Entra 驗證的任何服務進行驗證,例如 Azure 金鑰保存庫 (AKV)。 適用於 MySQL 的 Azure 資料庫 彈性伺服器目前僅支援使用者指派的受控識別(UMI)。 如需詳細資訊,請參閱 Azure 中的受控識別類型

若要為 適用於 MySQL 的 Azure 資料庫 彈性伺服器設定 CMK,您必須將 UMI 連結到伺服器,並指定要使用的 Azure 金鑰保存庫和金鑰。

UMI 必須具有下列金鑰保存庫的存取權:

  • 取得:用於擷取金鑰保存庫中金鑰的公用部分和屬性。
  • 清單:列出儲存在 金鑰保存庫 中的金鑰版本。
  • 包裝金鑰:若要能夠加密 DEK。 加密的 DEK 會儲存在 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例中。
  • 解除包裝金鑰:若要能夠解密 DEK。 適用於 MySQL 的 Azure 資料庫 彈性伺服器需要解密的 DEK 來加密/解密數據。

術語和描述

數據加密金鑰 (DEK):用來加密資料分割或數據區塊的對稱 AES256 金鑰。 使用不同的金鑰加密每個數據區塊,會讓密碼編譯分析攻擊更加困難。 資源提供者或應用程式實例需要存取 DEK,以加密和解密特定區塊。 當您以新的金鑰取代 DEK 時,只有其相關聯區塊中的數據必須以新的金鑰重新加密。

金鑰加密金鑰 (KEK):用來加密 DEK 的加密金鑰。 永不離開 金鑰保存庫的KEK可讓DEK本身進行加密和控制。 可存取 KEK 的實體可能與需要 DEK 的實體不同。 由於 KEK 需要解密 DEK,因此 KEK 實際上是一個單一點,藉由刪除 KEK 可以有效地刪除 DEK。 使用 KEK 加密的 DEK 會分開儲存。 只有具有KEK存取權的實體才能解密這些DEK。 如需詳細資訊,請參閱 加密待用的安全性。

運作方式

使用 CMK 的數據加密是在伺服器層級設定。 對於指定的伺服器,稱為金鑰加密金鑰 (KEK) 的 CMK 會用來加密服務的數據加密金鑰 (DEK)。 KEK 是非對稱密鑰,儲存在客戶擁有和客戶管理的 Azure 金鑰保存庫 實例中。 金鑰保存庫 是 RSA 密碼編譯金鑰的高可用性且可調整的安全記憶體,選擇性地由FIPS 140 驗證的硬體安全性模組(HSM)。 金鑰保存庫 不允許直接存取儲存的密鑰,而是會使用授權實體的密鑰來提供加密/解密服務。 匯入的金鑰保存庫可以產生金鑰,或 從內部部署 HSM 裝置傳輸至金鑰保存庫。

當您將彈性伺服器設定為使用儲存在金鑰保存庫中的 CMK 時,伺服器會將 DEK 傳送至金鑰保存庫以進行加密。 金鑰保存庫 會傳回儲存在用戶資料庫中的加密 DEK。 同樣地,彈性伺服器會視需要將受保護的 DEK 傳送至密鑰保存庫以進行解密。

Diagram of how data encryption with a customer-managed key work.

啟用記錄之後,稽核員可以使用 Azure 監視器來檢閱 金鑰保存庫 稽核事件記錄。 若要啟用 金鑰保存庫 稽核事件的記錄,請參閱使用 金鑰保存庫 見解監視密鑰保存庫服務。

注意

許可權變更最多可能需要 10 分鐘,才會影響金鑰保存庫。 這包括撤銷 AKV 中 TDE 保護裝置的存取權限,而此時間範圍內的使用者可能仍有存取權限。

設定 適用於 MySQL 的 Azure 資料庫 彈性伺服器數據加密的需求

嘗試設定 金鑰保存庫 之前,請務必解決下列需求。

  • 金鑰保存庫 和 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例必須屬於相同的 Microsoft Entra 租使用者。 需要支援跨租使用者 金鑰保存庫和彈性伺服器互動。 如果您在執行設定之後移動 金鑰保存庫 資源,則必須重新設定數據加密。
  • 金鑰保存庫 和 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例必須位於相同的區域中。
  • 在密鑰保存庫上啟用虛刪除功能,如果發生意外的金鑰(或 金鑰保存庫)刪除,保留期限設定為 90 天,以保護資料遺失。 復原和清除動作在 金鑰保存庫 存取原則中有自己的許可權。 虛刪除功能預設為關閉,但您可以透過 Azure 入口網站 或使用PowerShell或 Azure CLI 加以啟用。
  • 在金鑰保存庫上啟用清除保護功能,並將保留期限設定為 90 天。 當開啟清除保護時,保存庫或處於已刪除狀態的物件必須等到保留期間過後才能清除。 您可以使用PowerShell或 Azure CLI 來啟用此功能,而且只有在啟用虛刪除之後。

嘗試設定 CMK 之前,請務必解決下列需求。

  • 用來加密 DEK 的客戶管理密鑰只能是非對稱的 RSA\RSA-HSM(具有 進階版 SKU 的保存庫) 2048,3072 或 4096。
  • 金鑰啟用日期 (若已設定) 必須是過去的日期和時間。 未設定到期日。
  • 金鑰必須處於「已啟用」狀態。
  • 密鑰必須具有 虛刪除 ,保留期間設定為 90 天。 這會隱含地設定必要的密鑰屬性 recoveryLevel:“Recoverable”。
  • 金鑰必須 啟用清除保護。
  • 如果您要 將現有的密鑰 匯入金鑰保存庫,請務必以支援的檔案格式提供它(.pfx、.byok、.backup)。

注意

如需如何透過 Azure 入口網站 為 適用於 MySQL 的 Azure 資料庫 彈性伺服器設定日期加密的詳細逐步指示,請參閱設定 適用於 MySQL 的 Azure 資料庫 彈性伺服器的數據加密。

用於設定數據加密的 建議

當您將 金鑰保存庫 設定為使用客戶管理的金鑰使用數據加密時,請記住下列建議。

  • 設定 金鑰保存庫 的資源鎖定,以控制誰可以刪除此重要資源,並防止意外或未經授權的刪除。
  • 啟用所有加密金鑰的稽核和報告。 金鑰保存庫 提供容易插入其他安全性資訊和事件管理工具的記錄。 Azure 監視器 Log Analytics 是已整合的服務範例之一。
  • 將客戶管理的金鑰復本保留在安全的地方,或將它委付給委付服務。
  • 如果 金鑰保存庫 產生金鑰,請在第一次使用金鑰之前建立密鑰備份。 您只能將備份還原至 金鑰保存庫。 如需備份命令的詳細資訊,請參閱 Backup-AzKeyVaultKey

注意

  • 建議您使用來自相同區域的金鑰保存庫,但如有必要,您可以藉由指定「輸入金鑰標識碼」資訊,從另一個區域使用金鑰保存庫。
  • 目前不支援儲存在 Azure 金鑰保存庫 受控 HSM 中的 RSA 金鑰。

無法存取客戶管理的金鑰條件

當您在 金鑰保存庫 中使用 CMK 設定資料加密時,伺服器必須持續存取此金鑰,才能保持在線狀態。 如果彈性伺服器在 金鑰保存庫 失去客戶管理的金鑰存取權,伺服器就會在 10 分鐘內開始拒絕所有連線。 彈性伺服器會發出對應的錯誤訊息,並將伺服器狀態變更為無法存取。 伺服器可能會因為各種原因而觸達此狀態。

  • 如果您刪除金鑰保存庫,適用於 MySQL 的 Azure 資料庫 彈性伺服器實例將無法存取密鑰,而且會移至無法存取的狀態。 復原金鑰保存並重新驗證數據加密,讓 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例可供使用
  • 如果您從金鑰保存庫刪除金鑰,適用於 MySQL 的 Azure 資料庫 彈性伺服器實例將無法存取金鑰,而且會移至無法存取的狀態。 復原金鑰並重新驗證數據加密,讓 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例可供使用
  • 如果儲存在 Azure 中的金鑰 金鑰保存庫 過期,金鑰將會變成無效,且 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例會轉換成無法存取的狀態。 使用 CLI 擴充金鑰到期日,然後重新驗證數據加密,讓 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例可供使用

意外從 金鑰保存庫 撤銷金鑰

如果某人擁有足夠的訪問許可權,金鑰保存庫 意外停用對密鑰的彈性伺服器存取,可能會發生下列情況:

  • 撤銷來自伺服器的金鑰保存庫 取得、列出、包裝金鑰解除包裝密鑰 許可權
  • 刪除金鑰
  • 刪除金鑰保存庫
  • 變更金鑰保存庫的防火牆規則
  • 使用 Microsoft Entra 識別碼中的客戶受控金鑰刪除彈性伺服器上用於加密的使用者受控識別

在 金鑰保存庫 中監視客戶管理的金鑰

若要監視資料庫狀態,以及啟用遺失透明數據加密保護裝置存取的警示,請設定下列 Azure 功能:

  • 活動記錄:當客戶管理 金鑰保存庫 中的客戶金鑰存取失敗時,專案會新增至活動記錄。 如果您為這些事件建立警示,您可以儘快恢復存取權。
  • 動作群組:定義這些群組,以根據您的喜好設定傳送通知和警示。

金鑰保存庫 中具有客戶管理金鑰的複本

一旦 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例使用客戶儲存在 金鑰保存庫 中的受控密鑰加密,伺服器的任何新建立復本也會加密。 嘗試使用已擁有複本的客戶受控密鑰來加密 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例時,建議您藉由新增受控識別和密鑰來設定複本。 假設 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例已設定異地備援備份。 在此情況下,複本必須使用身分識別具有存取權的受控識別和密鑰進行設定,且該密鑰位於伺服器的異地配對區域中。

在 金鑰保存庫 中使用客戶管理的金鑰還原

嘗試還原 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例時,您可以選取使用者管理的身分識別和金鑰來加密還原伺服器。 假設 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例已設定為異地備援備份。 在此情況下,您必須使用受控識別和身分識別可存取的金鑰,以及位於伺服器異地配對區域中的還原伺服器。

若要避免在還原或讀取複本建立期間設定客戶管理的數據加密時發生問題,請務必在來源和還原/複本伺服器上遵循下列步驟:

  • 從來源 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例起始還原或讀取複本建立程式。
  • 在還原/複本伺服器上,在數據加密設定中重新驗證客戶自控密鑰,以確保將使用者受控識別授與 [取得]、[清單]、[包裝密鑰] 和 [解除包裝密鑰] 權限給儲存在 金鑰保存庫 中的密鑰

注意

在執行還原時,使用與來源伺服器上相同的身分識別和密鑰並非必要。

下一步