在 適用於 PostgreSQL 的 Azure 資料庫 中使用客戶管理的金鑰進行資料加密 - 彈性伺服器

適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器預設會使用 Azure 儲存體 加密來加密待用數據,方法是使用 Microsoft 管理的密鑰。 對於 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的使用者,它類似於 SQL Server 等其他資料庫中的透明數據加密。

許多組織都需要使用客戶管理的密鑰 (CMK) 完全控制資料存取權。 使用 CMK 進行 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的數據加密可讓您攜帶金鑰(BYOK)進行待用數據保護。 此外也可讓組織在金鑰和資料的管理中實作職責區分。 使用 CMK 加密時,您必須負責金鑰生命週期、金鑰使用許可權,以及金鑰作業稽核的完全控制。

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的 CMK 資料加密是在伺服器層級設定。 針對特定伺服器,稱為金鑰加密金鑰 (KEK) 的 CMK 類型是用來加密服務的數據加密金鑰 (DEK)。 KEK 是儲存在客戶擁有及客戶所管理 Azure Key Vault 執行個體中的非對稱金鑰。 本文稍後會更詳細地說明KEK和DEK。

金鑰保存庫 是雲端式的外部金鑰管理系統。 它具有高可用性,可為 RSA 密碼編譯金鑰提供可調整且安全的記憶體,並選擇性地由 FIPS 140 驗證 的硬體安全性模組 (HSM) 支援。 它不允許直接存取儲存的密鑰,但會將加密和解密服務提供給授權的實體。 金鑰保存庫 可以產生金鑰、匯入金鑰,或從內部部署 HSM 裝置傳輸密鑰。

福利

使用適用於 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的 CMK 進行資料加密可提供下列優點:

  • 您可以完全控制資料存取。 您可以移除金鑰,讓資料庫無法存取。

  • 您可以完全控制密鑰的生命週期,包括金鑰輪替以符合公司原則。

  • 您可以在 金鑰保存庫 集中管理和組織金鑰。

  • 開啟加密不會影響或沒有 CMK 的效能,因為 PostgreSQL 在這兩種情況下都依賴 Azure 儲存體 層進行數據加密。 唯一的差別在於,當您使用 CMK 時,Azure 儲存體 加密金鑰 (執行實際數據加密) 會加密。

  • 您可以實作安全性人員、資料庫管理員和系統管理員之間的職責區隔。

詞彙

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

金鑰加密金鑰 (KEK):用來加密 DEK 的加密金鑰。 永遠不會離開 Key Vault 的 KEK 允許加密和控制 DEK 本身。 可存取 KEK 的實體可能與需要 DEK 的實體不同。 因為 KEK 需要解密 DEK,因此 KEK 實際上是一個單一點,您可以藉由刪除 KEK 來刪除 DEK。

使用 KEK 加密的 DEK 會分開儲存。 只有可存取 KEK 的實體才能解密這些 DEK。 如需詳細資訊,請參閱 用加密的安全性。

使用 CMK 進行數據加密的運作方式

顯示自備金鑰概觀的圖表。

Microsoft Entra 使用者指派的受控識別 可用來連線和擷取 CMK。 若要建立身分識別,請遵循 本教學課程

若要讓 PostgreSQL 伺服器使用儲存在 金鑰保存庫 中的 CMK 來加密 DEK,金鑰保存庫 系統管理員會提供您建立之受控識別的下列訪問許可權

  • get:用於擷取 金鑰保存庫 中索引鍵的公用元件和屬性。

  • list:用於列出和逐一查看 金鑰保存庫 中的索引鍵。

  • wrapKey:用於加密DEK。 加密的 DEK 會儲存在 適用於 PostgreSQL 的 Azure 資料庫 中。

  • unwrapKey:用於解密 DEK。 適用於 PostgreSQL 的 Azure 資料庫 需要解密的 DEK 來加密和解密數據。

金鑰保存庫 系統管理員也可以啟用 金鑰保存庫 稽核事件的記錄,以便稍後進行稽核。

重要

未對受控識別提供上述訪問許可權以存取 金鑰保存庫 可能會導致無法擷取加密密鑰,而無法設定 CMK 功能。

當您將伺服器設定為使用儲存在 金鑰保存庫 中的 CMK 時,伺服器會將 DEK 傳送至 金鑰保存庫 以進行加密。 Key Vault 會傳回加密的 DEK,並將其儲存在使用者資料庫中。 必要時,伺服器會將受保護的 DEK 傳送至 金鑰保存庫 以進行解密。 稽核員可以使用 Azure 監視器來檢閱 金鑰保存庫 稽核事件記錄檔,如果記錄已開啟。

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

