如要啟用透明資料加密 (TDE),您必須提供必要的保管箱環境變數,並在 POSTGRES_INITDB_ARGS 中加入 --tde-kek-url 標記。
事前準備
- 設定 HashiCorp Vault 的 KV-V2 密碼引擎,確保金鑰加密金鑰 (KEK) 路徑和 JSON Web Token (JWT) 可用。
- 確認 AlloyDB Omni 有權讀取 JWT 權杖檔案。
建立叢集
如要建立啟用 TDE 的叢集,您必須在資料庫初始化期間,傳遞必要的 Key Management Service (KMS) 設定和驗證憑證。目前僅支援 jwt 驗證類型。
選取容器執行階段的分頁標籤。
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Podman
podman run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Podman
podman run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
更改下列內容:
CONTAINER_NAME:要建立的容器名稱。例如:alloydb-tde。DATA_DIR:要掛接為 AlloyDB Omni 資料磁碟區的本機目錄。例如:/local/data。VAULT_AUTH_TYPE:用於保管箱連線的驗證類型。僅支援jwt。JWT_AUTH_ENGINE_MOUNT:HashiCorp Vault 驗證引擎的掛接路徑。例如:/auth/jwt。JWT_FILE_PATH:在節點上儲存 Vault JWT 的路徑。例如:tde-tls/jwt-token。- (選用)
VAULT_ROLE:在保管箱設定中定義的用戶端角色,可讓 HashiCorp 保管箱驗證 JWT 憑證的真實性。 VAULT_CERT_PATH_ON_DISK:主機上保管箱憑證的路徑。例如:/local/vault/config。VAULT_CERT_PATH:容器中存放保險箱連線憑證的路徑。例如:/tde-tls。如未設定,系統會使用預設信任存放區中的憑證。KEK_URL:HashiCorp Vault 中 KEK 的完整網址。使用vault做為通訊協定,將 HashiCorp Vault 指定為 KMS 提供者,例如vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek。IMAGE_TAG:使用18.1.0取得最新版 Debian 映像檔,或使用18.1.0-ubi取得最新版 UBI 映像檔。
查看 TDE 指標
叢集初始化後,請完成下列步驟,確認 TDE 已啟用並查看相關 TDE 指標。
- 使用
psql或偏好的用戶端連線至資料庫。如需連線至執行個體的詳細操作說明,請參閱「執行並連線至 AlloyDB Omni」。 執行下列指令:
select * FROM pgsnap.g$tde_stats;如果成功啟用 TDE,輸出內容會顯示 TDE 指標,例如是否已啟用 TDE、KEK 網址、KEK 版本和 KEK 建立時間戳記。
下表說明各項指標的意義。
名稱 說明 標籤 單位 類型 alloydb_omni_database_tde_data_blocks_decrypted_count_total已解密的資料區塊數。 不適用 計數器 alloydb_omni_database_tde_data_blocks_encrypted_count_total加密的資料區塊數。 不適用 計數器 alloydb_omni_database_tde_data_decryption_time_us_total資料區塊解密所花費的總時間。 不適用 微秒 計數器 alloydb_omni_database_tde_data_encryption_time_us_total資料區塊加密所花費的總時間。 不適用 微秒 計數器 alloydb_omni_database_tde_enabledTDE 啟用狀態。 不適用 取樣 alloydb_omni_database_tde_kek_infoTDE KEK 資訊。 kek_version:用於金鑰包裝的 KEK
版本。kek_url:KMS 中 KEK 的完整路徑kek_creation_timestamp:
目前使用的 KEK 版本建立時間。
取樣 alloydb_omni_database_tde_temp_blocks_decrypted_count_total已解密的暫時性區塊數。 不適用 計數器 alloydb_omni_database_tde_temp_blocks_encrypted_count_total加密的臨時區塊數。 不適用 計數器 alloydb_omni_database_tde_temp_decryption_time_us_total解密暫時區塊的總時間。 不適用 微秒 計數器 alloydb_omni_database_tde_temp_encryption_time_us_total暫時性區塊加密的總時間。 不適用 微秒 計數器 alloydb_omni_database_tde_wal_blocks_decrypted_count_total已解密的 WAL 區塊數。 不適用 計數器 alloydb_omni_database_tde_wal_blocks_encrypted_count_total加密的 WAL 區塊數。 不適用 計數器 alloydb_omni_database_tde_wal_decryption_time_us_total解密 WAL 區塊的總時間。 不適用 微秒 計數器 alloydb_omni_database_tde_wal_encryption_time_us_totalWAL 區塊加密的總時間。 不適用 微秒 計數器