1. مقدمة
يوضّح هذا الدرس التطبيقي حول الترميز كيفية ضبط ميزة "تشفير البيانات الشفاف" (TDE) وتفعيلها على AlloyDB Omni باستخدام حِزم RPM. تشفّر TDE ملفات البيانات وسجلات الكتابة المسبقة (WAL) وملفات البيانات المؤقتة الساكنة، ما يوفّر حماية للبيانات من الوصول غير المصرَّح به إلى وسائط التخزين المادية الأساسية.
في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية توفير وحدات تخزين، وإعداد مجموعة AlloyDB Omni مفعَّلة باستخدام File KMS وتشغيلها، والتحقّق من تشفير البيانات غير النشطة في ملفات القرص.
المتطلبات الأساسية
- الوصول إلى مشروع Google Cloud وCloud Shell من "وحدة تحكّم Google Cloud"
- تم تثبيت Google Cloud SDK (
gcloud) وإعداده. للحصول على تفاصيل حول تثبيت gcloud، يُرجى الرجوع إلى gcloud-install.
ما ستتعلمه
- كيفية إنشاء جهاز Compute Engine ظاهري باستخدام قاعدة بيانات مخصّصة وأقراص احتياطية ومبادلة
- كيفية تنسيق وحدات تخزين (XFS) وضبط
/etc/fstabوإعداد مسارات البيانات - كيفية إنشاء مفاتيح تشفير المفاتيح (KEK) وإدارتها باستخدام File KMS
- كيفية تثبيت حِزم AlloyDB Omni RPM وأدوات عميل PostgreSQL
- كيفية بدء تشغيل مجموعة AlloyDB Omni مفعَّلة باستخدام TDE باستخدام أدوات إعداد RPM (
alloydbomni18-setup) و--tde-kek-url - كيفية التحقّق من التشفير على القرص باستخدام فحص الملفات الأولية (
grep)
المتطلبات
- يمكنك الحصول على رابط عنوان URL لحِزم AlloyDB Omni RPM من خلال إكمال نموذج الاشتراك في حِزم AlloyDB Omni RPM أو الرجوع إلى نظرة عامة على AlloyDB Omni على نظام التشغيل Linux. سيتم إرسال عنوان URL للمستودع إلى عنوان بريدك الإلكتروني المسجَّل.
- وحدة طرفية تعمل مع إمكانية الوصول إلى Google Cloud (يُنصح باستخدام Cloud Shell)
2. الإعداد والمتطلبات
إعداد المشروع
إنشاء مشروع على Google Cloud
- في وحدة تحكّم Google Cloud، في صفحة اختيار المشروع، اختَر مشروع Google Cloud أو أنشِئه.
- تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. كيفية التحقّق من تفعيل الفوترة في مشروع
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

- افتح وحدة تحكّم Google Cloud وانقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة. يمكنك أيضًا فتح Cloud Shell من خلال الضغط على
GثمSفي وحدة التحكّم، أو من خلال الانتقال إلى shell.cloud.google.com. - يستغرق توفير البيئة والاتصال بها عادةً بضع لحظات. عند اكتمال العملية، سيظهر لك موجّه أوامر جاهز لإدخال البيانات.

