加密作業是透明的,因為 SQL 查詢、DDL 和 DML 作業都能正常運作,不需變更應用程式。資料在寫入磁碟前會自動加密,讀取至記憶體時則會解密。
金鑰階層結構
AlloyDB Omni 採用雙層金鑰階層結構,嚴格區分資料庫和使用者管理的安全基礎架構。
- 資料加密金鑰 (DEK):由 AlloyDB Omni 產生及擁有。這些金鑰會加密實際資料檔案、WAL 和暫存檔案。AlloyDB Omni 會將 DEK 儲存在磁碟上,但會使用 KEK 包裝。
-
金鑰加密金鑰 (KEK):您在外部金鑰管理服務 (KMS) 中管理的主要金鑰。AlloyDB Omni 會使用 KEK 加密 DEK。AlloyDB Omni 只會在啟動時存取這組金鑰,以便解開 DEK。您的 KEK 絕不會永久儲存在資料庫磁碟上。
-
KEK 的位置和存取參數會透過環境變數和
--tde-kek-url初始化旗標提供。
-
KEK 的位置和存取參數會透過環境變數和
TDE 如何與 AlloyDB Omni 搭配運作
啟用 TDE 後,AlloyDB Omni 會使用與外部 KMS 整合的分層加密模型,保護您的資料。
- 初始化和金鑰擷取:在叢集的啟動或初始化階段,AlloyDB Omni 引擎會與 KMS 建立安全連線,系統會使用 JSON Web Token (JWT) 進行驗證,並擷取 KEK。
- 解開 DEK:AlloyDB Omni 會使用 KEK 解開 DEK,DEK 會以包裝狀態儲存在本機儲存空間。接著,這些 DEK 會載入記憶體。
- 透明的資料作業:
- 寫入磁碟:資料庫將資料區塊、WAL 記錄或暫時檔案寫入實體磁碟時,會先使用 AES-256 演算法自動加密資料,再寫入實體磁碟。
- 從磁碟讀取:資料庫需要將資料讀取到記憶體時,會自動使用記憶體中的 DEK 解密資料塊。
- 安全性界限:KEK 絕不會儲存在本機資料庫磁碟上,因此即使實體儲存媒體遭到入侵,只要未經授權存取外部保管箱,資料仍無法讀取。
加密範圍和規格
AlloyDB Omni 採用業界標準的 AES-256 演算法,確保資料安全。
- 資料檔案 (資料表和索引):AES-256-XTS。
- 預寫記錄 (WAL):AES-256-CTR。
- 暫時檔案:視暫時資料類型而定,採用 AES-256-XTS 或 AES-256-CTR。
- 金鑰封裝:AES-256-KWP。
備份與高可用性
啟用 TDE 後,使用 pgBackRest 建立的備份會沿用來源叢集的加密設定。這可確保備份資料與主要資料庫享有同等安全防護。
如果是高可用性設定,必須使用相同的保存庫環境變數初始化復原環境。所有參與的主機都必須提供 vault 環境變數。
支援的 KMS 和驗證
AlloyDB Omni 支援 HashiCorp Vault 做為外部 KMS 供應商。AlloyDB Omni 僅支援 KV-V2 密鑰引擎,且唯一支援的驗證方式為 JWT。
PostgreSQL 工具相容性
啟用 TDE 的叢集支援所有內建 PostgreSQL 工具 (initdb 除外),並透過環境變數透明化。如果您使用 initdb,請務必明確傳遞 KEK 網址。詳情請參閱「建立啟用 TDE 的叢集」。
限制
- 您無法在現有叢集上啟用 TDE。
- TDE 啟用後即無法停用。
- 已啟用 TDE 的叢集不支援主要版本升級。
- 您無法將加密備份還原至未加密的伺服器,也無法將未加密的備份還原至加密伺服器。
- 不支援 DEK 輪替。
- 只要 KEK 網址路徑不變,就支援 KEK 輪替。
- 您無法使用
FILE_COPY策略CREATE DATABASE。 - 在啟用 TDE 的叢集上,Barman 備份僅支援
rsync模式。不支援postgres備份方法。
後續步驟
- 瞭解如何建立已啟用 TDE 的叢集。