১. ভূমিকা
এই কোডল্যাবটি আরপিএম প্যাকেজ ব্যবহার করে AlloyDB Omni-তে ট্রান্সপারেন্ট ডেটা এনক্রিপশন (TDE) কনফিগার এবং সক্রিয় করার পদ্ধতি প্রদর্শন করে। TDE ডেটা ফাইল, রাইট-অহেড লগ (WAL), এবং টেম্পোরারি ডেটা ফাইলকে সংরক্ষিত অবস্থায় এনক্রিপ্ট করে, যা অন্তর্নিহিত ফিজিক্যাল স্টোরেজ মিডিয়ায় অননুমোদিত অ্যাক্সেসের বিরুদ্ধে ডেটা সুরক্ষা প্রদান করে।
এই কোডল্যাবে আপনি শিখবেন কীভাবে স্টোরেজ ভলিউম প্রভিশন করতে হয়, ফাইল কেএমএস (File KMS) ব্যবহার করে একটি টিডিই-সক্ষম অ্যালয়ডিবি অমনি ক্লাস্টার ইনিশিয়ালাইজ ও রান করতে হয় এবং ডিস্ক ফাইলগুলিতে ডেটা-অ্যাট-রেস্ট এনক্রিপশন যাচাই করতে হয়।
পূর্বশর্ত
- গুগল ক্লাউড কনসোল থেকে গুগল ক্লাউড প্রজেক্ট এবং ক্লাউড শেল অ্যাক্সেস করা যায়।
- Google Cloud SDK (
gcloud) ইনস্টল এবং কনফিগার করা হয়েছে। gcloud ইনস্টল করার বিস্তারিত তথ্যের জন্য, gcloud-install দেখুন।
আপনি যা শিখবেন
- ডেডিকেটেড ডাটাবেস, ব্যাকআপ এবং সোয়াপ ডিস্ক সহ কীভাবে একটি কম্পিউট ইঞ্জিন ভিএম তৈরি করবেন।
- কীভাবে স্টোরেজ ভলিউম (XFS) ফরম্যাট করতে হয়,
/etc/fstabকনফিগার করতে হয় এবং ডেটা পাথ প্রস্তুত করতে হয়। - ফাইল কেএমএস ব্যবহার করে কী এনক্রিপশন কী (KEK) কীভাবে তৈরি এবং পরিচালনা করবেন।
- AlloyDB Omni RPM প্যাকেজ এবং PostgreSQL ক্লায়েন্ট ইউটিলিটিগুলি কীভাবে ইনস্টল করবেন।
- RPM সেটআপ টুলস (
alloydbomni18-setup) এবং--tde-kek-urlব্যবহার করে কীভাবে একটি TDE-সক্ষম AlloyDB Omni ক্লাস্টার বুটস্ট্র্যাপ করবেন। - র ফাইল ইন্সপেকশন (
grep) ব্যবহার করে ডিস্কে থাকা এনক্রিপশন কীভাবে যাচাই করবেন।
আপনার যা যা লাগবে
- AlloyDB Omni RPM সাইনআপ ফর্মটি পূরণ করে অথবা "লিনাক্সে AlloyDB Omni-এর ওভারভিউ" দেখে AlloyDB Omni RPM-গুলির একটি URL লিঙ্ক সংগ্রহ করুন। রিপোজিটরি URL-টি আপনার নিবন্ধিত ইমেল ঠিকানায় পাঠানো হবে।
- গুগল ক্লাউডে প্রবেশাধিকারসহ একটি সচল টার্মিনাল (ক্লাউড শেল সুপারিশকৃত)।
২. সেটআপ এবং প্রয়োজনীয়তা
প্রজেক্ট সেটআপ
একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন
- গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন ।
- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
ক্লাউড শেল শুরু করুন
যদিও আপনি আপনার ল্যাপটপ থেকে দূরবর্তীভাবে গুগল ক্লাউড পরিচালনা করতে পারেন, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ।

