AlloyDB Omni RPM पर पारदर्शी डेटा एन्क्रिप्शन (टीडीई) चालू करना

1. परिचय

इस कोडलैब में, RPM पैकेज का इस्तेमाल करके, AlloyDB Omni पर पारदर्शी डेटा एन्क्रिप्शन (टीडीई) को कॉन्फ़िगर और चालू करने का तरीका बताया गया है. टीडीई, डेटा फ़ाइलों, राइट-अहेड लॉग (डब्ल्यूएएल), और अस्थायी डेटा फ़ाइलों को एन्क्रिप्ट (सुरक्षित) करता है. इससे, डेटा को बिना अनुमति के ऐक्सेस किए जाने से बचाया जा सकता है. साथ ही, यह डेटा को फ़िजिकल स्टोरेज मीडिया में सुरक्षित रखता है.

इस कोडलैब में, आपको स्टोरेज वॉल्यूम उपलब्ध कराने, File KMS का इस्तेमाल करके, TDE की सुविधा वाले AlloyDB Omni क्लस्टर को शुरू करने और चलाने, और डिस्क फ़ाइलों पर डेटा-ऐट-रेस्ट एन्क्रिप्शन की पुष्टि करने का तरीका बताया जाएगा.

ज़रूरी शर्तें

  • Google Cloud Console से, Google Cloud प्रोजेक्ट और Cloud Shell को ऐक्सेस करने की सुविधा.
  • Google Cloud SDK (gcloud) इंस्टॉल और कॉन्फ़िगर किया गया हो. gcloud इंस्टॉल करने के बारे में जानकारी के लिए, gcloud-install पर जाएं

आपको क्या सीखने को मिलेगा

  • डेडिकेटेड डेटाबेस, बैकअप, और स्वैप डिस्क के साथ Compute Engine VM बनाने का तरीका.
  • स्टोरेज वॉल्यूम (XFS) को फ़ॉर्मैट करने, /etc/fstab को कॉन्फ़िगर करने, और डेटा पाथ तैयार करने का तरीका.
  • File KMS का इस्तेमाल करके, की एन्क्रिप्शन की (केईके) को जनरेट और मैनेज करने का तरीका.
  • AlloyDB Omni के RPM पैकेज और PostgreSQL क्लाइंट यूटिलिटी इंस्टॉल करने का तरीका.
  • RPM सेटअप टूल (alloydbomni18-setup) और --tde-kek-url का इस्तेमाल करके, TDE की सुविधा वाले AlloyDB Omni क्लस्टर को बूटस्ट्रैप करने का तरीका.
  • रॉ फ़ाइल की जांच (grep) करके, डिस्क पर मौजूद डेटा को एन्क्रिप्ट (सुरक्षित) करने की सुविधा की पुष्टि करने का तरीका.

आपको इन चीज़ों की ज़रूरत होगी

2. सेटअप और ज़रूरी शर्तें

प्रोजेक्ट सेटअप करना

Google Cloud प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर जाकर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके क्लाउड प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें.

Cloud Shell शुरू करें

लैपटॉप से Google Cloud को रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया गया है. यह क्लाउड में चलने वाला कमांड-लाइन एनवायरमेंट है.

Cloud Shell चालू करने का आइकॉन

  1. Google Cloud Console खोलें और सबसे ऊपर दाईं ओर मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें. कंसोल में G और फिर S दबाकर या shell.cloud.google.com पर जाकर भी Cloud Shell खोला जा सकता है.
  2. आम तौर पर, एनवायरमेंट को चालू करने और उससे कनेक्ट होने में कुछ समय लगता है. यह प्रोसेस पूरी होने पर, आपको टर्मिनल प्रॉम्प्ट दिखेगा. इसमें इनपुट डाला जा सकता है.

Google Cloud Shell टर्मिनल में कनेक्ट किया गया एनवायरमेंट दिखाया गया है

3. Compute Engine VM बनाना

