1. Wprowadzenie
W tym ćwiczeniu pokazujemy, jak skonfigurować i włączyć szyfrowanie przezroczyste danych (TDE) w AlloyDB Omni za pomocą pakietów RPM. TDE szyfruje pliki danych, dzienniki WAL i tymczasowe pliki danych w spoczynku, zapewniając ochronę danych przed nieuprawnionym dostępem do bazowych fizycznych nośników danych.
W tym ćwiczeniu dowiesz się, jak udostępnić woluminy pamięci masowej, zainicjować i uruchomić klaster AlloyDB Omni z włączonym TDE za pomocą File KMS oraz sprawdzić szyfrowanie danych w stanie spoczynku w plikach na dysku.
Wymagania wstępne
- Dostęp do projektu Google Cloud i Cloud Shell w konsoli Google Cloud.
- Zainstalowany i skonfigurowany pakiet Google Cloud SDK (
gcloud). Szczegółowe informacje o instalowaniu gcloud znajdziesz w artykule gcloud-install.
Czego się nauczysz
- Jak utworzyć maszynę wirtualną Compute Engine z dedykowanymi dyskami bazy danych, kopii zapasowej i wymiany.
- Jak sformatować woluminy pamięci masowej (XFS), skonfigurować
/etc/fstabi przygotować ścieżki danych. - Jak generować klucze szyfrujące klucze (KEK) i zarządzać nimi za pomocą File KMS.
- Jak zainstalować pakiety RPM AlloyDB Omni i narzędzia klienta PostgreSQL.
- Jak uruchomić klaster AlloyDB Omni z włączonym TDE za pomocą narzędzi instalacyjnych RPM (
alloydbomni18-setup) i--tde-kek-url. - Jak sprawdzić szyfrowanie na dysku za pomocą inspekcji plików w postaci nieprzetworzonej (
grep).
Czego potrzebujesz
- Uzyskaj link URL do pakietów RPM AlloyDB Omni, wypełniając formularz rejestracji pakietów RPM AlloyDB Omni lub zapoznając się z omówieniem AlloyDB Omni w systemie Linux. Adres URL repozytorium zostanie wysłany na zarejestrowany adres e-mail.
- Działający terminal z dostępem do Google Cloud (zalecany jest Cloud Shell).
2. Konfiguracja i wymagania
Konfiguracja projektu
Utwórz projekt Google Cloud
- W konsoli Google Cloud na stronie wyboru projektu wybierz lub utwórz projekt Google Cloud.
- Sprawdź, czy w projekcie w chmurze włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
Uruchom Cloud Shell
Chociaż możesz zdalnie korzystać z Google Cloud na laptopie, w tym ćwiczeniu użyjesz Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

- Otwórz konsolę Google Cloud i kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu. Możesz też otworzyć Cloud Shell, naciskając w konsoli klawisze
GiS, lub otwierając stronę shell.cloud.google.com. - Uzyskanie dostępu do środowiska i połączenie się z nim może zająć kilka chwil. Gdy to się uda, zobaczysz w terminalu wiersz poleceń gotowy do wprowadzania danych.

