1. Giriş
Bu codelab'de, RPM paketlerini kullanarak AlloyDB Omni'de şeffaf veri şifrelemeyi (TDE) yapılandırma ve etkinleştirme adımları gösterilmektedir. TDE, veri dosyalarını, write-ahead günlüklerini (WAL) ve geçici veri dosyalarını kullanımda değilken şifreleyerek temel fiziksel depolama ortamına yetkisiz erişime karşı veri koruması sağlar.
Bu codelab'de, depolama birimlerini sağlama, File KMS kullanarak TDE özellikli bir AlloyDB Omni kümesini başlatma ve çalıştırma ve disk dosyalarında diskteki verilerin şifrelenmesini doğrulama işlemlerini öğreneceksiniz.
Ön koşullar
- Google Cloud Console'dan Google Cloud projesine ve Cloud Shell'e erişim.
- Google Cloud SDK (
gcloud) yüklü ve yapılandırılmış olmalıdır. gcloud'u yükleme hakkında ayrıntılı bilgi için gcloud-install başlıklı makaleyi inceleyin.
Neler öğreneceksiniz?
- Özel veritabanı, yedekleme ve takas diskleri içeren bir Compute Engine sanal makinesi oluşturma
- Depolama birimlerini (XFS) biçimlendirme,
/etc/fstabyapılandırma ve veri yollarını hazırlama. - File KMS kullanarak anahtar şifreleme anahtarlarını (KEK) oluşturma ve yönetme
- AlloyDB Omni RPM paketlerini ve PostgreSQL istemci yardımcı programlarını yükleme.
- RPM kurulum araçlarını (
alloydbomni18-setup) ve--tde-kek-urlkullanarak TDE'nin etkinleştirildiği bir AlloyDB Omni kümesini başlatma. - Ham dosya incelemesini kullanarak disk üzerindeki şifrelemeyi doğrulama (
grep).
Gerekenler
- AlloyDB Omni RPM Kayıt Formu'nu doldurarak veya AlloyDB Omni on Linux Overview'a (Linux'ta AlloyDB Omni'ye Genel Bakış) göz atarak AlloyDB Omni RPM'lerine yönelik bir URL bağlantısı edinin. Depo URL'si, kayıtlı e-posta adresinize gönderilir.
- Google Cloud'a erişimi olan çalışan bir terminal (Cloud Shell önerilir).
2. Kurulum ve Gereksinimler
Proje kurulumu
Google Cloud projesi oluşturma
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
Cloud Shell'i başlatma
Google Cloud'u dizüstü bilgisayarınızdan uzaktan çalıştırabilirsiniz ancak bu codelab'de bulutta çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

- Google Cloud Console'u açın ve sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın. Ayrıca konsolda
Gve ardındanStuşlarına basarak veya shell.cloud.google.com adresini ziyaret ederek de Cloud Shell'i açabilirsiniz. - Ortamın temel hazırlığı ve bağlantı kurulması genellikle birkaç dakika sürer. İşlem tamamlandığında, giriş için hazır bir terminal istemi görürsünüz.

