共用方式為


適用於 PostgreSQL 的 Azure 資料庫中的資料加密

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

適用於 PostgreSQL 的 Azure 資料庫彈性伺服器所管理的所有資料,一律會進行待用加密。 這些資料包括所有系統和使用者資料庫、暫存檔案、伺服器記錄、預先寫入記錄區段和備份。

使用服務管理金鑰 (SMK) 或客戶自控金鑰 (CMK) 的待用加密

適用於 PostgreSQL 的 Azure 資料庫彈性伺服器支援兩種待用數據加密模式:服務管理金鑰 (SMK)客戶自控密鑰 (CMK)。 使用服務受控密鑰進行數據加密是適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的預設模式。 在此模式中,服務會自動管理用來加密數據的加密金鑰。 您不需要採取任何動作,即可在此模式中啟用或管理加密。

客戶管理的金鑰 模式中,您可以攜帶自己的加密金鑰來加密您的資料。 此模式可讓您更充分掌控加密程式,但也要求您自行管理加密密鑰。 您必須部署自己的 Azure Key Vault 或 Azure Key Vault 受控硬體安全性模組 (HSM),並將其設定為儲存適用於 PostgreSQL 的 Azure 資料庫彈性伺服器所使用的加密密鑰。

您只能在建立伺服器時選取設定模式。 在伺服器的存留期,您無法將伺服器從某個模式變更為另一個模式。

為了達到數據的加密,適用於 PostgreSQL 的 Azure 資料庫彈性伺服器會 針對待用數據使用 Azure 記憶體加密。 使用 CMK 時,客戶須負責提供金鑰,以加密和解密 Blob 記憶體和 Azure 檔案服務中的數據。 這些金鑰必須儲存在 Azure Key Vault 或 Azure Key Vault 受控硬體安全模組 (HSM) 中。 如需詳細資訊,請參閱適用於 Azure 儲存體加密的客戶自控金鑰 (部分機器翻譯)。

每個模式所提供的優點 (SMK 或 CMK)

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

  • 服務會自動且完全地控制資料存取。
  • 服務會自動且完全地控制金鑰的生命週期,包括金鑰的輪替。
  • 您不需要擔心資料加密金鑰的管理。
  • 以服務管理金鑰為基礎的資料加密不會對工作負載的效能造成負面影響。
  • 其可簡化加密金鑰的管理 (包括其定期輪替),以及用來存取這些金鑰之身分識別的管理。

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

  • 您可以完全地控制資料存取。 您可以移除金鑰,讓資料庫無法供使用者存取。
  • 您可以完全地控制金鑰的生命週期 (包括金鑰輪替) 以配合公司原則。
  • 您可以在自己的 Azure Key Vault 執行個體中集中管理及組織所有加密金鑰。
  • 以客戶自控金鑰為基礎的資料加密不會對工作負載的效能造成負面影響。
  • 您可以在資訊安全人員、資料庫管理員和系統管理員之間實作職責區分。

CMK 需求

使用客戶自控加密金鑰時,您要自行承擔所有責任。 因此,您必須部署自己的 Azure Key Vault 或 Azure Key Vault HSM。 您必須產生或匯入您自己的金鑰。 您必須授與 Key Vault 上的必要權限,讓適用於 PostgreSQL 的 Azure 資料庫彈性伺服器可以對金鑰執行必要的動作。 您必須負責設定該金鑰保留所在之 Azure Key Vault 的所有網路層面,讓適用於 PostgreSQL 的 Azure 資料庫彈性伺服器可以存取該金鑰。 稽核金鑰的存取權也是您的責任。 最後,您必須負責輪替金鑰,並在必要時更新適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的設定,使其參考輪替後的金鑰版本。

當您為儲存體帳戶設定客戶自控金鑰時,Azure 儲存體會使用相關金鑰保存庫或受控 HSM 中的客戶自控金鑰,來包裝帳戶的根資料加密金鑰 (DEK)。 根加密金鑰的保護會變更,但 Azure 儲存體帳戶中的資料會一直保持加密。 您不需要採取額外動作來確保您的資料會保持加密狀態。 客戶自控金鑰的保護會立即生效。

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

