1. Einführung
In diesem Codelab wird gezeigt, wie Sie die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) in AlloyDB Omni mit RPM-Paketen konfigurieren und aktivieren. Mit TDE werden Datendateien, Write-Ahead-Logs (WAL) und temporäre Datendateien im Ruhezustand verschlüsselt. So werden Daten vor unbefugtem Zugriff auf zugrunde liegende physische Speichermedien geschützt.
In diesem Codelab erfahren Sie, wie Sie Speichervolumes bereitstellen, einen TDE-fähigen AlloyDB Omni-Cluster mit File KMS initialisieren und ausführen und die Verschlüsselung von Daten im Ruhezustand in Festplattendateien überprüfen.
Voraussetzungen
- Zugriff auf ein Google Cloud-Projekt und die Cloud Shell über die Google Cloud Console.
- Google Cloud SDK (
gcloud) installiert und konfiguriert. Weitere Informationen zur Installation von gcloud finden Sie unter gcloud installieren.
Lerninhalte
- Eine Compute Engine-VM mit dedizierten Festplatten für Datenbank, Sicherung und Auslagerungsspeicher erstellen.
- Speichervolumes (XFS) formatieren,
/etc/fstabkonfigurieren und Datenpfade vorbereiten. - Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEK) mit File KMS generieren und verwalten.
- AlloyDB Omni-RPM-Pakete und PostgreSQL-Clientdienstprogramme installieren.
- Einen TDE-fähigen AlloyDB Omni-Cluster mit RPM-Einrichtungstools (
alloydbomni18-setup) und--tde-kek-urlbootstrappen. - Die Verschlüsselung auf der Festplatte mit der Rohdatei-Prüfung (
grep) überprüfen.
Voraussetzungen
- Rufen Sie einen URL-Link zu AlloyDB Omni-RPMs ab, indem Sie das AlloyDB Omni-RPM-Registrierungsformular ausfüllen oder die AlloyDB Omni-Übersicht unter Linux aufrufen. Die Repository-URL wird an Ihre registrierte E-Mail-Adresse gesendet.
- Ein funktionierendes Terminal mit Zugriff auf Google Cloud (Cloud Shell empfohlen).
2. Einrichtung und Anforderungen
Projekteinrichtung
Google Cloud-Projekt erstellen
- Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
- Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.
Cloud Shell starten
Sie können Google Cloud zwar von Ihrem Laptop aus per Fernzugriff nutzen, in diesem Codelab verwenden Sie jedoch die Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

- Öffnen Sie die Google Cloud Console und klicken Sie in der Symbolleiste rechts oben auf das Cloud Shell-Symbol. Sie können die Cloud Shell auch öffnen, indem Sie in der Console
Gund dannSdrücken oder shell.cloud.google.com aufrufen. - Die Bereitstellung und Verbindung mit der Umgebung dauert in der Regel einige Augenblicke. Wenn der Vorgang abgeschlossen ist, wird eine Terminaleingabeaufforderung angezeigt.

