1. Introducción
En este codelab, se muestra cómo configurar y habilitar la Encriptación de datos transparente (TDE) en AlloyDB Omni con paquetes RPM. La TDE encripta los archivos de datos, los registros de escritura anticipada (WAL) y los archivos de datos temporales en reposo, lo que proporciona protección de datos contra el acceso no autorizado a los medios de almacenamiento físico subyacentes.
En este codelab, aprenderás a aprovisionar volúmenes de almacenamiento, inicializar y ejecutar un clúster de AlloyDB Omni habilitado para TDE con File KMS y verificar la encriptación de datos en reposo en archivos de disco.
Requisitos previos
- Acceso a un proyecto de Google Cloud y a Cloud Shell desde la consola de Google Cloud
- El SDK de Google Cloud (
gcloud) instalado y configurado Para obtener detalles sobre la instalación de gcloud, consulta gcloud-install
Qué aprenderás
- Cómo crear una VM de Compute Engine con una base de datos, una copia de seguridad y discos de intercambio dedicados
- Cómo formatear volúmenes de almacenamiento (XFS), configurar
/etc/fstaby preparar rutas de acceso de datos - Cómo generar y administrar claves de encriptación de claves (KEK) con File KMS
- Cómo instalar paquetes RPM de AlloyDB Omni y utilidades de cliente de PostgreSQL
- Cómo iniciar un clúster de AlloyDB Omni habilitado para TDE con herramientas de configuración de RPM (
alloydbomni18-setup) y--tde-kek-url - Cómo verificar la encriptación en el disco con la inspección de archivos sin procesar (
grep)
Requisitos
- Para obtener un vínculo de URL a los RPM de AlloyDB Omni, completa el formulario de registro de RPM de AlloyDB Omni o consulta la Descripción general de AlloyDB Omni en Linux. La URL del repositorio se enviará a tu dirección de correo electrónico registrada.
- Una terminal en funcionamiento con acceso a Google Cloud (se recomienda Cloud Shell)
2. Configuración y requisitos
Configuración del proyecto
Cómo crear un proyecto de Google Cloud
- En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
- Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
Iniciar Cloud Shell
Si bien puedes operar Google Cloud de forma remota desde tu laptop, en este codelab usarás el Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.

- Abre la consola de Google Cloud y haz clic en el ícono de Cloud Shell en la barra de herramientas en la parte superior derecha. También puedes abrir Cloud Shell presionando
Gy, luego,Sen la consola o visitando shell.cloud.google.com. - El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando se complete, verás un mensaje de terminal listo para la entrada.