इस सेक्शन में, आपको Compute Engine (GCE) वर्चुअल मशीन (वीएम) बनानी है. यह Rocky Linux 9 पर काम करती है. इसमें डेटाबेस डेटा (/data1), बैकअप/जांचने की क्षमता (/obs), और स्वैप स्पेस के लिए अलग-अलग परसिस्टेंट डिस्क होती हैं.

  1. अपने प्रोजेक्ट आईडी, वीएम के नाम, ज़ोन, और क्षेत्र के लिए एनवायरमेंट वैरिएबल तय करें.
    export PROJECT="your-project-id"
    export INSTANCE_NAME="alloydb-omni-tde-vm"
    export ZONE="us-central1-c"
    export REGION="us-central1"
    
  2. अपने डिफ़ॉल्ट प्रोजेक्ट को कॉन्फ़िगर करें.
    gcloud config set project $PROJECT
    
  3. एसएसएच ट्रैफ़िक के लिए, नेटवर्क फ़ायरवॉल के नियम बनाएं.
    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. वीएम को सार्वजनिक आईपी पते के बिना बनाया गया है. इसलिए, आरपीएम पैकेज डाउनलोड करने के लिए आउटबाउंड इंटरनेट ऐक्सेस देने के लिए, Cloud Router और Cloud NAT गेटवे को कॉन्फ़िगर करें. अगर आपके प्रोजेक्ट के क्षेत्र में Cloud NAT पहले से मौजूद है, तो आगे बढ़ें.
    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
    
    ध्यान दें: अगर आपके इलाके में पहले से कोई Cloud NAT गेटवे मौजूद है, तो GCP एक मैसेज दिखाएगा. इसमें बताया जाएगा कि सभी सबनेट के लिए NAT पहले से कॉन्फ़िगर किया गया है. इस गड़बड़ी को अनदेखा करके, आगे बढ़ा जा सकता है.
  5. डेटाबेस डेटा, बैकअप, और स्वैप स्पेस के लिए अतिरिक्त परसिस्टेंट डिस्क बनाएं.
    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. अटैच किए गए स्टोरेज वॉल्यूम के साथ Rocky Linux 9 वीएम इंस्टेंस उपलब्ध कराएं.
    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. डिस्क, सिस्टम ट्यूनिंग, और फ़ाइल केएमएस कुंजी तैयार करना

