1. Introduction
Cet atelier de programmation explique comment configurer et activer le chiffrement transparent des données (TDE) sur AlloyDB Omni à l'aide de packages RPM. TDE chiffre les fichiers de données, les journaux WAL (Write-Ahead Log) et les fichiers de données temporaires au repos. Il assure ainsi la protection des données contre les accès non autorisés aux supports de stockage physiques sous-jacents.
Dans cet atelier de programmation, vous allez apprendre à provisionner des volumes de stockage, à initialiser et à exécuter un cluster AlloyDB Omni compatible avec le chiffrement TDE à l'aide de File KMS, et à vérifier le chiffrement des données au repos dans les fichiers de disque.
Prérequis
- Accès à un projet Google Cloud et à Cloud Shell depuis la console Google Cloud.
- Le SDK Google Cloud (
gcloud) est installé et configuré. Pour en savoir plus sur l'installation de gcloud, consultez gcloud-install.
Points abordés
- Découvrez comment créer une VM Compute Engine avec des disques de base de données, de sauvegarde et d'échange dédiés.
- Découvrez comment formater des volumes de stockage (XFS), configurer
/etc/fstabet préparer des chemins d'accès aux données. - Apprendre à générer et à gérer des clés de chiffrement de clés (KEK) à l'aide de File KMS
- Découvrez comment installer les packages RPM AlloyDB Omni et les utilitaires client PostgreSQL.
- Découvrez comment amorcer un cluster AlloyDB Omni compatible avec TDE à l'aide des outils de configuration RPM (
alloydbomni18-setup) et--tde-kek-url. - Comment vérifier le chiffrement sur le disque à l'aide de l'inspection des fichiers bruts (
grep)
Prérequis
- Obtenez un lien URL vers les RPM AlloyDB Omni en remplissant le formulaire d'inscription aux RPM AlloyDB Omni ou en consultant la présentation d'AlloyDB Omni sur Linux. L'URL du dépôt sera envoyée à l'adresse e-mail que vous avez enregistrée.
- Un terminal fonctionnel avec accès à Google Cloud (Cloud Shell recommandé).
2. Préparation
Configuration du projet
Créer un projet Google Cloud
- Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
- Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
Démarrer Cloud Shell
Bien que vous puissiez utiliser Google Cloud à distance depuis votre ordinateur portable, vous allez utiliser Google Cloud Shell, un environnement de ligne de commande exécuté dans le cloud, lors de cet atelier de programmation.

- Ouvrez la console Google Cloud et cliquez sur l'icône Cloud Shell dans la barre d'outils supérieure. Vous pouvez également ouvrir Cloud Shell en appuyant sur
G, puis surSdans la console, ou en accédant à shell.cloud.google.com. - Le provisionnement et la connexion à l'environnement prennent généralement quelques instants. Une fois l'opération terminée, une invite de terminal s'affiche, prête à recevoir des saisies.