- গুগল ক্লাউড কনসোল খুলুন এবং উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনে ক্লিক করুন। এছাড়াও, আপনি কনসোলে
Gএবং তারপরSচেপে, অথবা shell.cloud.google.com- এ গিয়ে ক্লাউড শেল খুলতে পারেন। - পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে সাধারণত কয়েক মুহূর্ত সময় লাগে। সম্পন্ন হলে, আপনি ইনপুট দেওয়ার জন্য প্রস্তুত একটি টার্মিনাল প্রম্পট দেখতে পাবেন।

৩. কম্পিউট ইঞ্জিন ভিএম তৈরি করুন
এই অংশে, আপনি রকি লিনাক্স ৯ চালিত একটি কম্পিউট ইঞ্জিন (GCE) ভার্চুয়াল মেশিন (VM) তৈরি করবেন, যেখানে ডাটাবেস ডেটা ( /data1 ), ব্যাকআপ/পর্যবেক্ষণ ( /obs ), এবং সোয়াপ স্পেসের জন্য ডেডিকেটেড পারসিস্টেন্ট ডিস্ক থাকবে।
- আপনার প্রজেক্ট আইডি, ভিএম নাম, জোন এবং অঞ্চলের জন্য এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণ করুন।
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - আপনার ডিফল্ট প্রজেক্ট কনফিগার করুন।
gcloud config set project $PROJECT - 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" - যেহেতু ভিএমটি কোনো পাবলিক আইপি অ্যাড্রেস ছাড়া তৈরি করা হয়েছে, তাই আরপিএম প্যাকেজ ডাউনলোডের জন্য বহির্গামী ইন্টারনেট অ্যাক্সেস দিতে একটি ক্লাউড রাউটার এবং ক্লাউড ন্যাট গেটওয়ে কনফিগার করুন। যদি আপনার প্রোজেক্ট অঞ্চলে আগে থেকেই একটি ক্লাউড ন্যাট থাকে, তবে আপনি পরবর্তী ধাপে যেতে পারেন।
দ্রষ্টব্য: যদি আপনার অঞ্চলে আগে থেকেই একটি ক্লাউড ন্যাট গেটওয়ে থাকে, তাহলে GCP একটি বার্তা দেবে যে সমস্ত সাবনেটের জন্য ন্যাট ইতিমধ্যেই কনফিগার করা আছে। আপনি নিশ্চিন্তে এই ত্রুটিটি উপেক্ষা করে এগিয়ে যেতে পারেন।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 - ডাটাবেস ডেটা, ব্যাকআপ এবং সোয়াপ স্পেসের জন্য অতিরিক্ত স্থায়ী ডিস্ক তৈরি করুন।
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 - সংযুক্ত স্টোরেজ ভলিউমগুলো দিয়ে রকি লিনাক্স ৯ ভিএম ইনস্ট্যান্সটি প্রোভিশন করুন।
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
৪. ডিস্ক, সিস্টেম টিউনিং এবং ফাইল কেএমএস কী প্রস্তুত করুন।
এই অংশে, আপনি ফাইল কেএমএস (File KMS) ব্যবহার করে ভিএম (VM)-এর সাথে সংযোগ স্থাপন করেন, পারসিস্টেন্ট স্টোরেজ ভলিউমগুলো ফরম্যাট ও মাউন্ট করেন, সোয়াপ (swap) কনফিগার করেন, এসইএলিনাক্স (SELinux) টিউন করেন এবং টিডিই কী এনক্রিপশন কী (KEK) তৈরি করেন।
- আইডেন্টিটি-অ্যাওয়ার প্রক্সি (IAP) ব্যবহার করে VM-এ SSH করুন।
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - ডেটা ভলিউম (
/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 - ডেডিকেটেড সোয়াপ ডিস্কে সোয়াপ স্পেস তৈরি ও সক্রিয় করুন।
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 - ডাটাবেস ডিরেক্টরি এবং ফাইল 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>" - ডাটাবেস এবং ফাইল কেএমএস কী স্টোরেজের জন্য স্টোরেজ ডিরেক্টরি তৈরি করুন।
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - ফাইল কেএমএস-এর জন্য ওপেনএসএসএল ব্যবহার করে একটি ৩২-বাইট ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত কী এনক্রিপশন কী (KEK) তৈরি করুন।
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - প্রয়োজনীয় SELinux ম্যানেজমেন্ট ইউটিলিটিগুলো ইনস্টল করুন।
sudo dnf install -y policycoreutils-python-utils
৫. AlloyDB Omni RPM প্যাকেজ ইনস্টল করুন
প্যাকেজ রিপোজিটরিগুলো কনফিগার করুন এবং স্ট্যান্ডার্ড PostgreSQL 18 টুলসের পাশাপাশি AlloyDB Omni ডাটাবেস সার্ভারটি ইনস্টল করুন।
দ্রষ্টব্য: AlloyDB Omni RPM সাইনআপ ফর্মটি পূরণ করার পর ইমেলের মাধ্যমে প্রাপ্ত রিপোজিটরি URL-টি দিয়ে $ALLOYDB_OMNI_REPOSITORY_URL প্রতিস্থাপন করুন। আরও তথ্যের জন্য, লিনাক্সে AlloyDB Omni-এর ওভারভিউ দেখুন।
- 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 - YUM রিপোজিটরি ক্যাশে আপডেট করুন এবং AlloyDB Omni 18 সার্ভার RPM প্যাকেজগুলো ইনস্টল করুন।
sudo yum makecache sudo dnf install -y alloydbomni18 - অফিসিয়াল PostgreSQL PGDG 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 -
/data1এবং KMS কী ডিরেক্টরির মালিকানাpostgresব্যবহারকারীকে অর্পণ করুন।sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
৬. একটি TDE-সক্ষম ক্লাস্টার বুটস্ট্র্যাপ করুন
রিসোর্স কোটা কনফিগার করুন, হোস্ট ফায়ারওয়াল পোর্ট খুলুন এবং ফাইল KMS কী ( POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE" ) এর মাধ্যমে ট্রান্সপারেন্ট ডেটা এনক্রিপশন সক্রিয় করে AlloyDB Omni ক্লাস্টারটি ইনিশিয়ালাইজ করুন।
- SELinux-কে পারমিসিভ মোডে সেট করুন এবং PostgreSQL-এর জন্য হোস্ট ফায়ারওয়াল নিয়মাবলী কনফিগার করুন।
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - মেমরি এবং সিপিইউ রিসোর্স সীমা নির্ধারণ করতে 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 -
alloydbomni18-setup initdbব্যবহার করে অ্যাডমিনিস্ট্রেটর এনভায়রনমেন্ট ভেরিয়েবল সেট করুন এবং TDE ডাটাবেস ক্লাস্টার ইনিশিয়ালাইজ করুন।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 -
postgresql.confফাইলে সার্ভার পোর্ট 5432 কনফিগার করুন।sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf -
alloydbomni18-setup preparedbব্যবহার করে সিস্টেম ক্যাটালগ এবং এক্সটেনশন প্রস্তুত করুন।sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb -
alloydbomni18systemd সার্ভিসটি সক্রিয় ও চালু করুন। যাচাই করুন যে আউটপুটেsudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running)দেখাচ্ছে।
৭. ডাটাবেস অপারেশন এবং টিডিই ডিস্ক এনক্রিপশন যাচাইকরণ
TDE ডাটাবেসের সাথে সংযোগ স্থাপন করুন, নমুনা রেকর্ড সন্নিবেশ করুন, ডিস্কে ডেটা লেখা বাধ্যতামূলক করতে একটি CHECKPOINT কার্যকর করুন, এবং সংরক্ষিত ডেটার এনক্রিপশন প্রমাণ করতে সরাসরি ডিস্ক স্ক্যান ( grep ) চালান।
-
psqlব্যবহার করেalloydbadminডাটাবেসের সাথে সংযোগ করুন।PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - একটি টেস্ট টেবিল তৈরি করুন, একটি গোপনীয় স্ট্রিং প্রবেশ করান এবং ডার্টি বাফারগুলিকে স্টোরেজে লেখার জন্য একটি চেকপয়েন্ট ট্রিগার করুন।
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; - সক্রিয় এনক্রিপশন স্থিতি, KEK অবস্থান এবং ব্লক মেট্রিক্স যাচাই করতে AlloyDB-এর অভ্যন্তরীণ TDE পরিসংখ্যান ভিউ
pgsnap.g$tde_statsকোয়েরি করুন। সক্রিয় 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 ফাইলের পাথ এবং এনক্রিপ্টেড ব্লক কাউন্টার নিশ্চিতকারী নমুনা আউটপুট:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) -
psqlথেকে প্রস্থান করুন।\q - TDE অন-ডিস্ক সুরক্ষা যাচাই করতে
/data1/18/base/এর অধীনে থাকা র ডেটাবেস স্টোরেজ ফাইলগুলিতে পাসকোড স্ট্রিংটি অনুসন্ধান করুন।sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
মূল যাচাইকরণের সারসংক্ষেপ:
- একটি নন-টিডিই ডাটাবেস ইনস্ট্যান্সে, টেবিল রিলেশন ফাইলগুলোর বিরুদ্ধে
grepচালালে ডিস্কে প্লেইন-টেক্সট স্ট্রিংটি প্রদর্শিত হয়। - একটি TDE-সক্ষম ডাটাবেস ইনস্ট্যান্সে,
grepকোনো ফলাফল দেখায় না, কারণ এর সমস্ত ডেটা ফাইল, ইনডেক্স, রাইট-অহেড লগ (WAL) এবং অস্থায়ী ডেটা সংরক্ষিত অবস্থায় AES ব্লক সাইফার দ্বারা সম্পূর্ণরূপে এনক্রিপ্ট করা থাকে।
৮. পরিচ্ছন্নতা
অনুশীলনগুলো সম্পন্ন করার পর, অনাকাঙ্ক্ষিত কম্পিউটিং চার্জ এড়াতে রিসোর্সগুলো পরিষ্কার করুন।
- আপনার ভিএম এসএসএইচ সেশন থেকে সংযোগ বিচ্ছিন্ন করুন।
exit - 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 - ফায়ারওয়াল নিয়ম এবং ক্লাউড 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
৯. অভিনন্দন
অভিনন্দন! আপনি AlloyDB Omni RPM কোডল্যাবের TDE সফলভাবে সম্পন্ন করেছেন।
আমরা যা আলোচনা করেছি
- কীভাবে স্টোরেজ ডিস্ক (
/data1,/obs) প্রোভিশন করতে হয়, সোয়াপ সেটআপ করতে হয় এবং XFS ফাইল সিস্টেম ফরম্যাট করতে হয়। - ফাইল কেএমএস ব্যবহার করে কীভাবে কী এনক্রিপশন কী তৈরি এবং পরিচালনা করবেন।
- RPM টুল ব্যবহার করে কীভাবে একটি TDE-সক্ষম AlloyDB Omni ক্লাস্টার ইনিশিয়ালাইজ এবং চালু করা যায়।
- সরাসরি র ডিস্ক পরিদর্শন (
grep) ব্যবহার করে স্থির অবস্থায় থাকা ডেটার এনক্রিপশন কীভাবে যাচাই করবেন।
আরও তথ্যের জন্য, AlloyDB Omni ডকুমেন্টেশন দেখুন।