3. Compute Engine-VM erstellen
In diesem Abschnitt erstellen Sie eine Compute Engine-VM (GCE) mit Rocky Linux 9 und dedizierten nichtflüchtigen Speichern für Datenbankdaten (/data1), Sicherungen/Beobachtbarkeit (/obs) und Auslagerungsspeicher.
- Definieren Sie Umgebungsvariablen für Ihre Projekt-ID, den VM-Namen, die Zone und die Region.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Konfigurieren Sie Ihr Standardprojekt.
gcloud config set project $PROJECT - Erstellen Sie Firewallregeln für das Netzwerk für den SSH-Traffic.
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" - Da die VM ohne öffentliche IP-Adresse erstellt wird, konfigurieren Sie einen Cloud Router und ein Cloud NAT-Gateway, um den ausgehenden Internetzugriff zum Herunterladen von RPM-Paketen zu ermöglichen. Wenn in Ihrer Projektregion bereits ein Cloud NAT vorhanden ist, können Sie fortfahren.
Hinweis: Wenn in Ihrer Region bereits ein Cloud NAT-Gateway vorhanden ist, gibt GCP eine Meldung zurück, dass NAT bereits für alle Subnetze konfiguriert ist. Sie können diesen Fehler ignorieren und fortfahren.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 - Erstellen Sie zusätzliche nichtflüchtige Speicher für Datenbankdaten, Sicherungen und Auslagerungsspeicher.
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 - Stellen Sie die Rocky Linux 9-VM-Instanz mit den angehängten Speichervolumes bereit.
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. Festplatten, Systemoptimierung und File KMS-Schlüssel vorbereiten
In diesem Abschnitt stellen Sie eine Verbindung zur VM her, formatieren und stellen die nichtflüchtigen Speichervolumes bereit, konfigurieren den Auslagerungsspeicher, optimieren SELinux und generieren den TDE-Schlüsselverschlüsselungsschlüssel (KEK) mit File KMS.
- Stellen Sie eine SSH-Verbindung zur VM über Identity-Aware Proxy (IAP) her.
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Formatieren und stellen Sie das Datenvolume (
/data1) und das Volume für Beobachtbarkeit/Sicherung (/obs) bereit.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 - Erstellen und aktivieren Sie Auslagerungsspeicher auf der dedizierten Auslagerungsfestplatte.
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 - Definieren Sie Umgebungsvariablen für das Datenbankverzeichnis und die File KMS-Schlüsseldatei.
export PGDATA="/data1/18" export KMS_DIR="/data1/kms" export KEK_FILE="$KMS_DIR/tde_key" export ALLOYDB_OMNI_REPOSITORY_URL="<your-repository-url>" - Erstellen Sie Speicherverzeichnisse für die Datenbank und den File KMS-Schlüssel.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Generieren Sie mit OpenSSL einen 32 Byte großen kryptografisch sicheren Schlüsselverschlüsselungsschlüssel (KEK) für File KMS.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Installieren Sie die erforderlichen SELinux-Verwaltungsdienstprogramme.
sudo dnf install -y policycoreutils-python-utils
5. AlloyDB Omni-RPM-Pakete installieren
Konfigurieren Sie Paket-Repositories und installieren Sie den AlloyDB Omni-Datenbankserver zusammen mit den Standardtools von PostgreSQL 18.
Hinweis: Ersetzen Sie $ALLOYDB_OMNI_REPOSITORY_URL durch die Repository-URL, die Sie nach dem Ausfüllen des AlloyDB Omni-RPM-Registrierungsformulars per E-Mail erhalten haben. Weitere Informationen finden Sie in der AlloyDB Omni-Übersicht unter Linux.
- Erstellen Sie die YUM-Repository-Konfigurationsdatei für 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 - Aktualisieren Sie den YUM-Repository-Cache und installieren Sie die AlloyDB Omni 18-Server-RPM-Pakete.
sudo yum makecache sudo dnf install -y alloydbomni18 - Installieren Sie das offizielle PostgreSQL PGDG-RPM-Repository und das Standard-PostgreSQL 18-Clientpaket (
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 - Weisen Sie den Eigentümer von
/data1und dem KMS-Schlüsselverzeichnis dem Nutzerpostgreszu.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. TDE-fähigen Cluster bootstrappen
Konfigurieren Sie Ressourcenkontingente, öffnen Sie Host-Firewallports und initialisieren Sie den AlloyDB Omni-Cluster mit aktivierter transparenter Datenverschlüsselung über den File KMS-Schlüssel (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE").
- Setzen Sie SELinux in den zulässigen Modus und konfigurieren Sie Host-Firewallregeln für PostgreSQL.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Konfigurieren Sie die Parameter für die Systemd-Dienstüberschreibung, um Limits für Speicher- und CPU-Ressourcen zuzuweisen.
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 - Legen Sie Umgebungsvariablen für den Administrator fest und initialisieren Sie den TDE-Datenbankcluster mit
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 - Konfigurieren Sie den Serverport 5432 in
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - Bereiten Sie Systemkataloge und -erweiterungen mit
alloydbomni18-setup preparedbvor.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Aktivieren und starten Sie den Systemd-Dienst
alloydbomni18. Prüfen Sie, ob die Ausgabesudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running)anzeigt.
7. Datenbankvorgänge und Überprüfung der TDE-Festplattenverschlüsselung
Stellen Sie eine Verbindung zur TDE-Datenbank her, fügen Sie Beispieldatensätze ein, führen Sie CHECKPOINT aus, um das Schreiben von Daten auf die Festplatte zu erzwingen, und führen Sie direkte Festplattenscans (grep) aus, um die Verschlüsselung von Daten im Ruhezustand nachzuweisen.
- Stellen Sie mit
psqleine Verbindung zur Datenbankalloydbadminher.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - Erstellen Sie eine Testtabelle, fügen Sie einen vertraulichen String ein und lösen Sie einen Prüfpunkt aus, um geänderte Puffer in den Speicher zu schreiben.
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; - Fragen Sie die interne AlloyDB-Ansicht für TDE-Statistiken
pgsnap.g$tde_statsab, um den aktiven Verschlüsselungsstatus, den KEK-Speicherort und Blockmesswerte zu überprüfen. Beispielausgabe, die die aktive TDE (SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted FROM pgsnap.g$tde_stats;is_tde_enabled = t), den KEK-Dateipfad und die Zähler für verschlüsselte Blöcke bestätigt:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) - Beenden Sie
psql.\q - Suchen Sie in den Rohdatenbank-Speicherdateien unter
/data1/18/base/nach dem Passcode-String, um den TDE-Schutz auf der Festplatte zu überprüfen.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Wichtige Erkenntnisse zur Überprüfung
- In einer Nicht-TDE -Datenbankinstanz wird der Nur-Text-String auf der Festplatte angezeigt, wenn Sie
grepfür Tabellenbeziehungsdateien ausführen. - In einer TDE-fähigen Datenbankinstanz gibt
grepkeine Treffer zurück, da alle Datendateien, Indexe, Write-Ahead-Logs (WAL) und temporären Daten im Ruhezustand vollständig mit AES-Blockchiffren verschlüsselt sind.
8. Bereinigen
Wenn Sie mit den Übungen fertig sind, bereinigen Sie die Ressourcen, um unerwünschte Compute-Kosten zu vermeiden.
- Trennen Sie die Verbindung zur VM-SSH-Sitzung.
exit - Entfernen Sie die GCE-VM und die angehängten nichtflüchtigen Speicher.
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 - Löschen Sie Firewallregeln und Cloud NAT-Gateway-Ressourcen.
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. Glückwunsch
Glückwunsch! Sie haben das Codelab zur TDE in AlloyDB Omni mit RPM erfolgreich abgeschlossen.
Behandelte Themen
- Speicherfestplatten (
/data1,/obs) bereitstellen, Auslagerungsspeicher einrichten und XFS-Dateisysteme formatieren. - Schlüsselverschlüsselungsschlüssel mit File KMS generieren und verwalten.
- Einen TDE-fähigen AlloyDB Omni-Cluster mit RPM-Tools initialisieren und starten.
- Die Verschlüsselung von Daten im Ruhezustand mit direkter Rohdatenprüfung (
grep) überprüfen.
Weitere Informationen finden Sie in der AlloyDB Omni-Dokumentation.