Crea un clúster habilitado para TDE

Selecciona una versión de la documentación:

Puedes proteger tus datos en reposo y la información sensible habilitando la encriptación de datos transparente (TDE) en AlloyDB Omni. En este documento, se describe cómo crear un clúster habilitado para TDE proporcionando las variables de entorno necesarias de Key Management Service (KMS) (para HashiCorp Vault o Thales CipherTrust Manager) y la marca --tde-kek-url en la variable de entorno POSTGRES_INITDB_ARGS durante la inicialización de la base de datos.

Antes de comenzar

KMS de HashiCorp Vault

  • Lee Planifica tu instalación de AlloyDB Omni.
  • Cuando planifiques tu implementación de AlloyDB Omni con TDE habilitado, ten en cuenta el uso adicional de CPU en función de tu carga de trabajo y volumen de datos previstos. La encriptación y la desencriptación son operaciones que requieren mucha capacidad de procesamiento.
  • Configura el motor de secretos KV-V2 de HashiCorp Vault para asegurarte de que la ruta de acceso de 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 web JSON (JWT), que es el token de autenticación.

KMS de Thales CipherTrust

  • Lee Planifica tu instalación de AlloyDB Omni.
  • Cuando planifiques tu implementación de AlloyDB Omni con TDE habilitado, ten en cuenta el uso adicional de CPU en función de tu carga de trabajo y volumen de datos previstos. La encriptación y la desencriptación son operaciones que requieren mucha capacidad de procesamiento.
  • Configura Thales CipherTrust Manager para asegurarte de que se cree y se pueda exportar tu clave de encriptación de claves (KEK) secreta.
  • Verifica que tengas una cuenta de usuario de CipherTrust Manager (username y password) con permiso para autenticar y exportar el secreto de KEK.

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. Puedes configurar HashiCorp Vault (con autenticación jwt) o Thales CipherTrust Manager (con autenticación de nombre de usuario y contraseña).

  1. Instala AlloyDB Omni con RPM para preparar tu entorno y el paquete RPM de AlloyDB Omni.

  2. Inicializa la base de datos.

    KMS de HashiCorp Vault

    Usa este enfoque para cargas de trabajo de producción con HashiCorp Vault.

    1. 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: el directorio local que se activará como el volumen de datos para AlloyDB Omni, por ejemplo, /local/data.
      • JWT_AUTH_ENGINE_MOUNT: la ruta de acceso en la que se activa el motor de autenticación de HashiCorp Vault, por ejemplo, /auth/jwt.
      • JWT_FILE_PATH: 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: el rol de cliente definido en la configuración de Vault que permite que HashiCorp Vault verifique la autenticidad del token JWT.
      • VAULT_CERT_PATH: la ruta de acceso en la que se encuentran los certificados para la conexión de Vault en tus nodos, por ejemplo, /tde-tls. Si no se configura, se usan los certificados en el almacén de confianza predeterminado.
      • KEK_URL: la URL completamente calificada a la KEK en HashiCorp Vault. Usa vault como protocolo para especificar HashiCorp Vault como proveedor de KMS, por ejemplo, vault://127.0.0.1:8200/v1/secret/data/alloydb_kek.
    2. Para crear un archivo de anulación para alloydbomni18.service en /etc/systemd/system/alloydbomni18.service.d/override.conf, agrega lo siguiente al archivo 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"

      Reemplaza lo siguiente:

      • JWT_AUTH_ENGINE_MOUNT: la ruta de acceso en la que se activa el motor de autenticación de HashiCorp Vault, por ejemplo, /auth/jwt.
      • JWT_FILE_PATH: 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: el rol de cliente definido en la configuración de Vault que permite que HashiCorp Vault verifique la autenticidad del token JWT.
      • VAULT_CERT_PATH: la ruta de acceso en la que se encuentran los certificados para la conexión de Vault en tus nodos, por ejemplo, /tde-tls. Si no se configura, se usan los certificados en el almacén de confianza predeterminado.
    3. Para aplicar los cambios, vuelve a cargar el daemon systemd.

      sudo systemctl daemon-reload

    KMS de Thales CipherTrust

    Usa este enfoque para cargas de trabajo de producción con Thales CipherTrust Manager.

    1. Ejecuta el siguiente comando para inicializar la base de datos con TDE habilitado:

      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

      Reemplaza lo siguiente:

      • POSTGRES_PASSWORD: la contraseña del usuario de la base de datos.
      • DATA_DIR: el directorio local que se activará como el volumen de datos para AlloyDB Omni, por ejemplo, /local/data.
      • CIPHERTRUST_USERNAME: el nombre de usuario que se usa para autenticarse con Thales CipherTrust Manager.
      • CIPHERTRUST_PASSWORD: la contraseña del usuario de Thales CipherTrust Manager.
      • CIPHERTRUST_CERT_PATH: la ruta de acceso en la que se encuentran los certificados (ca.crt, tls.crt y tls.key) para la conexión de CipherTrust Manager en tus nodos, por ejemplo, /tde-tls. Si no se configura, se usan los certificados en el almacén de confianza predeterminado.
      • KEK_URL: la URL completamente calificada a la KEK en Thales CipherTrust Manager. Usa ciphertrust como protocolo para especificar Thales CipherTrust Manager como proveedor de KMS, por ejemplo, ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek.
    2. Para crear un archivo de anulación para alloydbomni18.service en /etc/systemd/system/alloydbomni18.service.d/override.conf, agrega lo siguiente al archivo override.conf:

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

      Reemplaza lo siguiente:

      • CIPHERTRUST_USERNAME: el nombre de usuario que se usa para autenticarse con Thales CipherTrust Manager.
      • CIPHERTRUST_PASSWORD: la contraseña del usuario de Thales CipherTrust Manager.
      • CIPHERTRUST_CERT_PATH: la ruta de acceso en la que se encuentran los certificados (ca.crt, tls.crt y tls.key) para la conexión de CipherTrust Manager en tus nodos, por ejemplo, /tde-tls. Si no se configura, se usan los certificados en el almacén de confianza predeterminado.
    3. Para aplicar los cambios, vuelve a cargar el daemon systemd.

      sudo systemctl daemon-reload

    KMS basado en archivos

    Usa este enfoque solo para realizar pruebas.

    Para probar TDE de forma local con una clave basada en archivos, primero debes generar una KEK de 32 bytes en tu máquina.

    1. Crea el directorio, genera la clave y establece los permisos adecuados.

      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. Inicializa la base de datos pasando el URI del archivo local como tu URL de 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: el directorio local que se activará como el volumen de datos para AlloyDB Omni, por ejemplo, /local/data.
      • KEK_DIR: el directorio en el que se almacena la KEK local basada en archivos, por ejemplo, /tmp/alloydb/kms.
  3. Después de inicializar la base de datos, sigue las instrucciones para instalar AlloyDB Omni con RPM para preparar la base de datos, configurar el host y iniciar el servicio systemd.

  4. Para habilitar TDE para los datos de caché del motor de columnas que se derraman en el almacenamiento SSD, conéctate a tu instancia de base de datos y ejecuta la siguiente consulta:

    ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';
    
  5. Reinicia el servidor de la base de datos para que se apliquen los cambios.

