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 con TDE abilitato fornendo le variabili di ambiente del vault richieste e il flag --tde-kek-url nella variabile di ambiente POSTGRES_INITDB_ARGS durante l'inizializzazione del database.
Prima di iniziare
- Leggi Pianificare l'installazione di AlloyDB Omni.
- Quando pianifichi il deployment di AlloyDB Omni con TDE abilitato, assicurati di tenere 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.
Crea il cluster
Per creare un cluster con TDE abilitato, devi trasmettere la configurazione di Key Management Service (KMS) e le credenziali di autenticazione necessarie durante l'inizializzazione del database. L'unico tipo di autenticazione supportato è jwt.
Installa AlloyDB Omni utilizzando RPM per preparare l'ambiente e installare il pacchetto RPM di AlloyDB Omni.
Inizializza il database.
KMS di HashiCorp Vault
Utilizza questo approccio per i carichi di lavoro di produzione.
Esegui il comando seguente 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/alloydbomniproduct_major_version_numeric-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 del vault sui nodi, ad esempiotde-tls/jwt-token.- (Facoltativo)
VAULT_ROLE: il ruolo client definito nella configurazione del 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 al vault sui nodi, ad esempio/tde-tls. Se non viene impostato, vengono utilizzati i certificati nell'archivio di attendibilità predefinito.KEK_URL: l'URL completo della KEK in HashiCorp Vault. Utilizzavaultcome protocollo per specificare HashiCorp Vault come provider KMS, ad esempiovault://127.0.0.1:8200/v1/secrets/data/alloydb_kek.
Per creare un file di override per
alloydbomni18.servicein/etc/systemd/system/alloydbomni18.service.d/override.conf, aggiungi quanto segue al fileoverride.conf:[Service] Environment="VAULT_AUTH_TYPE=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"
Sostituisci quanto segue:
VAULT_AUTH_TYPE: il tipo di autenticazione da utilizzare per la connessione al vault. È supportato solojwt.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 del vault sui nodi, ad esempiotde-tls/jwt-token.- (Facoltativo)
VAULT_ROLE: il ruolo client definito nella configurazione del 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 al vault sui nodi, ad esempio/tde-tls. Se non viene impostato, vengono utilizzati i certificati nell'archivio di attendibilità predefinito.
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.
Crea la directory, genera la chiave e imposta le autorizzazioni appropriate.
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
Inizializza il database trasmettendo l'URI del file locale come URL della KEK.
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ POSTGRES_INITDB_ARGS="--tde-kek-url=file:///$KEK_DIR/key" \ /usr/lib/postgresql/18/bin/alloydbomniproduct_major_version_numeric-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.
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.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 query seguente:
ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';Riavvia il server di database affinché le modifiche abbiano effetto.
Riferimenti 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. |
|
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 che sono stati criptati. | Non applicabile | contatore | |
tde_ce_cache_ssd_blocks_decrypted |
Numero di blocchi della cache colonnare trasferiti allo spazio di archiviazione SSD che sono stati 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 |