以下是設定適用於 PostgreSQL 的 Azure 資料庫彈性伺服器資料加密的需求清單:

  • Key Vault 和適用於 PostgreSQL 的 Azure 資料庫彈性伺服器必須屬於相同的 Microsoft Entra 租用戶。 目前不支援跨租用戶 Key Vault 與伺服器互動。 之後若移動 Key Vault 資源,則系統會要求您重新設定資料加密。
  • 建議將 Key Vault 的保留已刪除保存庫的天數設定設為 90 天。 如果您已使用較低天數設定現有的 Key Vault 執行個體,則目前應該依然有效。 不過,如果您想要修改此設定並增加天數,則必須建立新的 Key Vault 執行個體。 執行個體建立好之後,就無法修改此設定。
  • 啟用 Key Vault 中的軟刪除功能,幫助您防範因意外刪除密鑰或 Key Vault 實例而造成的資料遺失。 除非使用者同時復原或清除虛刪除的資源,否則 Key Vault 將會保留虛刪除的資源 90 天。 復原和清除動作有與 Key Vault 相關聯的權限、RBAC 角色或存取原則權限。 軟刪除的功能預設為開啟。 如果您有一些很久以前部署的 Key Vault,其可能仍然停用虛刪除。 在此情況下,您可以使用 Azure CLI 加以開啟。
  • 啟用清除保護,以對刪除的保存庫及保存庫物件執行強制保留期間。
  • 向適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的使用者指派受控識別授與金鑰存取權,方法是:
    • 慣用:應使用 RBAC 權限模型 (部分機器翻譯) 來設定 Azure Key Vault,且應向受控識別指派 Key Vault 密碼編譯服務加密使用者 (部分機器翻譯) 角色。
    • 舊版:如果是使用存取原則權限模型來設定 Azure Key Vault 的,則請向受控識別授與下列權限:
      • get:以擷取 Key Vault 中金鑰的屬性和公用部分。
      • list:以列出並逐一查看儲存在 Key Vault 中的金鑰。
      • wrapKey:以加密資料加密金鑰。
      • unwrapKey:以解密資料加密金鑰。
  • 用於加密資料加密金鑰的金鑰只能是非對稱的、RSA 或 RSA-HSM。 支援 2048、3072 和 4096 的金鑰大小。 建議使用 4096 位元的金鑰來提升安全性。
  • 金鑰啟用日期和時間 (若已設定) 必須是過去的時間。 到期日期和時間 (若已設定) 必須是未來的時間。
  • 金鑰必須處於 [已啟用] 狀態。
  • 如果您要將現有金鑰匯入 Key Vault,請以支援的檔案格式 (.pfx.byok.backup) 來提供該金鑰。

CMK 金鑰版本更新

CMK 可以透過手動密鑰輪替和更新,或在 Key Vault 中的手動或自動金鑰輪替之後,使用自動金鑰版本更新進行設定。

如需詳細資訊,請參閱 在伺服器布建期間使用客戶管理的密鑰設定數據加密

手動金鑰輪替和更新

當您使用手動密鑰更新設定 CMK 時,必須在 Key Vault 中進行手動或自動密鑰輪替後,手動更新 Azure Database for PostgreSQL 彈性伺服器中的密鑰版本。 在您更新舊金鑰版本之前,伺服器會繼續使用舊的金鑰版本。 您可以透過指定包含版本 GUID 的金鑰 URI 來配置此模式。 例如: https://<keyvault-name>.vault.azure.net/keys/<key-name>/<key-version> 。 直到最近,這是唯一可用的選項。

每當手動輪替密鑰或 AKV 會根據其輪替原則自動輪替密鑰時,您必須更新 PostgreSQL 實例上的 CMK 屬性。 這種方法已被證實為容易出錯的操作,或者需要自訂腳本來處理密鑰輪替,特別是在使用 Microsoft Key Vault 的自動輪替功能時。

自動金鑰版本更新

若要啟用自動金鑰版本更新,請使用無版本金鑰 URI。 這樣就不需要在密鑰輪替之後更新 PostgreSQL 實例中的 CMK 版本屬性。 PostgreSQL 會自動挑選新的金鑰版本,並重新加密數據加密密鑰。 這對於密鑰週期管理來說是一個很大的簡化,尤其是在與 Key Vault 自動輪替結合使用時。

若要使用 ARM、Bicep、Terraform、Azure PowerShell 或 Azure CLI 實作,只需省略密鑰 URI 中的版本 GUID 即可。

在入口網站中選取核取方塊,引導 UI 在互動式選取期間隱藏版本 GUID,以及在驗證 URI 時隱藏版本 GUID。

建議

當您使用客戶自控金鑰來進行資料加密時,請遵循以下建議來設定 Key Vault:

  • 若要防止意外或未經授權刪除此重要資源,請在 Key Vault 上設定資源鎖定。
  • 啟用所有加密金鑰的稽核和報告功能。 Key Vault 提供可輕易在其他安全性資訊與事件管理 (SIEM) 工具中插入的記錄。 例如,Azure 監視器記錄即是已整合的服務之一。
  • 選取 [停用公用存取] 和 [允許受信任的 Microsoft 服務略過此防火牆] 來鎖定 Key Vault。
  • 啟用自動金鑰版本更新。

注意

