建立啟用 TDE 的叢集

選取說明文件版本:

事前準備

建立叢集

如要建立啟用 TDE 的叢集,您必須在資料庫初始化期間,傳遞必要的 Key Management Service (KMS) 設定和驗證憑證。目前僅支援 jwt 驗證類型。

  1. 使用 RPM 安裝 AlloyDB Omni,準備環境並安裝 AlloyDB Omni RPM 套件。

  2. 初始化資料庫。

    HashiCorp Vault KMS

    請將這種方法用於正式環境工作負載。

    1. 執行下列指令,初始化已啟用 TDE 的資料庫:

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      VAULT_AUTH_TYPE=jwt \
      VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \
      VAULT_JWT_PATH=JWT_FILE_PATH \
      VAULT_ROLE=VAULT_ROLE \
      VAULT_CERT_PATH=VAULT_CERT_PATH \
      POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb

      更改下列內容:

      • POSTGRES_PASSWORD:資料庫使用者的密碼。
      • DATA_DIR:要掛接為 AlloyDB Omni 資料磁碟區的本機目錄,例如 /local/data
      • VAULT_AUTH_TYPE:用於 Vault 連線的驗證類型。系統僅支援 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:容器中存放金鑰管理服務連線憑證的路徑,例如 /tde-tls。如未設定,系統會使用預設信任存放區中的憑證。
      • KEK_URL:HashiCorp Vault 中 KEK 的完整網址。使用 vault 做為通訊協定,將 HashiCorp Vault 指定為 KMS 提供者,例如 vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek
    2. 如要為 alloydbomni.service in /etc/systemd/system/alloydbomni18.service.d/override.conf 建立覆寫檔案,請在 override.conf 檔案中新增下列內容:

      [Service]
      Environment="VAULT_AUTH_TYPE"
      Environment="VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT"
      Environment="VAULT_JWT_PATH=JWT_FILE_PATH"
      Environment="VAULT_ROLE=VAULT_ROLE"
      Environment="VAULT_CERT_PATH=VAULT_CERT_PATH"
    3. 如要套用變更,請重新載入 systemd Daemon。

      sudo systemctl daemon-reload

    以檔案為基礎的 KMS

    這種做法僅供測試。

    如要使用檔案型金鑰在本機測試 TDE,請先在電腦上產生 32 位元組的 KEK。

    1. 建立目錄、產生金鑰,並設定適當的權限。

      KEK_DIR=KEK_DIR
      mkdir -p $KEK_DIR
      sudo chown 999:999 $KEK_DIR
      openssl rand -base64 32 | sudo tee $KEK_DIR/key
      sudo chmod 0755 $KEK_DIR/key
    2. 將本機檔案 URI 做為 KEK 網址傳遞,藉此初始化資料庫。

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      POSTGRES_INITDB_ARGS="--tde-kek-url=file:///$KEK_DIR/key" \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb

      更改下列內容:

      • POSTGRES_PASSWORD:資料庫使用者的密碼。
      • DATA_DIR:要掛接為 AlloyDB Omni 資料磁碟區的本機目錄,例如 /local/data
      • KEK_DIR:儲存本機檔案 KEK 的目錄,例如 /tmp/alloydb/kms
  3. 資料庫初始化完成後,請按照「使用 RPM 安裝 AlloyDB Omni」中的操作說明準備資料庫、設定主機,並啟動 systemd 服務。

查看 TDE 指標

叢集初始化後,請完成下列步驟,確認 TDE 已啟用並查看相關 TDE 指標。

  1. 使用 psql 或偏好的用戶端連線至資料庫。如需連線至執行個體的詳細操作說明,請參閱「執行及連線至 AlloyDB Omni」。
  2. 執行下列指令:

    select * FROM pgsnap.g$tde_stats;
    

    輸出內容會顯示 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_enabled TDE 啟用狀態。 不適用 取樣
    alloydb_omni_database_tde_kek_info TDE 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_total WAL 區塊加密的總時間。 不適用 微秒 計數器