3. Compute Engine sanal makinesini oluşturma
Bu bölümde, veritabanı verileri (/data1), yedeklemeler/gözlemlenebilirlik (/obs) ve takas alanı için ayrılmış kalıcı disklerle Rocky Linux 9 çalıştıran bir Compute Engine (GCE) sanal makinesi (VM) oluşturacaksınız.
- Proje kimliğiniz, VM adınız, bölgeniz ve alt bölgeniz için ortam değişkenleri tanımlayın.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Varsayılan projenizi yapılandırın.
gcloud config set project $PROJECT - SSH trafiği için ağ güvenlik duvarı kuralları oluşturun.
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" - Sanal makine, genel IP adresi olmadan oluşturulduğundan RPM paketlerini indirmek için giden internet erişimi sağlamak üzere bir Cloud Router ve Cloud NAT ağ geçidi yapılandırın. Proje bölgenizde zaten bir Cloud NAT varsa devam edebilirsiniz.
Not: Bölgenizde Cloud NAT ağ geçidi zaten varsa GCP, tüm alt ağlar için NAT'nin zaten yapılandırıldığını belirten bir mesaj döndürür. Bu hatayı güvenle yoksayabilir ve devam edebilirsiniz.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 - Veritabanı verileri, yedeklemeler ve takas alanı için ek kalıcı diskler oluşturun.
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 - Ekli depolama birimleriyle Rocky Linux 9 sanal makine örneğini sağlama.
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. Diskleri, Sistem Ayarlarını ve Dosya KMS Anahtarını Hazırlama
Bu bölümde, sanal makineye bağlanır, kalıcı depolama birimlerini biçimlendirip bağlar, takas alanını yapılandırır, SELinux'u ayarlar ve Dosya KMS'yi kullanarak TDE anahtar şifreleme anahtarını (KEK) oluşturursunuz.
- Identity-Aware Proxy (IAP) aracılığıyla sanal makineye SSH uygulayın.
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Veri birimini (
/data1) ve gözlemlenebilirlik/yedekleme birimini (/obs) biçimlendirin ve bağlayın.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 - Özel takas diskinde takas alanı oluşturun ve etkinleştirin.
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 - Veritabanı dizini ve File KMS anahtar dosyası için ortam değişkenlerini tanımlayın.
export PGDATA="/data1/18" export KMS_DIR="/data1/kms" export KEK_FILE="$KMS_DIR/tde_key" export ALLOYDB_OMNI_REPOSITORY_URL="<your-repository-url>" - Veritabanı ve File KMS anahtar depolama alanı için depolama dizinleri oluşturun.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Dosya KMS için OpenSSL kullanarak 32 baytlık kriptografik olarak güvenli bir anahtar şifreleme anahtarı (KEK) oluşturun.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Gerekli SELinux yönetim yardımcı programlarını yükleyin.
sudo dnf install -y policycoreutils-python-utils
5. AlloyDB Omni RPM paketlerini yükleme
Paket depolarını yapılandırın ve AlloyDB Omni veritabanı sunucusunu standart PostgreSQL 18 araçlarıyla birlikte yükleyin.
Not: AlloyDB Omni RPM Kayıt Formu'nu doldurduktan sonra e-posta ile aldığınız depo URL'siyle $ALLOYDB_OMNI_REPOSITORY_URL yerine koyun. Daha fazla bilgi için AlloyDB Omni on Linux Overview (Linux'ta AlloyDB Omni'ye Genel Bakış) başlıklı makaleyi inceleyin.
- AlloyDB Omni için YUM deposu yapılandırma dosyasını oluşturun.
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 - YUM deposu önbelleğini güncelleyin ve AlloyDB Omni 18 sunucusu RPM paketlerini yükleyin.
sudo yum makecache sudo dnf install -y alloydbomni18 - Resmi PostgreSQL PGDG RPM deposunu ve standart PostgreSQL 18 istemci paketini (
psql) yükleyin.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 /data1ve KMS anahtarı dizininin sahipliğinipostgreskullanıcısına atayın.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. TDE özellikli bir kümeyi başlatma
Kaynak kotalarını yapılandırın, ana makine güvenlik duvarı bağlantı noktalarını açın ve AlloyDB Omni kümesini, dosya KMS anahtarı (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE") aracılığıyla şeffaf veri şifrelemesi etkin olarak başlatın.
- SELinux'u izinli moda ayarlayın ve PostgreSQL için ana makine güvenlik duvarı kurallarını yapılandırın.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Bellek ve CPU kaynak sınırlarını atamak için systemd hizmeti geçersiz kılma parametrelerini yapılandırın.
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 alloydbomni18-setup initdbkullanarak yönetici ortam değişkenlerini ayarlayın ve TDE veritabanı kümesini başlatın.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 initdbpostgresql.confiçinde 5432 numaralı sunucu bağlantı noktasını yapılandırın.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.confalloydbomni18-setup preparedbkullanarak sistem katalogları ve uzantıları hazırlayın.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedballoydbomni18systemd hizmetini etkinleştirin ve başlatın. Çıkıştasudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running)gösterildiğini doğrulayın.
7. Veritabanı İşlemleri ve TDE Disk Şifreleme Doğrulaması
TDE veritabanına bağlanın, örnek kayıtlar ekleyin, verilerin diske yazılmasını zorlamak için CHECKPOINT komutunu çalıştırın ve diskte bekleyen verilerin şifrelendiğini kanıtlamak için doğrudan disk taramaları (grep) yapın.
psqlkullanarakalloydbadminveritabanına bağlanın.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin- Bir test tablosu oluşturun, gizli bir dize ekleyin ve kirli arabellekleri depolama alanına yazmak için bir kontrol noktası tetikleyin.
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; - Etkin şifreleme durumunu, KEK konumunu ve blok metriklerini doğrulamak için dahili AlloyDB TDE istatistikleri görünümünü
pgsnap.g$tde_statssorgulayın. Etkin 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), KEK dosya yolu ve şifrelenmiş blok sayaçlarını onaylayan örnek çıktı:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) psqlmodundan çıkın.\q- Disk üzerindeki TDE korumasını doğrulamak için
/data1/18/base/bölümünde şifre dizesini arayarak ham veritabanı depolama dosyalarını inceleyin.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Doğrulama ile ilgili önemli nokta:
- Non-TDE veritabanı örneğinde, tablo ilişkisi dosyalarına karşı
grepkomutunu çalıştırmak diskteki düz metin dizesini gösterir. - TDE'nin etkinleştirildiği bir veritabanı örneğinde, tüm veri dosyaları, dizinler, önce yazma günlükleri (WAL) ve geçici veriler, AES blok şifreleriyle tam olarak şifrelendiğinden
grep, sıfır eşleşme döndürür.
8. Temizleme
Alıştırmaları tamamladıktan sonra, istenmeyen işlem ücretlerini önlemek için kaynakları temizleyin.
- Sanal makinenizin SSH oturumundan çıkın.
exit - GCE sanal makinesini ve ekli kalıcı diskleri kaldırın.
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 - Güvenlik duvarı kurallarını ve Cloud NAT ağ geçidi kaynaklarını silin.
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. Tebrikler
Tebrikler! AlloyDB Omni RPM'de TDE codelab'ini başarıyla tamamladınız.
İşlediğimiz konular
- Depolama disklerini (
/data1,/obs) sağlama, takas alanını ayarlama ve XFS dosya sistemlerini biçimlendirme. - File KMS kullanarak anahtar şifreleme anahtarlarını oluşturma ve yönetme
- RPM araçlarını kullanarak TDE özellikli bir AlloyDB Omni kümesini başlatma ve kullanmaya başlama
- Doğrudan ham disk incelemesi (
grep) kullanarak aktif olmayan verilerin şifrelenmesini doğrulama
Daha fazla bilgi için AlloyDB Omni Belgeleri'ne bakın.