AlloyDB Omni 的透明資料加密

如要保護機密資訊並符合嚴格的法規遵循要求,同時不修改應用程式程式碼,請使用透明資料加密 (TDE) 技術,保護 AlloyDB Omni 中的靜態資料。本總覽說明 TDE 如何在資料庫檔案、記錄和快取寫入磁碟前自動加密,確保深度安全,同時將作業負擔降到最低。

金鑰階層結構

AlloyDB Omni 採用雙層金鑰階層結構,嚴格區分資料庫和使用者管理的安全基礎架構。

  • 資料加密金鑰 (DEK):由 AlloyDB Omni 產生及擁有的金鑰。這些金鑰會加密實際資料檔案、WAL 和暫存檔案。AlloyDB Omni 會將 DEK 儲存在磁碟上,但會以 KEK 包裝。
  • 金鑰加密金鑰 (KEK):您在外部金鑰管理服務 (KMS) 中管理的主要金鑰。AlloyDB Omni 會使用 KEK 加密 DEK。AlloyDB Omni 只會在啟動時存取這組金鑰,以便解開 DEK。您的 KEK 絕不會永久儲存在資料庫磁碟上。
    • KEK 的位置和存取參數是透過環境變數和 --tde-kek-url 初始化旗標提供。

TDE 如何搭配 AlloyDB Omni 運作

啟用 TDE 後,AlloyDB Omni 會使用與外部 KMS 整合的分層加密模型,保護您的資料。

  • 初始化和金鑰擷取:在叢集的啟動或初始化階段,AlloyDB Omni 引擎會與 KMS 建立安全連線,它會使用 HashiCorp Vault 的 JSON Web Token (JWT),或 Thales CipherTrust Manager 的使用者名稱和密碼憑證進行驗證,並擷取 KEK。
  • 解開 DEK 包裝:AlloyDB Omni 會使用 KEK 解開 DEK 包裝,這些 DEK 會以包裝狀態儲存在本機儲存空間。接著,這些 DEK 會載入記憶體。
  • 透明的資料作業:
    • 寫入磁碟:資料庫將資料區塊、WAL 記錄或暫存檔案寫入實體磁碟時,會先使用 AES-256 演算法自動加密資料,再寫入資料。
    • 從磁碟讀取:資料庫需要將資料讀取到記憶體時,會自動使用記憶體中的 DEK 解密資料塊。
    • 快取加密:TDE 也支援磁碟快取,包括儲存在快取中的資料欄引擎資訊。寫入冷快取儲存層的資料會經過加密,而溢出至資料欄引擎 SSD 快取的資料,則會在寫入 SSD 前加密,並在讀取時解密。
  • 效能最佳化:TDE 包含最佳化功能,可在保護資料的同時維持高效能。這項功能會對資料區塊和快取採用最佳化的 AES-256-XTS 保護機制,並提供同步寫入最佳化功能,盡可能縮短快速路徑的延遲時間。

  • 安全界線:KEK 絕不會儲存在本機資料庫磁碟,確保即使實體儲存媒體遭到入侵,未經授權存取外部 KMS 的使用者也無法讀取資料。

加密範圍和規格

AlloyDB Omni 使用業界標準的 AES-256 演算法保護資料。

  • 資料檔案 (資料表和索引):AES-256-XTS。
  • 預寫記錄 (WAL):AES-256-CTR。
  • 暫存檔案:AES-256-XTS 或 AES-256-CTR,視暫存資料類型而定。
  • 資料欄引擎快取檔案:AES-256-XTS。
  • Chill 快取檔案:AES-256-XTS。
  • 金鑰包裝:AES-256-KWP。

備份與高可用性

啟用 TDE 後,使用 pgBackRest 建立的備份會沿用來源叢集的加密設定。這可確保備份資料與主要資料庫享有同等安全防護。

備份只能還原至可使用相同 KEK 的叢集。

如果是高可用性設定,復原環境必須使用相同的 KMS 環境變數初始化。所有參與的主機都必須提供 KMS 環境變數。

支援的 KMS 和驗證

AlloyDB Omni 支援下列外部 KMS 供應商和驗證方法:

PostgreSQL 工具相容性

啟用 TDE 的叢集支援所有內建 PostgreSQL 工具,但 initdb 除外,可透過環境變數以透明方式運作。如果您使用 initdb,請務必明確傳遞 KEK 網址。詳情請參閱「建立啟用 TDE 的叢集」。

限制

  • 現有叢集無法啟用 TDE。
  • TDE 啟用後即無法停用。
  • 已啟用 TDE 的叢集不支援主要版本升級。
  • 您無法將加密備份還原至未加密的伺服器,也無法將未加密的備份還原至加密的伺服器。
  • 不支援 DEK 輪替。
  • 只要 KEK 網址路徑不變,就支援 KEK 輪替。
  • 您無法使用「FILE_COPY」策略CREATE DATABASE。
  • 在啟用 TDE 的叢集上,Barman 備份僅支援 rsync 模式。不支援 postgres 備份方法。

後續步驟