以下是設定 金鑰保存庫 的需求:

  • 金鑰保存庫 和 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器必須屬於相同的 Microsoft Entra 租使用者。 不支援跨租使用者 金鑰保存庫和伺服器互動。 之後移動 金鑰保存庫 資源需要重新設定數據加密。

  • 金鑰保存庫 保留已刪除保存庫的天數設定必須是90。 如果您以較低的數字設定現有的 金鑰保存庫 實例,您必須建立新的 金鑰保存庫 實例,因為您無法在建立後修改實例。

  • 啟用 金鑰保存庫 中的虛刪除功能,以協助防止意外刪除密鑰或 金鑰保存庫 實例的數據遺失。 金鑰保存庫 會保留虛刪除的資源 90 天,除非用戶同時復原或清除它們。 復原和清除動作有自己的許可權,與 金鑰保存庫 存取原則相關聯。

    虛刪除功能預設為關閉,但您可以透過PowerShell或 Azure CLI 開啟此功能。 您無法透過 Azure 入口網站 開啟它。

  • 啟用清除保護,以針對已刪除的保存庫和保存庫對象強制執行強制保留期限。

  • 使用唯一的受控識別,將 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例存取權授與 金鑰保存庫 getlistwrapKey 和 unwrapKey 許可權。

以下是在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中設定 CMK 的需求:

  • 用來加密 DEK 的 CMK 只能非對稱、RSA 或 RSA-HSM。 支援 2,048、3,072 和 4,096 的密鑰大小。

  • 金鑰啟用的日期和時間(如果已設定)必須過去。 到期的日期和時間(如果設定)必須在未來。

  • 索引鍵必須處於 *Enabled- 狀態。

  • 如果您要將現有的金鑰匯入 金鑰保存庫,請以支援的檔案格式 (.pfx.byok.backup) 提供它。

建議

