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 de la bóveda requeridas 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
- 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 del token web JSON (JWT), que es el token de autenticación.
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.
Selecciona la pestaña de tu entorno de ejecución de contenedor.
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
Reemplaza lo siguiente:
CONTAINER_NAME: Es el nombre del contenedor que se creará. Por ejemplo,alloydb-tdeDATA_DIR: Es el directorio local que se debe activar como volumen de datos para AlloyDB Omni. Por ejemplo,/local/dataVAULT_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/jwtJWT_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 de JWT. VAULT_CERT_PATH_ON_DISK: Es la ruta de acceso a los certificados de la bóveda en la máquina host. Por ejemplo,/local/vault/configVAULT_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 establece, 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).IMAGE_TAG: Usa18.3.0para la imagen de Debian más reciente o18.3.0-ubipara la imagen de UBI más reciente.
Para habilitar la TDE en los datos de la caché del motor de columnas que se transfieren al 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';
Reinicia el servidor de la base de datos para que se apliquen los cambios.
Referencias de métricas del TDE
Puedes ver todas las métricas del 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 que se desencriptaron. | 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 |
Es el 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 |
Es el estado de habilitación de la TDE. | No aplicable | indicador | |
alloydb_omni_database_tde_kek_info |
Es la información de la KEK de la TDE. |
|
indicador | |
alloydb_omni_database_tde_temp_blocks_decrypted_count_total |
Cantidad de bloques temporales que se desencriptaron. | 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 |
Es el tiempo total dedicado a la desencriptación de bloques temporales. | No aplicable | microsegundos | contador |
alloydb_omni_database_tde_temp_encryption_time_us_total |
Es el 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 que se desencriptaron. | 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 |
Es el tiempo total dedicado a la desencriptación de bloques de WAL. | No aplicable | microsegundos | contador |
alloydb_omni_database_tde_wal_encryption_time_us_total |
Es el tiempo total dedicado a la encriptación de bloques de WAL. | No aplicable | microsegundos | contador |
tde_chill_cache_blocks_encrypted |
Cantidad de bloques de caché de Chill encriptados. | No aplicable | contador | |
tde_chill_cache_blocks_decrypted |
Cantidad de bloques de caché de Chill que se desencriptaron. | 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 del bloque de caché de Chill. | No aplicable | microsegundos | contador |
tde_ce_cache_ssd_blocks_encrypted |
Es la cantidad de bloques de caché de columnas que se volcaron en el almacenamiento SSD y que estaban encriptados. | No aplicable | contador | |
tde_ce_cache_ssd_blocks_decrypted |
Cantidad de bloques de caché de columnas volcados en el almacenamiento SSD que se desencriptaron. | No aplicable | contador | |
tde_ce_cache_ssd_blocks_total_encryption_time_us |
Tiempo total dedicado a encriptar los bloques de caché de columnas volcados al almacenamiento SSD. | No aplicable | microsegundos | contador |
tde_ce_cache_ssd_blocks_total_decryption_time_us |
Tiempo total dedicado a descifrar los bloques de caché de columnas que se volcaron al almacenamiento SSD. | No aplicable | microsegundos | contador |