3. Tworzenie maszyny wirtualnej Compute Engine
W tej sekcji utworzysz maszynę wirtualną Compute Engine (GCE) z systemem Rocky Linux 9 i dedykowanymi dyskami trwałymi na dane bazy danych (/data1), kopie zapasowe/dostrzegalność (/obs) i przestrzeń wymiany.
- Zdefiniuj zmienne środowiskowe dla identyfikatora projektu, nazwy maszyny wirtualnej, strefy i regionu.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Skonfiguruj projekt domyślny.
gcloud config set project $PROJECT - Utwórz reguły zapory sieciowej dla ruchu 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" - Ponieważ maszyna wirtualna jest tworzona bez publicznego adresu IP, skonfiguruj Cloud Router i bramę Cloud NAT, aby zapewnić dostęp do internetu na potrzeby pobierania pakietów RPM. Jeśli w regionie projektu istnieje już usługa Cloud NAT, możesz kontynuować.
Uwaga: jeśli w regionie istnieje już brama Cloud NAT, GCP zwróci komunikat informujący, że usługa NAT jest już skonfigurowana dla wszystkich podsieci. Możesz bezpiecznie zignorować ten błąd i kontynuować.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 - Utwórz dodatkowe dyski trwałe na dane bazy danych, kopie zapasowe i miejsce wymiany.
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 - Udostępnij instancję maszyny wirtualnej z systemem Rocky Linux 9 z dołączonymi woluminami pamięci masowej.
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. Przygotowywanie dysków, dostrajanie systemu i klucza File KMS
W tej sekcji połączysz się z maszyną wirtualną, sformatujesz i zamontujesz trwałe woluminy pamięci masowej, skonfigurujesz miejsce wymiany, dostroisz SELinux i wygenerujesz klucz szyfrujący klucze (KEK) TDE za pomocą File KMS.
- Połącz się z maszyną wirtualną przez Identity-Aware Proxy (IAP).
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Sformatuj i zamontuj wolumin danych (
/data1) oraz wolumin obserwacji/kopii zapasowej (/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 - Utwórz i włącz miejsce wymiany na dedykowanym dysku wymiany.
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 - Zdefiniuj zmienne środowiskowe dla katalogu bazy danych i pliku klucza 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>" - Utwórz katalogi pamięci masowej na potrzeby bazy danych i klucza File KMS.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Wygeneruj 32-bajtowy, kryptograficznie bezpieczny klucz szyfrujący klucze (KEK) za pomocą OpenSSL dla File KMS.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Zainstaluj wymagane narzędzia do zarządzania SELinux.
sudo dnf install -y policycoreutils-python-utils
5. Instalowanie pakietów RPM AlloyDB Omni
Skonfiguruj repozytoria pakietów i zainstaluj serwer bazy danych AlloyDB Omni wraz ze standardowymi narzędziami PostgreSQL 18.
Uwaga: zastąp $ALLOYDB_OMNI_REPOSITORY_URL adresem URL repozytorium otrzymanym e-mailem po wypełnieniu formularza rejestracji pakietów RPM AlloyDB Omni. Więcej informacji znajdziesz w omówieniu AlloyDB Omni w systemie Linux.
- Utwórz plik konfiguracyjny repozytorium YUM dla 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 - Zaktualizuj pamięć podręczną repozytorium YUM i zainstaluj pakiety RPM serwera AlloyDB Omni 18.
sudo yum makecache sudo dnf install -y alloydbomni18 - Zainstaluj oficjalne repozytorium RPM PostgreSQL PGDG i standardowy pakiet klienta 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 - Przypisz użytkownikowi
postgreswłasność katalogu/data1i katalogu klucza KMS.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. Uruchamianie klastra z włączonym TDE
Skonfiguruj limity zasobów, otwórz porty zapory sieciowej hosta i zainicjuj klaster AlloyDB Omni z włączonym szyfrowaniem przezroczystym danych za pomocą klucza File KMS (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE").
- Ustaw SELinux w trybie zezwalającym i skonfiguruj reguły zapory sieciowej hosta dla PostgreSQL.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Skonfiguruj parametry zastępowania usługi systemd, aby przypisać limity pamięci i zasobów procesora.
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 - Ustaw zmienne środowiskowe administratora i zainicjuj klaster bazy danych TDE za pomocą
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 - Skonfiguruj port serwera 5432 w
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - Przygotuj katalogi systemowe i rozszerzenia za pomocą
alloydbomni18-setup preparedb.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Włącz i uruchom usługę systemd
alloydbomni18. Sprawdź, czy w danych wyjściowych widoczny jest komunikatsudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
7. Operacje na bazie danych i weryfikacja szyfrowania dysku TDE
Połącz się z bazą danych TDE, wstaw przykładowe rekordy, wykonaj CHECKPOINT, aby wymusić zapisywanie danych na dysku, i uruchom bezpośrednie skanowanie dysku (grep), aby sprawdzić szyfrowanie w spoczynku.
- Połącz się z bazą danych
alloydbadminza pomocąpsql.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - Utwórz tabelę testową, wstaw poufny ciąg znaków i uruchom punkt kontrolny, aby zapisać zmodyfikowane bufory w pamięci masowej.
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; - Wyślij zapytanie do wewnętrznego widoku statystyk TDE AlloyDB
pgsnap.g$tde_stats, aby sprawdzić aktywny stan szyfrowania, lokalizację KEK i wskaźniki bloków. Przykładowe dane wyjściowe potwierdzające aktywny 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), ścieżkę pliku KEK i liczniki zaszyfrowanych bloków:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) - Zakończ działanie
psql.\q - Wyszukaj ciąg znaków hasła w nieprzetworzonych plikach pamięci masowej bazy danych w katalogu
/data1/18/base/, aby sprawdzić ochronę TDE na dysku.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Kluczowe informacje dotyczące weryfikacji:
- W instancji bazy danych bez TDE uruchomienie
grepw plikach relacji tabeli spowoduje wyświetlenie na dysku ciągu znaków w postaci zwykłego tekstu. - W instancji bazy danych z włączonym TDE
grepzwróci zero dopasowań , ponieważ wszystkie pliki danych, indeksy, dzienniki WAL i dane tymczasowe są w spoczynku w pełni zaszyfrowane za pomocą szyfrów blokowych AES.
8. Czyszczenie
Po wykonaniu ćwiczeń zwalniaj miejsce, aby uniknąć niechcianych opłat za obliczenia.
- Odłącz się od sesji SSH maszyny wirtualnej.
exit - Usuń maszynę wirtualną GCE i dołączone dyski trwałe.
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 - Usuń reguły zapory sieciowej i zasoby bramy 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. Gratulacje
Gratulacje! Udało Ci się ukończyć ćwiczenie TDE w AlloyDB Omni RPM.
Omówione zagadnienia
- Jak udostępnić dyski pamięci masowej (
/data1,/obs), skonfigurować miejsce wymiany i sformatować systemy plików XFS. - Jak generować klucze szyfrujące klucze i zarządzać nimi za pomocą File KMS.
- Jak zainicjować i uruchomić klaster AlloyDB Omni z włączonym TDE za pomocą narzędzi RPM.
- Jak sprawdzić szyfrowanie w spoczynku za pomocą bezpośredniej inspekcji dysku w postaci nieprzetworzonej (
grep).
Więcej informacji znajdziesz w dokumentacji AlloyDB Omni.