Crea un cluster abilitato alla TDE

Seleziona una versione della documentazione:

Puoi proteggere i dati at-rest e le informazioni sensibili abilitando la crittografia dei dati trasparente (TDE) in AlloyDB Omni. Questo documento descrive come creare un cluster abilitato per TDE fornendo le variabili di ambiente del servizio di gestione delle chiavi (KMS) richieste (per HashiCorp Vault o Thales CipherTrust Manager) e il flag --tde-kek-url nella variabile di ambiente POSTGRES_INITDB_ARGS durante l'inizializzazione del database.

Prima di iniziare

KMS di HashiCorp Vault

  • Leggi Pianificare l'installazione di AlloyDB Omni.
  • Quando pianifichi il deployment di AlloyDB Omni con TDE abilitato, tieni conto dell'utilizzo aggiuntivo della CPU in base al volume di dati e al carico di lavoro previsti. La crittografia e la decrittografia sono operazioni a elevato utilizzo di risorse di calcolo.
  • Configura il motore di secret KV-V2 di HashiCorp Vault per assicurarti che il percorso della chiave di crittografia della chiave (KEK) e il token JWT (JSON Web Token) siano disponibili.
  • Verifica che AlloyDB Omni abbia l'autorizzazione per leggere il file JWT (JSON Web Token), che è il token di autenticazione.

KMS di Thales CipherTrust

  • Leggi Pianificare l'installazione di AlloyDB Omni.
  • Quando pianifichi il deployment di AlloyDB Omni con TDE abilitato, tieni conto dell'utilizzo aggiuntivo della CPU in base al volume di dati e al carico di lavoro previsti. La crittografia e la decrittografia sono operazioni a elevato utilizzo di risorse di calcolo.
  • Configura Thales CipherTrust Manager per assicurarti che la chiave di crittografia della chiave (KEK) secret sia creata ed esportabile.
  • Verifica di avere un account utente di CipherTrust Manager (username e password) con l'autorizzazione per autenticare ed esportare il secret KEK.

Crea il cluster

