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
- 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 del token JWT (JSON Web Token), che è il token di autenticazione.
KMS di Thales CipherTrust
- 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 CipherTrust Manager (
usernameepassword) con l'autorizzazione per autenticare ed esportare il secret KEK.
Crea il cluster
Per creare un cluster abilitato per TDE, devi trasmettere la configurazione necessaria del servizio di gestione delle chiavi (KMS) e le credenziali di autenticazione durante l'inizializzazione del database. Segui le istruzioni nella sezione
KMS di HashiCorp Vault (utilizzando l'jwt
autenticazione) o nella sezione KMS di Thales CipherTrust (utilizzando l'autenticazione con nome utente e password).
KMS di HashiCorp Vault
Seleziona la scheda per il runtime del container per inizializzare AlloyDB Omni con HashiCorp Vault.
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
Sostituisci quanto segue:
CONTAINER_NAME: il nome del container da creare. Ad esempio,alloydb-tde.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 token 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_ON_DISK: il percorso dei certificati di Vault sulla macchina host. Ad esempio,/local/vault/config.VAULT_CERT_PATH: il percorso in cui si trovano i certificati per la connessione a Vault nel container. 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. Utilizzavaultcome protocollo per specificare HashiCorp Vault come provider KMS, ad esempiovault://127.0.0.1:8200/v1/secret/data/alloydb_kek.IMAGE_TAG: utilizza18.4.0per l'ultima immagine Debian o18.4.0-ubiper l'ultima immagine UBI.
KMS di Thales CipherTrust
Seleziona la scheda per il runtime del container per inizializzare AlloyDB Omni con Thales CipherTrust Manager.
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \ -e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ -e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ -e CIPHERTRUST_CERT_PATH=CIPHERTRUST_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 CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \ -e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ -e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ -e CIPHERTRUST_CERT_PATH=CIPHERTRUST_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 CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \ -e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ -e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ -e CIPHERTRUST_CERT_PATH=CIPHERTRUST_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 CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \ -e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ -e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ -e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Sostituisci quanto segue:
CONTAINER_NAME: il nome del container da creare. Ad esempio,alloydb-tde.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_ON_DISK: il percorso dei certificati TLS di CipherTrust Manager sulla macchina host. Ad esempio,/local/ciphertrust/certs.CIPHERTRUST_CERT_PATH: il percorso in cui si trovano i certificati per la connessione a CipherTrust Manager (ca.crt,tls.crtetls.key) nel container. 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. Utilizzaciphertrustcome protocollo per specificare Thales CipherTrust Manager come provider KMS, ad esempio,ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek.IMAGE_TAG: utilizza18.4.0per l'ultima immagine Debian o18.4.0-ubiper l'ultima immagine UBI.
Per abilitare TDE per i dati della cache del motore colonnare riversati nello 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';
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. |
|
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 riversati nello spazio di archiviazione SSD che sono stati criptati. | Non applicabile | contatore | |
tde_ce_cache_ssd_blocks_decrypted |
Numero di blocchi della cache colonnare riversati nello 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 riversati nello 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 riversati nello spazio di archiviazione SSD. | Non applicabile | microsecondi | contatore |