Mengaktifkan Enkripsi Data Transparan (TDE) di AlloyDB Omni RPM

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

2. Penyiapan dan Persyaratan

Penyiapan project

Membuat Project Google Cloud

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
  2. 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.

Ikon untuk mengaktifkan Cloud Shell

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

Terminal Google Cloud Shell yang menampilkan lingkungan yang terhubung

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.

  1. 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"
    
  2. Konfigurasi project default Anda.
    gcloud config set project $PROJECT
    
  3. 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"
    
  4. 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.
    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
    
    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.
  5. 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
    
  6. 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.

  1. SSH ke VM melalui Identity-Aware Proxy (IAP).
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. 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
    
  3. 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
    
  4. 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>"
    
  5. Buat direktori penyimpanan untuk database dan penyimpanan kunci File KMS.
    sudo mkdir -p $PGDATA
    sudo mkdir -p $KMS_DIR
    
  6. 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
    
  7. 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.

  1. 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
    
  2. Perbarui cache repositori YUM dan instal paket RPM server AlloyDB Omni 18.
    sudo yum makecache
    sudo dnf install -y alloydbomni18
    
  3. 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
    
  4. Tetapkan kepemilikan /data1 dan direktori kunci KMS ke pengguna postgres.
    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").

  1. 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
    
  2. 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
    
  3. 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
    
  4. Konfigurasikan port server 5432 di postgresql.conf.
    sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf
    
  5. Siapkan katalog dan ekstensi sistem menggunakan alloydbomni18-setup preparedb.
    sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \
        /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  6. Aktifkan dan luncurkan layanan systemd alloydbomni18.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Pastikan output menampilkan Active: 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.

  1. Hubungkan ke database alloydbadmin menggunakan psql.
    PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin
    
  2. 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;
    
  3. Kueri tampilan statistik TDE AlloyDB internal pgsnap.g$tde_stats untuk memverifikasi status enkripsi aktif, lokasi KEK, dan metrik blok.
    SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted
    FROM pgsnap.g$tde_stats;
    
    Contoh output yang mengonfirmasi TDE aktif (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)
    
  4. Keluar dari psql.
    \q
    
  5. 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 grep terhadap file relasi tabel akan menampilkan string teks biasa di disk.
  • Pada instance database yang Mendukung TDE, grep akan 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.

  1. Putuskan koneksi dari sesi SSH VM Anda.
    exit
    
  2. 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
    
  3. 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.

10. Survei

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membacanya dan menyelesaikan latihan