इस सेक्शन में, वीएम से कनेक्ट किया जाता है. साथ ही, परसिस्टेंट स्टोरेज वॉल्यूम को फ़ॉर्मैट और माउंट किया जाता है. इसके अलावा, स्वैप को कॉन्फ़िगर किया जाता है, SELinux को ट्यून किया जाता है, और फ़ाइल केएमएस का इस्तेमाल करके, टीडीई की एन्क्रिप्शन की (केईके) जनरेट की जाती है.

  1. Identity-Aware Proxy (IAP) के ज़रिए, वीएम में एसएसएच करें.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. डेटा वॉल्यूम (/data1) और निगरानी/बैकअप वॉल्यूम (/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. स्वैप डिस्क पर स्वैप स्पेस बनाएं और उसे चालू करें.
    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. डेटाबेस डायरेक्ट्री और फ़ाइल केएमएस कुंजी फ़ाइल के लिए एनवायरमेंट वैरिएबल तय करें.
    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. डेटाबेस और फ़ाइल के लिए, KMS कुंजी के स्टोरेज के लिए डायरेक्ट्री बनाएं.
    sudo mkdir -p $PGDATA
    sudo mkdir -p $KMS_DIR
    
  6. File KMS के लिए, OpenSSL का इस्तेमाल करके क्रिप्टोग्राफ़िक तौर पर सुरक्षित 32-बाइट की एन्क्रिप्शन की (केईके) जनरेट करें.
    sudo openssl rand -base64 32 | sudo tee $KEK_FILE
    sudo chmod 700 $KMS_DIR
    sudo chmod 600 $KEK_FILE
    
  7. SELinux को मैनेज करने के लिए ज़रूरी यूटिलिटी इंस्टॉल करें.
    sudo dnf install -y policycoreutils-python-utils
    

5. AlloyDB Omni के RPM पैकेज इंस्टॉल करना

पैकेज रिपॉज़िटरी कॉन्फ़िगर करें और PostgreSQL 18 के स्टैंडर्ड टूल के साथ-साथ AlloyDB Omni डेटाबेस सर्वर इंस्टॉल करें.

ध्यान दें: AlloyDB Omni RPM के लिए साइन अप करने का फ़ॉर्म भरने के बाद, ईमेल से मिले रिपॉज़िटरी यूआरएल को $ALLOYDB_OMNI_REPOSITORY_URL से बदलें. ज़्यादा जानकारी के लिए, Linux पर AlloyDB Omni की खास जानकारी देखें.

  1. AlloyDB Omni के लिए, YUM रिपॉज़िटरी कॉन्फ़िगरेशन फ़ाइल बनाएं.
    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 रिपॉज़िटरी की कैश मेमोरी अपडेट करें और AlloyDB Omni 18 सर्वर के RPM पैकेज इंस्टॉल करें.
    sudo yum makecache
    sudo dnf install -y alloydbomni18
    
  3. PGDG की आधिकारिक PostgreSQL RPM रिपॉज़िटरी इंस्टॉल करें. साथ ही, 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
    
  4. /data1 और केएमएस कुंजी डायरेक्ट्री का मालिकाना हक, postgres उपयोगकर्ता को असाइन करें.
    sudo chown -R postgres:postgres /data1 $KMS_DIR
    sudo chmod 755 /data1 $PGDATA
    

6. टीडीई की सुविधा वाले क्लस्टर को बूटस्ट्रैप करना

संसाधन कोटा कॉन्फ़िगर करें, होस्ट फ़ायरवॉल पोर्ट खोलें, और फ़ाइल केएमएस कुंजी (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE") के ज़रिए, पारदर्शी डेटा एन्क्रिप्शन की सुविधा चालू करके AlloyDB Omni क्लस्टर को शुरू करें.

  1. SELinux को अनुमति वाले मोड पर सेट करें और PostgreSQL के लिए होस्ट फ़ायरवॉल के नियमों को कॉन्फ़िगर करें.
    sudo setenforce 0
    sudo firewall-cmd --add-port=5432/tcp --permanent
    sudo firewall-cmd --reload
    
  2. मेमोरी और सीपीयू के संसाधनों की सीमाएं असाइन करने के लिए, systemd सेवा के ओवरराइड पैरामीटर कॉन्फ़िगर करें.
    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 का इस्तेमाल करके, एडमिन के एनवायरमेंट वैरिएबल सेट करें और टीडीई डेटाबेस क्लस्टर को शुरू करें.
    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 में सर्वर पोर्ट 5432 को कॉन्फ़िगर करें.
    sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf
    
  5. alloydbomni18-setup preparedb का इस्तेमाल करके, सिस्टम कैटलॉग और एक्सटेंशन तैयार करें.
    sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \
        /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  6. alloydbomni18 systemd सेवा को चालू करें और लॉन्च करें.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    पुष्टि करें कि आउटपुट में Active: active (running) दिख रहा हो.

7. डेटाबेस ऑपरेशन और टीडीई डिस्क एन्क्रिप्शन की पुष्टि

टीडीई डेटाबेस से कनेक्ट करें, सैंपल रिकॉर्ड डालें, CHECKPOINT को लागू करके डेटा को डिस्क में सेव करें, और डायरेक्ट डिस्क स्कैन (grep) चलाकर यह साबित करें कि डेटा को आराम के समय एन्क्रिप्ट किया गया है.

  1. psql का इस्तेमाल करके, alloydbadmin डेटाबेस से कनेक्ट करें.
    PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin
    
  2. एक टेस्ट टेबल बनाएं, गोपनीय स्ट्रिंग डालें, और स्टोरेज में डर्टी बफ़र लिखने के लिए एक चेकपॉइंट ट्रिगर करें.
    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. एक्टिव एन्क्रिप्शन स्टेटस, KEK की जगह, और ब्लॉक मेट्रिक की पुष्टि करने के लिए, इंटरनल AlloyDB TDE के आंकड़ों वाले व्यू pgsnap.g$tde_stats को क्वेरी करें.
    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 फ़ाइल का पाथ, और एन्क्रिप्ट किए गए ब्लॉक काउंटर:
     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 से बाहर निकलें.
    \q
    
  5. डिस्क पर मौजूद डेटा की सुरक्षा के लिए, /data1/18/base/ में जाकर रॉ डेटाबेस स्टोरेज फ़ाइलों में पासकोड स्ट्रिंग खोजें.
    sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
    

पासकोड की पुष्टि करने से जुड़ी अहम जानकारी:

  • नॉन-टीडीई डेटाबेस इंस्टेंस पर, टेबल रिलेशन फ़ाइलों के ख़िलाफ़ grep चलाने पर, डिस्क पर सादा टेक्स्ट स्ट्रिंग दिखती है.
  • टीडीई की सुविधा वाले डेटाबेस इंस्टेंस पर, grep कोई मैच नहीं दिखाता है. ऐसा इसलिए, क्योंकि सभी डेटा फ़ाइलें, इंडेक्स, राइट-अहेड लॉग (डब्ल्यूएएल), और अस्थायी डेटा को AES ब्लॉक सिफ़र की मदद से पूरी तरह से एन्क्रिप्ट (सुरक्षित) किया जाता है.

8. साफ़-सफ़ाई सेवा

एक्सरसाइज़ पूरी करने के बाद, संसाधनों को बंद कर दें, ताकि कंप्यूट के अनचाहे शुल्क से बचा जा सके.

  1. अपने वीएम के एसएसएच सेशन से डिसकनेक्ट करें.
    exit
    
  2. GCE वर्चुअल मशीन और उससे अटैच किए गए परसिस्टेंट डिस्क हटाएं.
    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. फ़ायरवॉल के नियमों और 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. बधाई हो

बधाई हो! आपने AlloyDB Omni RPM कोडलैब पर TDE को पूरा कर लिया है.

हमने क्या-क्या बताया

  • स्टोरेज डिस्क (/data1, /obs) को कैसे प्रोविज़न करें, स्वैप कैसे सेट अप करें, और XFS फ़ाइल सिस्टम को कैसे फ़ॉर्मैट करें.
  • File KMS का इस्तेमाल करके, कुंजी को एन्क्रिप्ट करने वाली कुंजियां जनरेट और मैनेज करने का तरीका.
  • आरपीएम टूल का इस्तेमाल करके, टीडीई की सुविधा वाले AlloyDB Omni क्लस्टर को शुरू करने का तरीका.
  • डायरेक्ट रॉ डिस्क की जांच (grep) करके, आराम के समय सेव किए गए डेटा को एन्क्रिप्ट करने की पुष्टि कैसे करें.

ज़्यादा जानकारी के लिए, AlloyDB Omni का दस्तावेज़ पढ़ें.

10. सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

सिर्फ़ इसे पढ़ें इसे पढ़ें और एक्सरसाइज़ पूरी करें