Per creare un cluster abilitato per TDE, devi trasmettere la configurazione del servizio di gestione delle chiavi (KMS) e le credenziali di autenticazione necessarie durante l'inizializzazione del database. Puoi configurare HashiCorp Vault (utilizzando l'autenticazione jwt) o Thales CipherTrust Manager (utilizzando l'autenticazione con nome utente e password).

  1. Installa AlloyDB Omni utilizzando RPM per preparare l'ambiente e installare il pacchetto RPM di AlloyDB Omni.

  2. Inizializza il database.

    KMS di HashiCorp Vault

    Utilizza questo approccio per i carichi di lavoro di produzione con HashiCorp Vault.

    1. Esegui il seguente comando per inizializzare il database con TDE abilitato:

      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

      Sostituisci quanto segue:

      • POSTGRES_PASSWORD: la password per l'utente del database.
      • DATA_DIR: la directory locale da montare come volume di dati per AlloyDB Omni, ad esempio /local/data.
      • JWT_AUTH_ENGINE_MOUNT: il percorso in cui è montato il motore di autenticazione di HashiCorp Vault, ad esempio /auth/jwt.
      • JWT_FILE_PATH: il percorso in cui è archiviato il JWT di Vault sui nodi, ad esempio /tde-tls/jwt-token.
      • (Facoltativo) VAULT_ROLE: il ruolo client definito nella configurazione di Vault che consente a HashiCorp Vault di verificare l'autenticità del token JWT.
      • VAULT_CERT_PATH: il percorso in cui si trovano i certificati per la connessione a Vault sui nodi, ad esempio /tde-tls. Se non è impostato, vengono utilizzati i certificati nell'archivio di attendibilità predefinito.
      • KEK_URL: l'URL completo della KEK in HashiCorp Vault. Utilizza vault come protocollo per specificare HashiCorp Vault come provider KMS, ad esempio vault://127.0.0.1:8200/v1/secret/data/alloydb_kek.
    2. Per creare un file di override per alloydbomni18.service in /etc/systemd/system/alloydbomni18.service.d/override.conf, aggiungi quanto segue al file override.conf:

      [Service]
      Environment="VAULT_AUTH_TYPE=jwt"
      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"

      Sostituisci quanto segue:

      • JWT_AUTH_ENGINE_MOUNT: il percorso in cui è montato il motore di autenticazione di HashiCorp Vault, ad esempio /auth/jwt.
      • JWT_FILE_PATH: il percorso in cui è archiviato il JWT di Vault sui nodi, ad esempio /tde-tls/jwt-token.
      • (Facoltativo) VAULT_ROLE: il ruolo client definito nella configurazione di Vault che consente a HashiCorp Vault di verificare l'autenticità del token JWT.
      • VAULT_CERT_PATH: il percorso in cui si trovano i certificati per la connessione a Vault sui nodi, ad esempio /tde-tls. Se non è impostato, vengono utilizzati i certificati nell'archivio di attendibilità predefinito.
    3. Per applicare le modifiche, ricarica il daemon systemd.

      sudo systemctl daemon-reload

    KMS di Thales CipherTrust

    Utilizza questo approccio per i carichi di lavoro di produzione con Thales CipherTrust Manager.

    1. Esegui il seguente comando per inizializzare il database con TDE abilitato:

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
      CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
      CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \
      POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb

      Sostituisci quanto segue:

      • POSTGRES_PASSWORD: la password per l'utente del database.
      • DATA_DIR: la directory locale da montare come volume di dati per AlloyDB Omni, ad esempio /local/data.
      • CIPHERTRUST_USERNAME: il nome utente utilizzato per l'autenticazione con Thales CipherTrust Manager.
      • CIPHERTRUST_PASSWORD: la password per l'utente di Thales CipherTrust Manager.
      • CIPHERTRUST_CERT_PATH: il percorso in cui si trovano i certificati (ca.crt, tls.crt e tls.key) per la connessione a CipherTrust Manager sui nodi, ad esempio /tde-tls. Se non è impostato, vengono utilizzati i certificati nell'archivio di attendibilità predefinito.
      • KEK_URL: l'URL completo della KEK in Thales CipherTrust Manager. Utilizza ciphertrust come protocollo per specificare Thales CipherTrust Manager come provider KMS, ad esempio ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek.
    2. Per creare un file di override per alloydbomni18.service in /etc/systemd/system/alloydbomni18.service.d/override.conf, aggiungi quanto segue al file override.conf:

      [Service]
      Environment="CIPHERTRUST_USER=CIPHERTRUST_USERNAME"
      Environment="CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD"
      Environment="CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH"

      Sostituisci quanto segue:

      • CIPHERTRUST_USERNAME: il nome utente utilizzato per l'autenticazione con Thales CipherTrust Manager.
      • CIPHERTRUST_PASSWORD: la password per l'utente di Thales CipherTrust Manager.
      • CIPHERTRUST_CERT_PATH: il percorso in cui si trovano i certificati (ca.crt, tls.crt e tls.key) per la connessione a CipherTrust Manager sui nodi, ad esempio /tde-tls. Se non è impostato, vengono utilizzati i certificati nell'archivio di attendibilità predefinito.
    3. Per applicare le modifiche, ricarica il daemon systemd.

      sudo systemctl daemon-reload

    KMS basato su file

    Utilizza questo approccio solo a scopo di test.

    Per testare TDE in locale utilizzando una chiave basata su file, devi prima generare una KEK di 32 byte sulla tua macchina.

    1. Crea la directory, genera la chiave e imposta le autorizzazioni appropriate.

      KEK_DIR=KEK_DIR
      sudo mkdir -p $KEK_DIR
      openssl rand -base64 32 | sudo tee $KEK_DIR/key >/dev/null
      sudo chown -R postgres:postgres $KEK_DIR
      sudo chmod 0700 $KEK_DIR
      sudo chmod 0600 $KEK_DIR/key
    2. Inizializza il database trasmettendo l'URI del file locale come URL 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

      Sostituisci quanto segue:

      • POSTGRES_PASSWORD: la password per l'utente del database.
      • DATA_DIR: la directory locale da montare come volume di dati per AlloyDB Omni, ad esempio /local/data.
      • KEK_DIR: la directory in cui è archiviata la KEK locale basata su file, ad esempio /tmp/alloydb/kms.
  3. Dopo aver inizializzato il database, segui le istruzioni riportate in Installare AlloyDB Omni utilizzando RPM per preparare il database, configurare l'host e avviare il servizio systemd.

  4. Per abilitare TDE per i dati della cache del motore colonnare trasferiti allo spazio di archiviazione SSD, connettiti all'istanza del database ed esegui la seguente query:

    ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';
    
  5. Riavvia il server di database affinché le modifiche abbiano effetto.

Riferimento alle metriche TDE

Puoi visualizzare tutte le metriche TDE nell'agente di monitoraggio di AlloyDB Omni. La tabella seguente descrive ogni metrica.

Nome Descrizione Etichetta Unità Tipo
alloydb_omni_database_tde_data_blocks_decrypted_count_total Numero di blocchi di dati decriptati. Non applicabile contatore
alloydb_omni_database_tde_data_blocks_encrypted_count_total Numero di blocchi di dati criptati. Non applicabile contatore
alloydb_omni_database_tde_data_decryption_time_us_total Tempo totale trascorso nella decrittografia dei blocchi di dati. Non applicabile microsecondi contatore
alloydb_omni_database_tde_data_encryption_time_us_total Tempo totale trascorso nella crittografia dei blocchi di dati. Non applicabile microsecondi contatore
alloydb_omni_database_tde_enabled Stato di TDE abilitato. Non applicabile misuratore
alloydb_omni_database_tde_kek_info Informazioni sulla KEK di TDE.
  • kek_version: versione della KEK in uso per il wrapping delle chiavi.
  • kek_url: percorso completo della KEK in KMS.
  • kek_creation_timestamp: ora di creazione della versione KEK in uso.
misuratore
alloydb_omni_database_tde_temp_blocks_decrypted_count_total Numero di blocchi temporanei decriptati. Non applicabile contatore
alloydb_omni_database_tde_temp_blocks_encrypted_count_total Numero di blocchi temporanei criptati. Non applicabile contatore
alloydb_omni_database_tde_temp_decryption_time_us_total Tempo totale trascorso nella decrittografia dei blocchi temporanei. Non applicabile microsecondi contatore
alloydb_omni_database_tde_temp_encryption_time_us_total Tempo totale trascorso nella crittografia dei blocchi temporanei. Non applicabile microsecondi contatore
alloydb_omni_database_tde_wal_blocks_decrypted_count_total Numero di blocchi WAL decriptati. Non applicabile contatore
alloydb_omni_database_tde_wal_blocks_encrypted_count_total Numero di blocchi WAL criptati. Non applicabile contatore
alloydb_omni_database_tde_wal_decryption_time_us_total Tempo totale trascorso nella decrittografia dei blocchi WAL. Non applicabile microsecondi contatore
alloydb_omni_database_tde_wal_encryption_time_us_total Tempo totale trascorso nella crittografia dei blocchi WAL. Non applicabile microsecondi contatore
tde_chill_cache_blocks_encrypted Numero di blocchi della cache di raffreddamento criptati. Non applicabile contatore
tde_chill_cache_blocks_decrypted Numero di blocchi della cache di raffreddamento decriptati. Non applicabile contatore
tde_chill_cache_blocks_total_encryption_time_us Tempo totale trascorso nella crittografia dei blocchi della cache di raffreddamento. Non applicabile microsecondi contatore
tde_chill_cache_blocks_total_decryption_time_us Tempo totale trascorso nella decrittografia dei blocchi della cache di raffreddamento. Non applicabile microsecondi contatore
tde_ce_cache_ssd_blocks_encrypted Numero di blocchi della cache colonnare trasferiti allo spazio di archiviazione SSD criptati. Non applicabile contatore
tde_ce_cache_ssd_blocks_decrypted Numero di blocchi della cache colonnare trasferiti allo spazio di archiviazione SSD decriptati. Non applicabile contatore
tde_ce_cache_ssd_blocks_total_encryption_time_us Tempo totale trascorso nella crittografia dei blocchi della cache colonnare trasferiti allo spazio di archiviazione SSD. Non applicabile microsecondi contatore
tde_ce_cache_ssd_blocks_total_decryption_time_us Tempo totale trascorso nella decrittografia dei blocchi della cache colonnare trasferiti allo spazio di archiviazione SSD. Non applicabile microsecondi contatore