Antes de comenzar
Configura el motor de secretos KV-V2 de HashiCorp Vault para asegurarte de que la ruta de acceso a la clave de encriptación de claves (KEK) y el token web JSON (JWT) estén disponibles.
Verifica que AlloyDB Omni tenga permiso para leer el archivo de token JWT.
Crea el clúster
Para crear un clúster habilitado para TDE, debes pasar la configuración necesaria de Key Management Service (KMS) y las credenciales de autenticación durante la inicialización de la base de datos. El único tipo de autenticación admitido es jwt.
Instala AlloyDB Omni con RPM para preparar tu entorno y, luego, instala el paquete RPM de AlloyDB Omni.
Inicializa la base de datos.
KMS de HashiCorp Vault
Usa este enfoque para las cargas de trabajo de producción.
Ejecuta el siguiente comando para inicializar la base de datos con TDE habilitado:
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
Reemplaza lo siguiente:
POSTGRES_PASSWORD: La contraseña del usuario de la base de datos.DATA_DIR: Es el directorio local que se debe activar como volumen de datos para AlloyDB Omni, por ejemplo,/local/data.VAULT_AUTH_TYPE: Es el tipo de autenticación que se usará para la conexión de la bóveda. Solo se admitejwt.JWT_AUTH_ENGINE_MOUNT: Es la ruta de acceso en la que se activa el motor de autenticación de HashiCorp Vault, por ejemplo,/auth/jwt.JWT_FILE_PATH: Es la ruta de acceso en la que se almacena el JWT de Vault en tus nodos, por ejemplo,tde-tls/jwt-token.- (Opcional)
VAULT_ROLE: Es el rol de cliente definido en la configuración de tu bóveda que permite que HashiCorp Vault verifique la autenticidad del token JWT. VAULT_CERT_PATH: Es la ruta de acceso en la que se encuentran los certificados para la conexión de la bóveda en tu contenedor, por ejemplo,/tde-tls. Si no se configura, se usan los certificados del almacén de confianza predeterminado.KEK_URL: Es la URL completamente calificada de la KEK en HashiCorp Vault. Usavaultcomo el protocolo para especificar HashiCorp Vault como el proveedor de KMS (por ejemplo,vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek).
Para crear un archivo de anulación para
alloydbomni.service in /etc/systemd/system/alloydbomni18.service.d/override.conf, agrega lo siguiente al archivooverride.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"
Para aplicar los cambios, vuelve a cargar el daemon de systemd.
sudo systemctl daemon-reload
KMS basado en archivos
Usa este enfoque solo con fines de prueba.
Para probar la TDE de forma local con una clave basada en archivos, primero debes generar una KEK de 32 bytes en tu máquina.
Crea el directorio, genera la clave y establece los permisos adecuados.
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
Inicializa la base de datos pasando el URI del archivo local como la URL de tu 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
Reemplaza lo siguiente:
POSTGRES_PASSWORD: La contraseña del usuario de la base de datos.DATA_DIR: Es el directorio local que se debe activar como volumen de datos para AlloyDB Omni, por ejemplo,/local/data.KEK_DIR: Es el directorio en el que se almacena la KEK local basada en archivos, por ejemplo,/tmp/alloydb/kms.
Después de inicializar la base de datos, sigue las instrucciones que se indican en Instala AlloyDB Omni con RPM para preparar la base de datos, configurar el host y, luego, iniciar el servicio
systemd.
Consulta las métricas del TDE
Después de inicializar el clúster, completa los siguientes pasos para verificar que TDE esté habilitado y ver las métricas relacionadas con TDE.
- Conéctate a tu base de datos con
psqlo tu cliente preferido. Para obtener instrucciones detalladas sobre cómo conectarte a tus instancias, consulta Ejecuta AlloyDB Omni y conéctate a él. Ejecuta el comando siguiente:
select * FROM pgsnap.g$tde_stats;El resultado muestra métricas de TDE, como si está habilitada, la URL de la KEK, la versión de la KEK y la marca de tiempo de creación de la KEK.
En la siguiente tabla, se explica el significado de cada métrica.
Nombre Descripción Etiqueta Unidad Tipo alloydb_omni_database_tde_data_blocks_decrypted_count_totalCantidad de bloques de datos que se desencriptaron. No aplicable contador alloydb_omni_database_tde_data_blocks_encrypted_count_totalCantidad de bloques de datos encriptados. No aplicable contador alloydb_omni_database_tde_data_decryption_time_us_totalTiempo total dedicado a la desencriptación de bloques de datos. No aplicable microsegundos contador alloydb_omni_database_tde_data_encryption_time_us_totalTiempo total dedicado a la encriptación de bloques de datos. No aplicable microsegundos contador alloydb_omni_database_tde_enabledEs el estado de habilitación de la TDE. No aplicable indicador alloydb_omni_database_tde_kek_infoEs la información de la KEK de TDE. kek_version: Es la versión de la KEK
que se usa para la unión de claves.kek_url: Ruta de acceso completamente calificada
a la KEK en KMSkek_creation_timestamp:
Es la fecha y hora de creación de la versión de la KEK en uso.
indicador alloydb_omni_database_tde_temp_blocks_decrypted_count_totalCantidad de bloques temporales que se desencriptaron. No aplicable contador alloydb_omni_database_tde_temp_blocks_encrypted_count_totalCantidad de bloques temporales encriptados. No aplicable contador alloydb_omni_database_tde_temp_decryption_time_us_totalTiempo total dedicado al descifrado de bloques temporales. No aplicable microsegundos contador alloydb_omni_database_tde_temp_encryption_time_us_totalEs el tiempo total dedicado a la encriptación de bloques temporales. No aplicable microsegundos contador alloydb_omni_database_tde_wal_blocks_decrypted_count_totalCantidad de bloques de WAL que se desencriptaron. No aplicable contador alloydb_omni_database_tde_wal_blocks_encrypted_count_totalCantidad de bloques de WAL encriptados. No aplicable contador alloydb_omni_database_tde_wal_decryption_time_us_totalTiempo total dedicado a la desencriptación de bloques de WAL. No aplicable microsegundos contador alloydb_omni_database_tde_wal_encryption_time_us_totalEs el tiempo total dedicado a la encriptación de bloques de WAL. No aplicable microsegundos contador