AlloyDB Omni RPM'de şeffaf veri şifrelemeyi (TDE) etkinleştirme

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/fstab yapı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-url kullanarak 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

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. 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.

Cloud Shell'i etkinleştirme simgesi

  1. Google Cloud Console'u açın ve sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın. Ayrıca konsolda G ve ardından S tuşlarına basarak veya shell.cloud.google.com adresini ziyaret ederek de Cloud Shell'i açabilirsiniz.
  2. 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.

Bağlı ortamı gösteren Google Cloud Shell terminali

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.

  1. 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"
    
  2. Varsayılan projenizi yapılandırın.
    gcloud config set project $PROJECT
    
  3. 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"
    
  4. 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.
    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
    
    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.
  5. 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
    
  6. 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.

  1. Identity-Aware Proxy (IAP) aracılığıyla sanal makineye SSH uygulayın.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. 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
    
  3. Ö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
    
  4. 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>"
    
  5. Veritabanı ve File KMS anahtar depolama alanı için depolama dizinleri oluşturun.
    sudo mkdir -p $PGDATA
    sudo mkdir -p $KMS_DIR
    
  6. 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
    
  7. 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.

  1. 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
    
  2. YUM deposu önbelleğini güncelleyin ve AlloyDB Omni 18 sunucusu RPM paketlerini yükleyin.
    sudo yum makecache
    sudo dnf install -y alloydbomni18
    
  3. 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
    
  4. /data1 ve KMS anahtarı dizininin sahipliğini postgres kullanı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.

  1. 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
    
  2. 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
    
  3. alloydbomni18-setup initdb kullanarak 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 initdb
    
  4. postgresql.conf iç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.conf
    
  5. alloydbomni18-setup preparedb kullanarak sistem katalogları ve uzantıları hazırlayın.
    sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \
        /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  6. alloydbomni18 systemd hizmetini etkinleştirin ve başlatın.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Çıkışta Active: 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.

  1. psql kullanarak alloydbadmin veritabanına bağlanın.
    PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin
    
  2. 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;
    
  3. Etkin şifreleme durumunu, KEK konumunu ve blok metriklerini doğrulamak için dahili AlloyDB TDE istatistikleri görünümünü pgsnap.g$tde_stats sorgulayın.
    SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted
    FROM pgsnap.g$tde_stats;
    
    Etkin TDE (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)
    
  4. psql modundan çıkın.
    \q
    
  5. 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şı grep komutunu ç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.

  1. Sanal makinenizin SSH oturumundan çıkın.
    exit
    
  2. 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
    
  3. 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.

10. Anket

Bu eğitimi nasıl kullanacaksınız?

Sadece okuyun Okuyun ve alıştırmaları tamamlayın