Referencia de métricas de TDE

Puedes ver todas las métricas de TDE en el agente de supervisión de AlloyDB Omni. En la siguiente tabla, se describe cada métrica.

Nombre Descripción Etiqueta Unidad Tipo
alloydb_omni_database_tde_data_blocks_decrypted_count_total Cantidad de bloques de datos desencriptados. No aplicable contador
alloydb_omni_database_tde_data_blocks_encrypted_count_total Cantidad de bloques de datos encriptados. No aplicable contador
alloydb_omni_database_tde_data_decryption_time_us_total Tiempo total dedicado a la desencriptación de bloques de datos. No aplicable microsegundos contador
alloydb_omni_database_tde_data_encryption_time_us_total Tiempo total dedicado a la encriptación de bloques de datos. No aplicable microsegundos contador
alloydb_omni_database_tde_enabled Estado de TDE habilitado. No aplicable indicador
alloydb_omni_database_tde_kek_info Información de KEK de TDE.
  • kek_version: Versión de la KEK en uso para el ajuste de claves.
  • kek_url: Ruta de acceso completamente calificada a la KEK en KMS.
  • kek_creation_timestamp: Hora de creación de la versión de KEK en uso.
indicador
alloydb_omni_database_tde_temp_blocks_decrypted_count_total Cantidad de bloques temporales desencriptados. No aplicable contador
alloydb_omni_database_tde_temp_blocks_encrypted_count_total Cantidad de bloques temporales encriptados. No aplicable contador
alloydb_omni_database_tde_temp_decryption_time_us_total Tiempo total dedicado a la desencriptación de bloques temporales. No aplicable microsegundos contador
alloydb_omni_database_tde_temp_encryption_time_us_total Tiempo total dedicado a la encriptación de bloques temporales. No aplicable microsegundos contador
alloydb_omni_database_tde_wal_blocks_decrypted_count_total Cantidad de bloques WAL desencriptados. No aplicable contador
alloydb_omni_database_tde_wal_blocks_encrypted_count_total Cantidad de bloques WAL encriptados. No aplicable contador
alloydb_omni_database_tde_wal_decryption_time_us_total Tiempo total dedicado a la desencriptación de bloques WAL. No aplicable microsegundos contador
alloydb_omni_database_tde_wal_encryption_time_us_total Tiempo total dedicado a la encriptación de bloques WAL. No aplicable microsegundos contador
tde_chill_cache_blocks_encrypted Cantidad de bloques de caché inactiva encriptados. No aplicable contador
tde_chill_cache_blocks_decrypted Cantidad de bloques de caché inactiva desencriptados. No aplicable contador
tde_chill_cache_blocks_total_encryption_time_us Tiempo total dedicado a la encriptación de bloques de caché inactiva. No aplicable microsegundos contador
tde_chill_cache_blocks_total_decryption_time_us Tiempo total dedicado a la desencriptación de bloques de caché inactiva. No aplicable microsegundos contador
tde_ce_cache_ssd_blocks_encrypted Cantidad de bloques de caché de columnas derramados en el almacenamiento SSD que se encriptaron. No aplicable contador
tde_ce_cache_ssd_blocks_decrypted Cantidad de bloques de caché de columnas derramados en el almacenamiento SSD que se desencriptaron. No aplicable contador
tde_ce_cache_ssd_blocks_total_encryption_time_us Tiempo total dedicado a la encriptación de bloques de caché de columnas derramados en el almacenamiento SSD. No aplicable microsegundos contador
tde_ce_cache_ssd_blocks_total_decryption_time_us Tiempo total dedicado a la desencriptación de bloques de caché de columnas derramados en el almacenamiento SSD. No aplicable microsegundos contador