當您使用 CMK 進行資料加密時,以下是設定 金鑰保存庫 的建議:

  • 在 金鑰保存庫 上設定資源鎖定,以控制誰可以刪除此重要資源,並防止意外或未經授權的刪除。

  • 啟用所有加密金鑰的稽核和報告功能。 金鑰保存庫 提供容易插入其他安全性資訊和事件管理 (SIEM) 工具的記錄。 Azure 監視器記錄是已整合的服務範例之一。

  • 請確定 金鑰保存庫 和 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器位於相同的區域中,以確保 DEK 包裝和解除包裝作業的存取速度更快。

  • 選取 [停用公用存取] 和 [允許受信任的 Microsoft 服務 略過此防火牆,以鎖定 金鑰保存庫。

    停用公用存取且只允許受信任 Microsoft 服務 的網路選項螢幕快照。

注意

選取 [停用公用存取] 和 [允許受信任的 Microsoft 服務 略過此防火牆之後,當您嘗試使用公用存取透過入口網站管理 金鑰保存庫 時,可能會收到類似下列的錯誤:「您已啟用網络訪問控制。 只有允許的網路才能存取此金鑰保存庫。此錯誤並不排除在 CMK 設定期間提供金鑰的能力,也不會在伺服器作業期間從 金鑰保存庫 擷取金鑰。

以下是設定 CMK 的建議:

  • 將 CMK 的複本保留在安全的地方,或將它委付給委付服務。

  • 如果 金鑰保存庫 產生金鑰,請先建立金鑰備份,再第一次使用密鑰。 您只能將備份還原到 Key Vault。

從 Key Vault 意外撤銷金鑰存取權限

具有足夠權限 金鑰保存庫的人可能會不小心停用對金鑰的伺服器存取:

  • 從用來擷取 金鑰保存庫 金鑰的身分識別撤銷清單取得wrapKey 和 unwrapKey 許可權。

  • 刪除金鑰。

  • 刪除 金鑰保存庫 實例。

  • 變更 金鑰保存庫 防火牆規則。

  • 刪除 Microsoft Entra ID 中伺服器的受控識別。

在 金鑰保存庫 中監視 CMK

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

  • 資源健康情況:在拒絕與資料庫的第一個聯機之後,失去 CMK 存取權的資料庫會顯示為 無法 存取。
  • 活動記錄:當客戶管理 金鑰保存庫 實例中的CMK存取失敗時,專案會新增至活動記錄。 如果您儘快為這些事件建立警示,您可以恢復存取權。
  • 動作群組:定義這些群組,以根據您的喜好設定接收通知和警示。

在 金鑰保存庫 中使用客戶的受控密鑰進行還原

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器使用儲存在 金鑰保存庫 的客戶受控密鑰加密之後,任何新建立的伺服器複本也會加密。 您可以透過 時間點還原 (PITR) 作業或讀取複本來建立這個新複本。

當您在還原或建立讀取複本期間設定客戶管理的數據加密時,您可以在主要和還原/複本伺服器上遵循下列步驟來避免問題:

  • 起始還原程式或從主要 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例建立讀取複本的程式。

  • 在還原或復本伺服器上,您可以變更 CMK 和/或用來存取數據加密設定中 金鑰保存庫 的 Microsoft Entra 身分識別。 請確定新建立的伺服器具有儲存在 金鑰保存庫 中之密鑰的清單包裝解除包裝許可權。

  • 還原之後請勿撤銷原始密鑰。 目前,在您將已啟用 CMK 的伺服器還原至另一部伺服器之後,我們不支援撤銷密鑰。

受控 HSM

硬體安全性模組 (HSM) 是防竄改的硬體裝置,可藉由產生、保護和管理用於加密數據、解密數據、建立數位簽名和建立數位證書的密鑰,協助保護密碼編譯程式。 HSM 已經過測試、驗證並認證到最高安全性標準,包括 FIPS 140 和通用準則。

Azure 金鑰保存庫 受控 HSM 是完全受控、高可用性、單一租使用者、符合標準規範的雲端服務。 您可以使用它,透過 經過 FIPS 140-3 驗證的 HSM 來保護雲端應用程式的密碼編譯密鑰。

當您使用 CMK 功能在 Azure 入口網站 中建立新的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例時,您可以選擇 Azure 金鑰保存庫 受控 HSM 作為密鑰存放區,作為 Azure 金鑰保存庫 的替代方案。 使用者定義身分識別和許可權的必要條件與 Azure 金鑰保存庫 相同(如本文稍早所述)。 如需如何建立受控 HSM 實例的詳細資訊、其優點和差異與共用 金鑰保存庫 型證書存儲,以及如何將密鑰匯入受控 HSM,請參閱什麼是 Azure 金鑰保存庫 受控 HSM?

無法存取的 CMK 條件

當您在 Key Vault 中使用 CMK 來設定資料加密時,伺服器必須能夠持續存取此金鑰,才能保持線上狀態。 如果伺服器在 金鑰保存庫 失去 CMK 的存取權,伺服器就會在 10 分鐘內開始拒絕所有連線。 伺服器發出對應的錯誤訊息,並將伺服器狀態變更為 無法存取

伺服器狀態變成 無法存取 的一些原因如下:

  • 如果您刪除 金鑰保存庫 實例,則 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例無法存取金鑰並移至無法存取的狀態。 若要讓伺服器可供使用請復原 金鑰保存庫 實例,並重新驗證數據加密。
  • 如果您從 金鑰保存庫 刪除金鑰,則 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例無法存取金鑰並移至無法存取的狀態。 若要讓伺服器 可供使用請復原密鑰 並重新驗證數據加密。
  • 如果您從 Microsoft Entra ID 刪除用來從 金鑰保存庫 擷取金鑰的受控識別,則 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例無法存取金鑰並移至無法存取的狀態。 若要讓伺服器 可供使用請復原身分 識別並重新驗證數據加密。
  • 如果您從用來從 金鑰保存庫 擷取密鑰的受控識別撤銷 金鑰保存庫 清單取得wrapKey 和 unwrapKey 存取原則,則 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例無法存取密鑰並移至無法存取的狀態。 將必要的存取原則新增至 金鑰保存庫 中的身分識別。
  • 如果您設定了過於嚴格的防火牆規則 金鑰保存庫,適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器無法與 金鑰保存庫 通訊以擷取密鑰。 當您設定 金鑰保存庫 防火牆時,請務必選取允許受信任的 Microsoft 服務 略過防火牆的選項

注意

停用、刪除、過期或無法連線金鑰時,透過該金鑰加密資料的伺服器會 如先前所述變成無法存取。 在您重新啟用金鑰或指派新金鑰之前,伺服器將無法使用。

一般而言,在停用、刪除、過期或無法連線金鑰之後,伺服器會在 60 分鐘內變成無法存取。 金鑰變成可用之後,伺服器最多可能需要 60 分鐘的時間才能再次變成 可存取

搭配 CMK 和異地備援商務持續性功能使用數據加密

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器支援進階數據復原功能,例如複本異地備援備份。 以下是使用 CMK 設定資料加密的需求,以及這些功能,以及 使用 CMK 進行數據加密的基本需求:

限制

以下是在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中設定 CMK 的目前限制:

  • 您只能在建立新伺服器期間設定 CMK 加密,而不是作為現有 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例的更新。 您可以 改為使用 CMK 加密 將 PITR 備份還原至新的伺服器。

  • 設定 CMK 加密之後,就無法將其移除。 如果您想要移除此功能,唯一的方法是 將伺服器還原至非 CMK 伺服器

下一步