Crea un clúster habilitado para TDE

Selecciona una versión de la documentación:

Antes de comenzar

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.

  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.

    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: Es la contraseña del usuario de la base de datos.
      • DATA_DIR: Es el directorio local que se activará como el 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 Vault. Solo se admite jwt.
      • 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 Vault 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 Vault en tu contenedor, por ejemplo, /tde-tls. Si no se configura, se usan los certificados en el almacén de confianza predeterminado.
      • KEK_URL: Es la URL completamente calificada de 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/secrets/data/alloydb_kek.
    2. Para crear un archivo de anulación para alloydbomni.service in /etc/systemd/system/alloydbomni18.service.d/override.conf, agrega lo siguiente al archivo override.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"
    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 correspondientes.

      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
    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: Es la contraseña del usuario de la base de datos.
      • DATA_DIR: Es el directorio local que se activará como el 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.
  3. 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 iniciar el servicio systemd.

Visualiza las métricas de TDE

Una vez que se inicializa el clúster, completa los siguientes pasos para verificar que TDE esté habilitado y ver las métricas de TDE relacionadas.

  1. Conéctate a tu base de datos con psql o tu cliente preferido. Para obtener instrucciones detalladas sobre cómo conectarte a tus instancias, consulta Ejecuta AlloyDB Omni y conéctate a él.
  2. Ejecuta el siguiente comando:

    select * FROM pgsnap.g$tde_stats;
    

    Si TDE se habilita correctamente, el resultado muestra métricas de TDE, como si TDE está habilitado, la URL de KEK, la versión de KEK y la marca de tiempo de creación de KEK.

    En la siguiente tabla, se explica qué significa 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 habilitado de TDE. No aplicable indicador
    alloydb_omni_database_tde_kek_info Información de KEK de TDE.
    • kek_version: Versión de la KEK
      que se usa 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 de WAL desencriptados. No aplicable contador
    alloydb_omni_database_tde_wal_blocks_encrypted_count_total Cantidad de bloques de WAL encriptados. No aplicable contador
    alloydb_omni_database_tde_wal_decryption_time_us_total Tiempo total dedicado a la desencriptación de bloques de WAL. No aplicable microsegundos contador
    alloydb_omni_database_tde_wal_encryption_time_us_total Tiempo total dedicado a la encriptación de bloques de WAL. No aplicable microsegundos contador