選取 [停用公用存取] 和 [允許受信任的 Microsoft 服務略過此防火牆] 後,當您嘗試使用公用存取透過入口網站管理 Key Vault 時,您可能會收到類似下列的錯誤:「您已啟用網路存取控制。 只有獲得允許的網路可以存取此金鑰保存庫。」此錯誤並不會讓您無法在客戶自控金鑰設定期間提供金鑰,也不會讓您無法在伺服器作業期間從 Key Vault 擷取金鑰。

  • 將客戶自控金鑰的複本置於安全的位置,或將其託管給第三方託管服務。
  • 如果 Key Vault 產生金鑰,請在第一次使用該金鑰之前,先建立金鑰備份。 您只能將備份還原到 Key Vault。

特殊考量

意外撤銷對 Azure Key Vault 的金鑰存取權限

具有足夠權限可存取 Key Vault 的人員,可能會因為以下操作而不小心停用伺服器存取金鑰的權限:

  • 取消指派 RBAC 角色 Key Vault 密碼編譯服務加密使用者 (部分機器翻譯),或撤銷用來擷取 Key Vault 中金鑰的身分識別權限。
  • 刪除金鑰。
  • 刪除 Key Vault 執行個體。
  • 變更 Key Vault 防火牆規則。
  • 在 Microsoft Entra ID 中刪除伺服器的受控識別。

監視 Azure Key Vault 中保留的金鑰

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

  • 資源健康狀態 (部分機器翻譯):失去 CMK 存取權的資料庫會在首次的資料庫連線遭拒後顯示為無法存取
  • 活動記錄 (部分機器翻譯):當客戶自控 Key Vault 執行個體中的 CMK 存取失敗時,系統會將這些失敗項目新增至活動記錄中。 如果您為這些事件建立警示,便可以盡快恢復存取。
  • 動作群組:定義這些群組,以根據您的喜好設定收到通知和警示。

還原使用客戶自控金鑰所設定之伺服器的備份

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

當您設定使用客戶自控金鑰來進行的資料加密時,在還原備份或建立讀取複本等作業期間,您可以藉由在主要伺服器和還原的伺服器或復本伺服器上遵循下列步驟來避免問題:

  • 從主要的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體中,起始還原流程或建立讀取複本流程。
  • 在還原的伺服器或複本伺服器上,您可以變更客戶自控金鑰,以及用來存取 Key Vault 的使用者指派受控識別。 請確定在新建伺服器中指派的身分識別具有 Key Vault 上的必要權限。
  • 還原之後請勿撤銷原始金鑰。 目前,我們不支援在將具有客戶自控金鑰的伺服器還原至另一部伺服器之後撤銷金鑰。

受控 HSM

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

Azure Key Vault 受控 HSM 是完全受控、高可用性、單一租用戶和符合標準的雲端服務。 您可以透過其 FIPS 140-3 驗證的 HSM (部分機器翻譯) 來保護雲端應用程式的密碼編譯金鑰。

當您使用客戶自控金鑰在 Azure 入口網站中建立新的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體時,您可以選擇 Azure Key Vault 受控 HSM 作為替代 Azure Key Vault 的金鑰存放區。 使用者定義之身分識別和權限的必要條件與 Azure Key Vault 相同 (請對照本文稍早列出的條件)。 如需如何建立受控 HSM 執行個體、其優點、與共用 Key Vault 型憑證存放區的差異,以及如何將金鑰匯入受控 HSM 的詳細資訊,請參閱什麼是 Azure Key Vault 受控 HSM? (部分機器翻譯)。

無法存取客戶自控金鑰的狀況

當您使用 Key Vault 中儲存的客戶自控金鑰來設定資料加密時,伺服器必須能夠持續存取此金鑰,才能保持線上狀態。 如果做不到,伺服器的狀態會變更為無法存取,並開始拒絕所有連線。

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