3- إنشاء جهاز Compute Engine الظاهري
في هذا القسم، ستنشئ جهازًا افتراضيًا (VM) على Compute Engine (GCE) يعمل بنظام التشغيل Rocky Linux 9 مع أقراص دائمة مخصّصة لبيانات قاعدة البيانات (/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" - بما أنّه يتم إنشاء الجهاز الظاهري بدون عنوان IP عام، عليك إعداد Cloud Router ومدخل Cloud NAT لتوفير إمكانية الوصول إلى الإنترنت الصادر من أجل تنزيل حِزم RPM. إذا كان هناك Cloud NAT في منطقة مشروعك، يمكنك المتابعة.
ملاحظة: إذا كانت هناك بوابة Cloud NAT في منطقتك، ستعرض منصة GCP رسالة تشير إلى أنّه تم إعداد 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 - أنشئ أقراصًا ثابتة إضافية لبيانات قاعدة البيانات والنسخ الاحتياطية ومساحة التبديل.
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 - وفِّر مثيل الجهاز الافتراضي 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. إعداد الأقراص وضبط النظام ومفتاح KMS للملفات
في هذا القسم، ستتصل بالجهاز الافتراضي، وتنسّق وحدات تخزين البيانات الدائمة وتثبّتها، وتضبط مساحة التبديل، وتعدّل SELinux، وتنشئ مفتاح تشفير مفتاح تشفير البيانات الشفافة (TDE) باستخدام File KMS.
- استخدِم بروتوكول النقل الآمن (SSH) للوصول إلى الجهاز الافتراضي من خلال Identity-Aware Proxy (IAP).
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 - حدِّد متغيّرات البيئة لدليل قاعدة البيانات وملف مفتاح 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>" - أنشئ أدلة تخزين لقاعدة البيانات وتخزين مفتاح File KMS.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - أنشئ مفتاح تشفير مفتاح (KEK) آمنًا من الناحية التشفيرية بحجم 32 بايت باستخدام OpenSSL لخدمة File KMS.
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
5- تثبيت حِزم AlloyDB Omni RPM
إعداد مستودعات الحِزم وتثبيت خادم قاعدة بيانات AlloyDB Omni إلى جانب أدوات PostgreSQL 18 العادية
ملاحظة: استبدِل $ALLOYDB_OMNI_REPOSITORY_URL بعنوان URL للمستودع الذي تم استلامه عبر البريد الإلكتروني بعد إكمال نموذج الاشتراك في AlloyDB Omni RPM. لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على AlloyDB Omni على Linux.
- أنشئ ملف إعداد مستودع YUM لـ 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 - عدِّل ذاكرة التخزين المؤقت لمستودع YUM وثبِّت حِزم RPM لخادم AlloyDB Omni 18.
sudo yum makecache sudo dnf install -y alloydbomni18 - ثبِّت مستودع Official 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 - امنح المستخدم
postgresملكية/data1ودليل مفاتيح KMS.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. تفعيل التشفير الشفاف للبيانات (TDE) في مجموعة
اضبط حصص الموارد وافتح منافذ جدار الحماية للمضيف، ثم ابدأ مجموعة AlloyDB Omni مع تفعيل ميزة "تشفير البيانات الشفاف" باستخدام مفتاح File KMS (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE").
- اضبط 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 - اضبط متغيرات بيئة المشرف واضبط مجموعة قواعد بيانات TDE باستخدام
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 - اضبط منفذ الخادم 5432 في
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - إعداد كتالوجات النظام والإضافات باستخدام
alloydbomni18-setup preparedbsudo 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).
7. عمليات قاعدة البيانات والتحقّق من تشفير القرص باستخدام TDE
اتّصِل بقاعدة بيانات TDE، وأدرِج سجلّات نموذجية، ونفِّذ CHECKPOINT لفرض كتابة البيانات على القرص، ونفِّذ عمليات فحص مباشرة للقرص (grep) لإثبات تشفير البيانات غير النشطة.
- اربط بقاعدة بيانات
alloydbadminباستخدامpsql.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; - استعلم عن طريقة عرض إحصاءات TDE الداخلية في AlloyDB
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 - ابحث عن ملفات تخزين قاعدة البيانات الأولية ضمن
/data1/18/base/عن سلسلة رمز المرور للتحقّق من حماية TDE على القرص.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
الخلاصة الرئيسية بشأن التحقّق من المفتاح:
- في مثيل قاعدة بيانات غير مشفَّر باستخدام TDE، يؤدي تنفيذ
grepعلى ملفات علاقات الجداول إلى عرض سلسلة النص العادي على القرص. - في مثيل قاعدة بيانات مفعَّل فيه التشفير الشفاف للبيانات، تعرض الدالة
grepصفر نتائج مطابقة لأنّ جميع ملفات البيانات والفهارس وسجلات الكتابة المسبقة (WAL) والبيانات المؤقتة تكون مشفَّرة بالكامل باستخدام تشفيرات AES في وضع عدم النشاط.
8. تنظيف
بعد إكمال التمارين، نظِّف الموارد لمنع فرض رسوم غير مرغوب فيها على الحوسبة.
- افصِل الاتصال بجلسة SSH للجهاز الافتراضي.
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 - احذف قواعد جدار الحماية وموارد بوابة 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.
المواضيع التي تناولناها
- كيفية توفير أقراص التخزين (
/data1و/obs) وإعداد مساحة التبديل وتنسيق أنظمة ملفات XFS - كيفية إنشاء مفاتيح تشفير المفاتيح وإدارتها باستخدام File KMS
- كيفية تهيئة مجموعة AlloyDB Omni مفعَّلة باستخدام TDE وبدء استخدامها باستخدام أدوات RPM
- كيفية التحقّق من تشفير البيانات غير النشطة باستخدام الفحص المباشر للأقراص الأولية (
grep)
لمزيد من المعلومات، يُرجى الرجوع إلى مستندات AlloyDB Omni.