1. Pengantar
Codelab ini menunjukkan cara mengonfigurasi dan mengaktifkan Enkripsi Data Transparan (TDE) di AlloyDB Omni menggunakan paket RPM. TDE mengenkripsi file data, log tulis-sebelum-tulis (WAL), dan file data sementara saat tidak digunakan, sehingga memberikan perlindungan data terhadap akses tidak sah ke media penyimpanan fisik yang mendasarinya.
Dalam codelab ini, Anda akan mempelajari cara menyediakan volume penyimpanan, melakukan inisialisasi dan menjalankan cluster AlloyDB Omni yang mendukung TDE menggunakan File KMS, dan memverifikasi enkripsi data saat tidak digunakan pada file disk.
Prasyarat
- Akses ke Project Google Cloud dan Cloud Shell dari Konsol Google Cloud.
- Google Cloud SDK (
gcloud) diinstal dan dikonfigurasi. Untuk mengetahui detail tentang cara menginstal gcloud, lihat gcloud-install
Yang akan Anda pelajari
- Cara membuat VM Compute Engine dengan disk khusus untuk database, cadangan, dan swap.
- Cara memformat volume penyimpanan (XFS), mengonfigurasi
/etc/fstab, dan menyiapkan jalur data. - Cara membuat dan mengelola Kunci Enkripsi Kunci (KEK) menggunakan File KMS.
- Cara menginstal paket RPM AlloyDB Omni dan utilitas klien PostgreSQL.
- Cara melakukan bootstrap cluster AlloyDB Omni yang mendukung TDE menggunakan alat penyiapan RPM (
alloydbomni18-setup) dan--tde-kek-url. - Cara memverifikasi enkripsi di disk menggunakan pemeriksaan file mentah (
grep).
Yang akan Anda butuhkan
- Dapatkan link URL ke RPM AlloyDB Omni dengan mengisi Formulir Pendaftaran RPM AlloyDB Omni atau dengan melihat Ringkasan AlloyDB Omni di Linux. URL repositori akan dikirim ke alamat email Anda yang terdaftar.
- Terminal yang berfungsi dengan akses ke Google Cloud (Cloud Shell direkomendasikan).
2. Penyiapan dan Persyaratan
Penyiapan project
Membuat Project Google Cloud
- Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
Mulai Cloud Shell
Meskipun Anda dapat mengoperasikan Google Cloud dari jarak jauh menggunakan laptop, dalam codelab ini Anda menggunakan Google Cloud Shell, lingkungan command line yang berjalan di cloud.

- Buka konsol Google Cloud dan klik ikon Cloud Shell di toolbar kanan atas. Anda juga dapat membuka Cloud Shell dengan menekan
G, laluSdi konsol, atau dengan membuka shell.cloud.google.com. - Biasanya perlu waktu beberapa saat untuk menyediakan dan menghubungkan ke lingkungan. Setelah selesai, Anda akan melihat perintah terminal yang siap menerima input.