3. Créer la VM Compute Engine
Dans cette section, vous allez créer une machine virtuelle (VM) Compute Engine (GCE) exécutant Rocky Linux 9 avec des disques persistants dédiés aux données de la base de données (/data1), aux sauvegardes/à l'observabilité (/obs) et à l'espace d'échange.
- Définissez des variables d'environnement pour l'ID de votre projet, le nom de la VM, la zone et la région.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Configurez votre projet par défaut.
gcloud config set project $PROJECT - Créez des règles de pare-feu réseau pour le trafic 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" - Étant donné que la VM est créée sans adresse IP publique, configurez un routeur Cloud Router et une passerelle Cloud NAT pour fournir un accès Internet sortant permettant de télécharger les packages RPM. Si un service Cloud NAT existe déjà dans la région de votre projet, vous pouvez continuer.
Remarque : Si une passerelle Cloud NAT existe déjà dans votre région, GCP renverra un message indiquant que le NAT est déjà configuré pour tous les sous-réseaux. Vous pouvez ignorer cette erreur et continuer.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 - Créez des disques persistants supplémentaires pour les données de base de données, les sauvegardes et l'espace d'échange.
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 - Provisionnez l'instance de VM Rocky Linux 9 avec les volumes de stockage associés.
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. Préparer les disques, le réglage du système et la clé KMS du fichier
Dans cette section, vous allez vous connecter à la VM, formater et monter les volumes de stockage persistant, configurer l'espace d'échange, ajuster SELinux et générer la clé de chiffrement de clé (KEK) TDE à l'aide de File KMS.
- Connectez-vous à la VM en SSH via Identity-Aware Proxy (IAP).
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Formatez et installez le volume de données (
/data1) et le volume d'observabilité/de sauvegarde (/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 - Créez et activez l'espace d'échange sur le disque d'échange dédié.
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 - Définissez des variables d'environnement pour le répertoire de la base de données et le fichier de clé 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>" - Créez des répertoires de stockage pour la base de données et le stockage des clés KMS de fichier.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Générez une clé de chiffrement de clé (KEK) cryptographiquement sécurisée de 32 octets à l'aide d'OpenSSL pour File KMS.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Installez les utilitaires de gestion SELinux requis.
sudo dnf install -y policycoreutils-python-utils
5. Installer les packages RPM AlloyDB Omni
Configurez les dépôts de packages et installez le serveur de base de données AlloyDB Omni avec les outils PostgreSQL 18 standards.
Remarque : Remplacez $ALLOYDB_OMNI_REPOSITORY_URL par l'URL du dépôt reçue par e-mail après avoir rempli le formulaire d'inscription AlloyDB Omni RPM. Pour en savoir plus, consultez la présentation d'AlloyDB Omni sur Linux.
- Créez le fichier de configuration du dépôt YUM pour 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 - Mettez à jour le cache du dépôt YUM et installez les packages RPM du serveur AlloyDB Omni 18.
sudo yum makecache sudo dnf install -y alloydbomni18 - Installez le dépôt RPM PGDG officiel de PostgreSQL, puis le package client PostgreSQL 18 standard (
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 - Attribuez la propriété de
/data1et du répertoire de clés KMS à l'utilisateurpostgres.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. Amorcer un cluster compatible avec le chiffrement TDE
Configurez les quotas de ressources, ouvrez les ports du pare-feu de l'hôte et initialisez le cluster AlloyDB Omni avec le chiffrement transparent des données activé via la clé KMS du fichier (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE").
- Définissez SELinux sur le mode permissif et configurez les règles de pare-feu de l'hôte pour PostgreSQL.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Configurez les paramètres de remplacement du service systemd pour attribuer des limites de ressources de mémoire et de processeur.
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 - Définissez les variables d'environnement de l'administrateur et initialisez le cluster de base de données TDE à l'aide de
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 - Configurez le port 5432 du serveur dans
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - Préparez les catalogues et les extensions système à l'aide de
alloydbomni18-setup preparedb.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Activez et lancez le service systemd
alloydbomni18. Vérifiez que le résultat affichesudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
7. Opérations sur la base de données et vérification du chiffrement de disque TDE
Connectez-vous à la base de données TDE, insérez des exemples d'enregistrements, exécutez une commande CHECKPOINT pour forcer l'écriture des données sur le disque, puis exécutez des analyses directes du disque (grep) pour prouver le chiffrement des données au repos.
- Connectez-vous à la base de données
alloydbadminà l'aide depsql.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - Créez une table de test, insérez une chaîne confidentielle et déclenchez un point de contrôle pour écrire les tampons modifiés dans le stockage.
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; - Interrogez la vue interne des statistiques TDE AlloyDB
pgsnap.g$tde_statspour vérifier l'état du chiffrement actif, l'emplacement de la clé KEK et les métriques de bloc. Exemple de résultat confirmant le chiffrement TDE actif (SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted FROM pgsnap.g$tde_stats;is_tde_enabled = t), le chemin d'accès au fichier KEK et les compteurs de blocs chiffrés :is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) - Quittez
psql.\q - Recherchez la chaîne de code secret dans les fichiers de stockage de base de données bruts sous
/data1/18/base/pour vérifier la protection TDE sur le disque.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Points à retenir concernant la validation :
- Sur une instance de base de données non TDE, l'exécution de
grepsur les fichiers de relations de table affiche la chaîne en texte brut sur le disque. - Sur une instance de base de données compatible avec le chiffrement TDE,
greprenvoie zéro correspondance, car tous les fichiers de données, index, journaux WAL (Write-Ahead Log) et données temporaires sont entièrement chiffrés au repos avec des algorithmes de chiffrement par blocs AES.
8. Nettoyage
Après avoir terminé les exercices, nettoyez les ressources pour éviter que des frais de calcul inutiles ne vous soient facturés.
- Déconnectez-vous de la session SSH de votre VM.
exit - Supprimez la machine virtuelle GCE et les disques persistants associés.
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 - Supprimez les règles de pare-feu et les ressources de passerelle 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. Félicitations
Félicitations ! Vous avez terminé l'atelier de programmation sur le TDE sur AlloyDB Omni RPM.
Points abordés
- Comment provisionner des disques de stockage (
/data1,/obs), configurer l'espace d'échange et formater les systèmes de fichiers XFS. - Apprendre à générer et gérer les clés de chiffrement de clés à l'aide de File KMS
- Découvrez comment initialiser et démarrer un cluster AlloyDB Omni compatible avec TDE à l'aide des outils RPM.
- Comment vérifier le chiffrement des données au repos à l'aide de l'inspection directe des disques bruts (
grep).
Pour en savoir plus, consultez la documentation AlloyDB Omni.