3. Crea la VM de Compute Engine
En esta sección, crearás una máquina virtual (VM) de Compute Engine (GCE) que ejecuta Rocky Linux 9 con discos persistentes dedicados para datos de la base de datos (/data1), copias de seguridad/observabilidad (/obs) y espacio de intercambio.
- Define las variables de entorno para el ID del proyecto, el nombre de la VM, la zona y la región.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Configura tu proyecto predeterminado.
gcloud config set project $PROJECT - Crea reglas de firewall de red para el tráfico SSH.
gcloud compute firewall-rules create allow-ssh-alloydb-omni-tde \ --project=$PROJECT \ --direction=INGRESS \ --action=allow \ --rules=tcp:22 \ --source-ranges="0.0.0.0/0" - Como la VM se crea sin una dirección IP pública, configura un Cloud Router y una puerta de enlace de Cloud NAT para proporcionar acceso a Internet saliente para descargar paquetes RPM. Si ya existe un Cloud NAT en la región de tu proyecto, puedes continuar.
Nota: Si ya existe una puerta de enlace de Cloud NAT en tu región, GCP mostrará un mensaje que indica que NAT ya está configurado para todas las subredes. Puedes ignorar este error de forma segura y continuar.gcloud compute routers create alloydb-omni-tde-router \ --project=$PROJECT \ --network=default \ --region=$REGION 2>/dev/null || true gcloud compute routers nats create alloydb-omni-tde-nat \ --project=$PROJECT \ --router=alloydb-omni-tde-router \ --region=$REGION \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips 2>/dev/null || true - Crea discos persistentes adicionales para los datos de la base de datos, las copias de seguridad y el espacio de intercambio.
gcloud compute disks create $INSTANCE_NAME-data \ --project=$PROJECT --zone=$ZONE --size=50GB --type=pd-balanced gcloud compute disks create $INSTANCE_NAME-obs \ --project=$PROJECT --zone=$ZONE --size=50GB --type=pd-balanced gcloud compute disks create $INSTANCE_NAME-swap \ --project=$PROJECT --zone=$ZONE --size=10GB --type=pd-balanced - Aprovisiona la instancia de VM de Rocky Linux 9 con los volúmenes de almacenamiento adjuntos.
gcloud compute instances create $INSTANCE_NAME \ --project=$PROJECT \ --zone=$ZONE \ --machine-type=n2-highmem-16 \ --image-family=rocky-linux-9 \ --image-project=rocky-linux-cloud \ --boot-disk-size=30GB \ --boot-disk-type=pd-balanced \ --disk=name=$INSTANCE_NAME-data,device-name=db-data,mode=rw \ --disk=name=$INSTANCE_NAME-obs,device-name=obs,mode=rw \ --disk=name=$INSTANCE_NAME-swap,device-name=swap,mode=rw \ --no-address
4. Prepara discos, ajuste del sistema y clave de File KMS
En esta sección, te conectarás a la VM, formatearás y activarás los volúmenes de almacenamiento persistente, configurarás el intercambio, ajustarás SELinux y generarás la clave de encriptación de claves (KEK) de TDE con File KMS.
- Establece una conexión SSH a la VM a través de Identity-Aware Proxy (IAP).
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Formatea y activa el volumen de datos (
/data1) y el volumen de observabilidad/copia de seguridad (/obs).sudo mkdir -p /data1 /obs sudo parted /dev/disk/by-id/google-db-data mklabel gpt sudo parted /dev/disk/by-id/google-db-data mkpart primary 0% 100% sudo parted /dev/disk/by-id/google-obs mklabel gpt sudo parted /dev/disk/by-id/google-obs mkpart primary 0% 100% sleep 3 sudo mkfs.xfs -L data /dev/disk/by-id/google-db-data-part1 sudo mkfs.xfs -L obs /dev/disk/by-id/google-obs-part1 echo -e "LABEL=data\t/data1\txfs\tdefaults\t0 0" | sudo tee -a /etc/fstab echo -e "LABEL=obs\t/obs\txfs\tdefaults\t0 0" | sudo tee -a /etc/fstab sudo systemctl daemon-reload sudo mount /data1 sudo mount /obs - Crea y habilita el espacio de intercambio en el disco de intercambio dedicado.
SWAP_UUID=$(sudo mkswap /dev/disk/by-id/google-swap 2>/dev/null | awk '$0 ~ "UUID" {print $NF}') echo -e "${SWAP_UUID}\tswap\tswap\tdefaults\t0 0" | sudo tee -a /etc/fstab sudo swapon -a - Define variables de entorno para el directorio de la base de datos y el archivo de claves de File KMS.
export PGDATA="/data1/18" export KMS_DIR="/data1/kms" export KEK_FILE="$KMS_DIR/tde_key" export ALLOYDB_OMNI_REPOSITORY_URL="<your-repository-url>" - Crea directorios de almacenamiento para la base de datos y el almacenamiento de claves de File KMS.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Genera una clave de encriptación de claves (KEK) de 32 bytes criptográficamente segura con OpenSSL para File KMS.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Instala las utilidades de administración de SELinux necesarias.
sudo dnf install -y policycoreutils-python-utils
5. Instala paquetes RPM de AlloyDB Omni
Configura repositorios de paquetes y, luego, instala el servidor de base de datos de AlloyDB Omni junto con las herramientas estándar de PostgreSQL 18.
Nota: Reemplaza $ALLOYDB_OMNI_REPOSITORY_URL por la URL del repositorio que recibiste por correo electrónico después de completar el formulario de registro de RPM de AlloyDB Omni. Para obtener más información, consulta la Descripción general de AlloyDB Omni en Linux.
- Crea el archivo de configuración del repositorio de YUM para AlloyDB Omni.
sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF [alloydbomni] name=alloydbomni baseurl=$ALLOYDB_OMNI_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=1 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF - Actualiza la caché del repositorio de YUM y, luego, instala los paquetes RPM del servidor de AlloyDB Omni 18.
sudo yum makecache sudo dnf install -y alloydbomni18 - Instala el repositorio oficial de RPM de PGDG de PostgreSQL y el paquete de cliente estándar de PostgreSQL 18 (
psql).sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf install -y postgresql18 - Asigna la propiedad de
/data1y el directorio de claves de KMS al usuariopostgres.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. Inicia un clúster habilitado para TDE
Configura las cuotas de recursos, abre los puertos de firewall del host y, luego, inicializa el clúster de AlloyDB Omni con la Encriptación de datos transparente habilitada a través de la clave de File KMS (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE").
- Configura SELinux en modo permisivo y configura las reglas de firewall del host para PostgreSQL.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Configura los parámetros de anulación del servicio systemd para asignar límites de recursos de memoria y CPU.
sudo mkdir -p /etc/systemd/system/alloydbomni18.service.d sudo tee /etc/systemd/system/alloydbomni18.service.d/override.conf << EOF [Service] CPUQuota=90% MemoryMax=80% EOF sudo chown root:root /etc/systemd/system/alloydbomni18.service.d/override.conf sudo chmod 644 /etc/systemd/system/alloydbomni18.service.d/override.conf sudo systemctl daemon-reload - Configura las variables de entorno del administrador y, luego, inicializa el clúster de base de datos de TDE con
alloydbomni18-setup initdb.export PGPASSWORD="YourStrongPassword123!" export POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE" sudo POSTGRES_INITDB_ARGS="$POSTGRES_INITDB_ARGS" PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - Configura el puerto del servidor 5432 en
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - Prepara los catálogos y las extensiones del sistema con
alloydbomni18-setup preparedb.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Habilita y ejecuta el servicio systemd
alloydbomni18. Verifica que el resultado muestresudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
7. Operaciones de la base de datos y verificación de la encriptación de disco de TDE
Conéctate a la base de datos de TDE, inserta registros de muestra, ejecuta un CHECKPOINT para forzar la escritura de datos en el disco y ejecuta análisis directos del disco (grep) para demostrar la encriptación de datos en reposo.
- Conéctate a la base de datos
alloydbadminconpsql.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - Crea una tabla de prueba, inserta una cadena confidencial y activa un punto de control para escribir búferes no sincronizados en el almacenamiento.
CREATE TABLE customer_credentials ( id SERIAL PRIMARY KEY, username TEXT, secret_passcode TEXT ); INSERT INTO customer_credentials (username, secret_passcode) VALUES ('alice_user', 'UNENCRYPTED_DEMO_SECRET_98765'); CHECKPOINT; - Consulta la vista interna de estadísticas de TDE de AlloyDB
pgsnap.g$tde_statspara verificar el estado de encriptación activo, la ubicación de KEK y las métricas de bloque. Ejemplo de resultado que confirma la TDE activa (SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted FROM pgsnap.g$tde_stats;is_tde_enabled = t), la ruta de acceso del archivo KEK y los contadores de bloques encriptados:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) - Sal de
psql.\q - Busca archivos de almacenamiento de base de datos sin procesar en
/data1/18/base/para la cadena de contraseña y verificar la protección en el disco de TDE.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Conclusión clave de la verificación:
- En una instancia de base de datos no TDE, ejecutar
grepen archivos de relación de tablas muestra la cadena de texto sin formato en el disco. - En una instancia de base de datos habilitada para TDE ,
grepmuestra cero coincidencias porque todos los archivos de datos, los índices, los registros de escritura anticipada (WAL) y los datos temporales están completamente encriptados con cifrados de bloque AES en reposo.
8. Limpieza
Después de completar los ejercicios, limpia los recursos para evitar cargos de procesamiento no deseados.
- Desconéctate de tu sesión SSH de la VM.
exit - Quita la máquina virtual de GCE y los discos persistentes adjuntos.
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet gcloud compute disks delete $INSTANCE_NAME-data $INSTANCE_NAME-obs $INSTANCE_NAME-swap --zone=$ZONE --project=$PROJECT --quiet - Borra las reglas de firewall y los recursos de la puerta de enlace de Cloud NAT.
gcloud compute firewall-rules delete allow-ssh-alloydb-omni-tde --project=$PROJECT --quiet gcloud compute routers nats delete alloydb-omni-tde-nat --router=alloydb-omni-tde-router --region=$REGION --project=$PROJECT --quiet gcloud compute routers delete alloydb-omni-tde-router --region=$REGION --project=$PROJECT --quiet
9. Felicitaciones
¡Felicitaciones! Completaste correctamente el codelab de TDE en AlloyDB Omni RPM.
Temas abordados
- Cómo aprovisionar discos de almacenamiento (
/data1,/obs), configurar el intercambio y formatear sistemas de archivos XFS - Cómo generar y administrar claves de encriptación de claves con File KMS
- Cómo inicializar e iniciar un clúster de AlloyDB Omni habilitado para TDE con herramientas de RPM
- Cómo verificar la encriptación de datos en reposo con la inspección directa de discos sin procesar (
grep)
Para obtener más información, consulta la documentación de AlloyDB Omni.