3. Membuat VM Compute Engine
Di bagian ini, Anda akan membuat virtual machine (VM) Compute Engine (GCE) yang menjalankan Rocky Linux 9 dengan persistent disk khusus untuk data database (/data1), cadangan/observabilitas (/obs), dan ruang swap.
- Tentukan variabel lingkungan untuk project ID, nama VM, zona, dan region Anda.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Konfigurasi project default Anda.
gcloud config set project $PROJECT - Buat aturan firewall jaringan untuk traffic 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" - Karena VM dibuat tanpa alamat IP publik, konfigurasikan Cloud Router dan gateway Cloud NAT untuk menyediakan akses internet keluar untuk mendownload paket RPM. Jika Cloud NAT sudah ada di region project Anda, Anda dapat melanjutkan.
Catatan: Jika gateway Cloud NAT sudah ada di region Anda, GCP akan menampilkan pesan yang menunjukkan bahwa NAT sudah dikonfigurasi untuk semua subnet. Anda dapat mengabaikan error ini dengan aman dan melanjutkan.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 - Buat persistent disk tambahan untuk data database, cadangan, dan ruang swap.
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 - Sediakan instance VM Rocky Linux 9 dengan volume penyimpanan terlampir.
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. Menyiapkan Disk, Penyesuaian Sistem, dan Kunci File KMS
Di bagian ini, Anda akan terhubung ke VM, memformat dan memasang volume penyimpanan persisten, mengonfigurasi swap, menyesuaikan SELinux, dan membuat Kunci Enkripsi Kunci (KEK) TDE menggunakan File KMS.
- SSH ke VM melalui Identity-Aware Proxy (IAP).
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Format dan pasang volume data (
/data1) dan volume observabilitas/cadangan (/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 - Buat dan aktifkan ruang swap di disk swap khusus.
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 - Tentukan variabel lingkungan untuk direktori database dan file kunci 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>" - Buat direktori penyimpanan untuk database dan penyimpanan kunci File KMS.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Buat Kunci Enkripsi Kunci (KEK) 32 byte yang aman secara kriptografi menggunakan OpenSSL untuk File KMS.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Instal utilitas pengelolaan SELinux yang diperlukan.
sudo dnf install -y policycoreutils-python-utils
5. Menginstal Paket RPM AlloyDB Omni
Konfigurasikan repositori paket dan instal server database AlloyDB Omni bersama dengan alat PostgreSQL 18 standar.
Catatan: Ganti $ALLOYDB_OMNI_REPOSITORY_URL dengan URL repositori yang diterima melalui email setelah mengisi Formulir Pendaftaran RPM AlloyDB Omni. Untuk mengetahui informasi selengkapnya, lihat Ringkasan AlloyDB Omni di Linux.
- Buat file konfigurasi repositori YUM untuk 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 - Perbarui cache repositori YUM dan instal paket RPM server AlloyDB Omni 18.
sudo yum makecache sudo dnf install -y alloydbomni18 - Instal repositori RPM PGDG PostgreSQL Resmi dan instal paket klien PostgreSQL 18 standar (
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 - Tetapkan kepemilikan
/data1dan direktori kunci KMS ke penggunapostgres.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. Melakukan Bootstrap Cluster yang Mendukung TDE
Konfigurasikan kuota resource, buka port firewall host, dan lakukan inisialisasi cluster AlloyDB Omni dengan Enkripsi Data Transparan yang diaktifkan melalui kunci File KMS (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE").
- Setel SELinux ke mode permisif dan konfigurasikan aturan firewall host untuk PostgreSQL.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Konfigurasikan parameter penggantian layanan systemd untuk menetapkan batas resource memori dan 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 - Tetapkan variabel lingkungan administrator dan lakukan inisialisasi cluster database TDE menggunakan
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 - Konfigurasikan port server 5432 di
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - Siapkan katalog dan ekstensi sistem menggunakan
alloydbomni18-setup preparedb.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Aktifkan dan luncurkan layanan systemd
alloydbomni18. Pastikan output menampilkansudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
7. Operasi Database &Verifikasi Enkripsi Disk TDE
Hubungkan ke database TDE, sisipkan data contoh, jalankan CHECKPOINT untuk memaksa penulisan data ke disk, dan jalankan pemindaian disk langsung (grep) untuk membuktikan enkripsi dalam penyimpanan.
- Hubungkan ke database
alloydbadminmenggunakanpsql.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - Buat tabel pengujian, sisipkan string rahasia, dan picu checkpoint untuk menulis buffer kotor ke penyimpanan.
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; - Kueri tampilan statistik TDE AlloyDB internal
pgsnap.g$tde_statsuntuk memverifikasi status enkripsi aktif, lokasi KEK, dan metrik blok. Contoh output yang mengonfirmasi TDE aktif (SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted FROM pgsnap.g$tde_stats;is_tde_enabled = t), jalur file KEK, dan penghitung blok terenkripsi:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) - Keluar dari
psql.\q - Cari file penyimpanan database mentah di bagian
/data1/18/base/untuk string kode sandi guna memverifikasi perlindungan di disk TDE.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Poin Penting Verifikasi Kunci:
- Pada instance database Non-TDE, menjalankan
grepterhadap file relasi tabel akan menampilkan string teks biasa di disk. - Pada instance database yang Mendukung TDE,
grepakan menampilkan nol kecocokan karena semua file data, indeks, log tulis-sebelum-tulis (WAL), dan data sementara dienkripsi sepenuhnya dengan sandi blok AES saat tidak digunakan.
8. Pembersihan
Setelah menyelesaikan latihan, bersihkan resource untuk mencegah tagihan komputasi yang tidak diinginkan.
- Putuskan koneksi dari sesi SSH VM Anda.
exit - Hapus Virtual Machine GCE dan persistent disk terlampir.
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 - Hapus aturan firewall dan resource gateway 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. Selamat
Selamat! Anda berhasil menyelesaikan codelab TDE di AlloyDB Omni RPM.
Yang telah kita bahas
- Cara menyediakan disk penyimpanan (
/data1,/obs), menyiapkan swap, dan memformat sistem file XFS. - Cara membuat dan mengelola Kunci Enkripsi Kunci menggunakan File KMS.
- Cara melakukan inisialisasi dan memulai cluster AlloyDB Omni yang mendukung TDE menggunakan alat RPM.
- Cara memverifikasi enkripsi dalam penyimpanan menggunakan pemeriksaan disk mentah langsung (
grep).
Untuk mengetahui informasi selengkapnya, lihat Dokumentasi AlloyDB Omni.