原因 解決方案
伺服器所指向的任何加密金鑰都已設定到期日期和時間,且已達到該日期和時間。 您必須延長金鑰的到期日期。 然後,您必須等候服務重新驗證金鑰,並自動將伺服器狀態轉換為就緒。 只有當伺服器回到就緒狀態時,您才能將金鑰輪替為較新版本或建立新的金鑰,並更新伺服器,使其參考相同金鑰的新版本或參考新的金鑰。
您輪替金鑰,但忘記更新適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,使其指向新金鑰版本。 伺服器所指向的舊金鑰過期,導致伺服器的狀態變成無法存取 若要避免此情況,每次輪替金鑰時,也請務必更新伺服器的執行個體,使其指向新版本。 若要這樣做,您可以使用 az postgres flexible-server update,並按照描述「變更資料加密的金鑰/身分識別。伺服器建立後就無法啟用資料加密,這只會更新金鑰/身分識別。」(部分機器翻譯) 的範例來進行。 如果您想要使用 API 更新它,您可以叫用服務的伺服器 - 更新 (部分機器翻譯) 端點。
您刪除 Key Vault 執行個體,適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體無法存取金鑰,並進入無法存取狀態。 復原 Key Vault 執行個體 (部分機器翻譯),並等候服務執行金鑰的定期重新驗證,並自動將伺服器狀態轉換為就緒
您從 Microsoft Entra ID 中刪除受控識別 (部分機器翻譯),這個受控識別用來擷取儲存在 Key Vault 中的任何加密金鑰。 復原身分識別 (部分機器翻譯),並等候服務執行金鑰的定期重新驗證,並自動將伺服器狀態轉換為就緒
您的 Key Vault 權限模型已設定為使用角色型存取控制。 您從設定為擷取任何金鑰的受控識別 (部分機器翻譯) 中移除 Key Vault 密碼編譯服務加密使用者 (部分機器翻譯) RBAC 角色指派。 重新向受控識別 (部分機器翻譯) 授與 RBAC 角色,並等候服務執行金鑰的定期重新驗證,並自動將伺服器狀態轉換為就緒。 替代方法包括將 Key Vault 上的角色授與給不同的受控識別 (部分機器翻譯),並更新伺服器,使其使用這個不同的受控識別 (部分機器翻譯) 來存取金鑰。
您的 Key Vault 權限模型已設定為使用存取原則。 您從設定為擷取任何金鑰的受控識別 (部分機器翻譯) 撤銷 listgetwrapKeyunwrapKey 存取原則。 重新向受控識別授與 RBAC 角色,並等候服務執行金鑰的定期重新驗證,並自動將伺服器狀態轉換為就緒。 替代方法包括將 Key Vault 上的必要存取原則授與給不同的受控識別,並更新伺服器,使其使用這個不同的受控識別來存取金鑰。
您設定了限制過於嚴格的 Key Vault 防火牆規則,使得適用於 PostgreSQL 的 Azure 資料庫彈性伺服器無法與 Key Vault 通訊來擷取金鑰。 當您設定 Key Vault 防火牆時,請確定您選取的選項會允許受信任的 Microsoft 服務 (部分機器翻譯),以便適用於 PostgreSQL 的 Azure 資料庫彈性伺服器可以略過防火牆。

注意

當金鑰遭停用、遭刪除、已過期或無法連線時,透過該金鑰加密資料的伺服器會變成無法存取的狀態,一如先前所述。 要等到伺服器可以重新驗證加密金鑰後,其狀態才會重新變為就緒

一般而言,在金鑰遭停用、遭刪除、已過期或無法連線後的 60 分鐘內,伺服器會變成無法存取的狀態。 在金鑰變為可用狀態後,伺服器最多可能需要 60 分鐘的時間,才能重新變為就緒

從受控識別刪除中復原

如果在 Microsoft Entra ID 中刪除了用來存取 Key Vault 中所儲存加密金鑰的使用者指派受控識別,請遵循下列步驟來加以復原:

  1. 復原身分識別 (部分機器翻譯) 或建立新的受控 Entra ID 身分識別。
  2. 如果您建立了新的身分識別,即使其名稱與刪除之前的名稱完全相同,仍請更新 Azure 資料庫彈性伺服器屬性,使其了解其必須使用這個新的身分識別來存取加密金鑰。
  3. 請確保此身分識別具有 Azure Key Vault (AKV) 中金鑰作業的適當權限。
  4. 等候大約一小時,直到伺服器重新驗證金鑰為止。

重要事項

僅建立與已刪除身分識別相同名稱的新 Entra ID 身分識別,並無法從受控識別刪除中復原。

透過客戶自控金鑰和異地備援商務持續性功能使用資料加密

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

  • 異地備援備份加密金鑰必須建立在 Key Vault 執行個體中,且這個執行個體必須存在於異地備援備份儲存所在的區域中。
  • 可支援已啟用異地備援備份之 CMK 伺服器的 Azure Resource Manager REST API (部分機器翻譯) 版本為 2022-11-01-preview。 如果您想要使用 Azure Resource Manager 範本 自動建立使用 CMK 加密和異地備援備份功能的伺服器,請使用此 API 版本。
  • 您無法使用相同的使用者受控識別來驗證主要資料庫的 Key Vault 執行個體和保存異地備援備份加密金鑰的 Key Vault 執行個體。 若要維護區域復原能力,建議您在與異地備援備份相同的區域中建立使用者受控識別。
  • 如果您在建立期間設定讀取複本資料庫以透過 CMK 加密,其加密金鑰必須位於讀取複本資料庫所在區域內的 Key Vault 執行個體中。 必須在同一個區域中建立使用者指派的身分識別 (部分機器翻譯),才能針對此 Key Vault 執行個體進行驗證。

限制

以下是在「適用於 PostgreSQL 的 Azure 資料庫」彈性伺服器中設定客戶管理密鑰的目前限制: