1. مقدمة
تتيح لك قوائم عناوين IP المسماة في Google Cloud Armor الرجوع إلى قوائم عناوين IP ونطاقات IP التي يحتفظ بها مقدّمو خدمات تابعون لجهات خارجية. يمكنك ضبط قوائم عناوين IP المسماة ضمن سياسة أمان. ليس عليك تحديد كل عنوان IP أو نطاق عناوين IP يدويًا على حدة.
ما ستتعلمه
- مزايا قائمة عناوين IP المسماة في Cloud Armor
- إنشاء سياسة أمان في Cloud Armor
- نشر قائمة عناوين IP مسماة في Cloud Armor
- إنشاء جهاز موازنة حمل عالمي
- إنشاء مجموعة مثيلات مُدارة باستخدام نموذج تطبيق اختباري
المتطلبات
- خبرة في سياسات الأمان وأجهزة موازنة الحمل
2. السماح بالزيارات من مقدّمي الخدمات المسموح بهم من الجهات الخارجية فقط
تتمثّل إحدى حالات الاستخدام النموذجية في إنشاء القائمة المسموح بها التي تحتوي على عناوين IP الخاصة بشريك خارجي مسموح به لضمان أنّ الزيارات الواردة من هذا الشريك فقط يمكنها الوصول إلى جهاز موازنة الحمل والخوادم الخلفية.
على سبيل المثال، يحتاج مقدّمو خدمات شبكات توصيل المحتوى إلى سحب المحتوى من خوادم المصدر على فترات منتظمة لتوزيعه على ذاكرات التخزين المؤقت الخاصة بهم. توفّر الشراكة مع Google اتصالاً مباشرًا بين مقدّمي شبكات توصيل المحتوى (CDN) وحافة شبكة Google. يمكن لمستخدمي شبكة توصيل المحتوى (CDN) على Google Cloud استخدام هذا الاتصال المباشر أثناء عمليات جلب البيانات من المصدر. في هذه الحالة، قد يريد مستخدم شبكة توصيل المحتوى إنشاء سياسة أمان تسمح فقط بحركة البيانات الواردة من موفّر شبكة توصيل المحتوى المحدّد.
في هذا المثال، ينشر مقدّم خدمة شبكة توصيل المحتوى قائمة عناوين IP الخاصة به 23.235.32.0/20 و43.249.72.0/22 و⋯. يضبط مستخدم شبكة توصيل المحتوى قاعدة أمان لا تسمح إلا بزيارات واردة من عناوين IP هذه. نتيجةً لذلك، يُسمح بنقطتَي وصول لمزوّد شبكة توصيل المحتوى (23.235.32.10 و43.249.72.10)، وبالتالي يُسمح بنقل البيانات منهما. تم حظر الزيارات الواردة من نقطة الوصول غير المصرَّح بها 198.51.100.1.

عنوان IP مسمّى في Google Cloud Armor
3- تبسيط عملية الإعداد والإدارة باستخدام قواعد تم ضبطها مسبقًا
غالبًا ما يستخدم موفّرو شبكات توصيل المحتوى عناوين IP معروفة ويحتاج العديد من مستخدمي شبكات توصيل المحتوى إلى استخدامها. وتتغيّر هذه القوائم بمرور الوقت، حيث يضيف مقدّمو الخدمات عناوين IP ويزيلونها ويعدّلونها.
يؤدي استخدام قائمة عناوين IP مسماة في قاعدة سياسة الأمان إلى تبسيط عملية إعداد عناوين IP وإدارتها، لأنّ Google Cloud Armor يزامن المعلومات تلقائيًا من مقدّمي خدمات شبكة توصيل المحتوى (CDN) بشكل يومي. ويؤدي ذلك إلى إلغاء عملية الاحتفاظ بقائمة كبيرة من عناوين IP يدويًا، وهي عملية تستغرق وقتًا طويلاً وعُرضة للأخطاء.
مقدّمو قوائم عناوين IP
تتوفّر جهات توفير قوائم عناوين IP في الجدول التالي في Google Cloud Armor. هؤلاء هم مقدّمو خدمات شبكات توصيل المحتوى الذين عقدوا شراكة مع Google. يتم نشر قوائم عناوين IP الخاصة بها من خلال عناوين URL فردية متاحة للجميع.
يقدّم هؤلاء الشركاء قوائم منفصلة بعناوين IPv4 وعناوين IPv6. تستخدم خدمة Google Cloud Armor عناوين URL المقدَّمة لجلب القوائم، ثم تحوّل القوائم إلى قوائم عناوين IP مسماة. يمكنك الرجوع إلى القوائم من خلال الأسماء الواردة في الجدول.

بدلاً من ذلك، استخدِم Cloud Shell للحصول على قائمة بقوائم عناوين IP المسماة والمُعدّة مسبقًا.
تسجيل الدخول إلى Cloud Shell وتحديد projectid
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
من Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
يُرجع هذا الإجراء ما يلي:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. بنية الدرس التطبيقي حول الترميز

5- الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب).



تذكَّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس العملي باسم PROJECT_ID.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.
لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير من المال، إن لم تكلفك شيئًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "التنظيف" الذي ينصحك بكيفية إيقاف الموارد حتى لا تتحمّل رسومًا تتجاوز هذا البرنامج التعليمي. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس العملي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا ثابتًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا التمرين المعملي باستخدام متصفّح فقط.
6. إنشاء شبكة VPC
شبكة VPC
من Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
إنشاء شبكة فرعية
من Cloud Shell
gcloud compute networks subnets create named-ip-subnet \
--network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
إنشاء قواعد جدار الحماية
من Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
إنشاء جهاز موازنة الحمل
إنشاء نموذج الآلة الافتراضية
من Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
إنشاء مجموعة مثيلات مُدارة
من Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. التحقّق من الأنظمة الخلفية
تأكَّد من إنشاء مثيلات الأجهزة الافتراضية في كلتا المنطقتَين والوصول إلى مواقع HTTP الخاصة بها.
- في Compute Engine، انقر على "الآلات الافتراضية" في القائمة اليمنى.
- لاحظ المثيلات التي تبدأ بـ us-east1-mig. هذه المثيلات هي جزء من مجموعات المثيلات المُدارة.
- انقر على عنوان IP الخارجي لأحد مثيلات us-east1-mig. يجب أن يظهر لك عنوان IP للعميل (عنوان IP الخاص بك)، واسم المضيف (يبدأ بـ us-east1-mig).
إعداد موازنة حمل HTTP
- في Cloud Console، انقر على "قائمة التنقّل" (
) > "خدمات الشبكة" > "موازنة الحمل"، ثم انقر على "إنشاء جهاز موازنة حمل". - ضمن "موازنة حمل HTTP(S)"، انقر على "بدء الإعداد".

- اختَر "من الإنترنت إلى الأجهزة الافتراضية"، ثم انقر على "متابعة".
- اضبط الاسم على http-lb.
ضبط الواجهة الخلفية
توجّه خدمات الخلفية عدد الزيارات الواردة إلى خدمة خلفية واحدة أو أكثر من الخدمات الخلفية المرفقة. تتألف كل خلفية من مجموعة أجهزة افتراضية وبيانات وصفية إضافية لسعة العرض.
- انقر على "ضبط الواجهة الخلفية".
- بالنسبة إلى "خدمات الخلفية" و"حِزم الخلفية"، انقر على "إنشاء" أو "اختيار خدمات الخلفية وحِزم الخلفية"، ثم انقر على "خدمات الخلفية"، ثم انقر على "إنشاء خدمة خلفية".
- نوع الخلفية هو "مجموعة مثيلات"
- اضبط القيم التالية، واترك جميع القيم الأخرى على الإعدادات التلقائية:

- انقر على "تم".
- بالنسبة إلى "التحقّق من الصحة"، اختَر "إنشاء عملية تحقّق من الصحة".

- اضبط القيم التالية، واترك جميع القيم الأخرى على الإعدادات التلقائية:

- اضبط القيم التالية، واترك جميع القيم الأخرى على الإعدادات التلقائية:
- انقر على "حفظ ومتابعة".
- انقر على "إنشاء" لإنشاء خدمة الخلفية.

ضبط الواجهة الأمامية
تحدّد قواعد المضيف والمسار طريقة توجيه الزيارات. على سبيل المثال، يمكنك توجيه زيارات الفيديو إلى أحد الأنظمة الخلفية وتوجيه الزيارات الثابتة إلى نظام خلفي آخر. ومع ذلك، لن يتم ضبط قواعد المضيف والمسار في هذا التمرين العملي.
- انقر على "ضبط الواجهة الأمامية".
- http-front-end
- حدِّد ما يلي، مع ترك جميع القيم الأخرى على الإعداد التلقائي

- انقر على "تم".
8. مراجعة جهاز موازنة حمل HTTP وإنشاؤه
- انقر على "المراجعة والإنهاء".

- راجِع خدمات الخلفية وواجهة المستخدم.

- انقر على "إنشاء".
- انتظِر عدة دقائق حتى يتم إنشاء أداة موازنة الحمل
- انقر على اسم موازن التحميل (http-lb).
- دوِّن عنوان IPv4 لموازنة الحمل من أجل المهمة التالية، ويُشار إليه باسم http-lb.
9- التحقّق من نجاح الوصول غير المصرَّح به
قبل تنفيذ سياسة "عناوين IP المحدّدة"، تحقَّق من إمكانية الوصول غير المصرَّح به إلى موازن التحميل في المختبر وتطبيق الويب اللاحق. يُرجى العِلم أنّه بعد تنفيذ سياسة عناوين IP المسماة، سيقتصر الوصول إلى تطبيق الويب على مجموعة التعبيرات المتوفّرة.
- حدِّد عنوان IP لموازنة التحميل الذي تم إنشاؤه في الخطوة السابقة (http-lb) والصقه في متصفّح الويب. ستكون النتيجة مشابهة للقطة الشاشة أدناه.
ملاحظة: ستستغرق هذه الخطوة عدة دقائق، وبعد إنشاء صفحة الويب، سيكون عنوان IP للعميل من Google Front End، وليس عنوان IP لمحطة العمل.

من محطة العمل، نفِّذ عملية التحقّق المشابهة الموضّحة أدناه.
bash-3.2$ curl <load-balancer-IP>
10. مثال على الناتج
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. إعداد قائمة عناوين IP المسماة
إنشاء سياسة Cloud Armor جديدة لقائمة عناوين IP المسماة
من Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
من Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
تحديد عناوين "قوائم عناوين IP المسماة" المتوفّرة في شبكة توصيل المحتوى (CDN)
من Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
يُرجع هذا الإجراء ما يلي:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
من Cloud Shell، اضبط قائمة عناوين IP المسماة استنادًا إلى مجموعة التعبيرات المتاحة في شبكة توصيل المحتوى (CDN).
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('expression_set')" \
--action "allow"
مثال باستخدام cloudflare
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
--action "allow"
12. تطبيق سياسة أمان هيئة إصدار الشهادات (CA)
تطبيق سياسة أمان "هيئة إصدار الشهادات" والانتظار لعدة دقائق حتى يتم نشر السياسة العامة
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. التحقّق من صحة عنوان IP المسمّى
- بما أنّ سياسة الأمان مطبَّقة، لا يُسمح بالوصول إلى موازن التحميل من محطة العمل.
- لإجراء عملية التحقّق، افتح نافذة أوامر طرفية من محطة العمل ونفِّذ عملية curl لعنوان IP لموازنة التحميل. سيؤدي الإخراج من curl إلى ظهور رسالة الخطأ "403" Forbidden (ممنوع) لأنّ محطة العمل غير مصرح بها الآن.
من محطة العمل
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
خطوات إعادة الضبط
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. تهانينا!
تهانينا على إكمال هذا الدرس العملي.
المواضيع التي تناولناها
- مزايا قائمة عناوين IP المسماة في Cloud Armor
- إنشاء جهاز موازنة حمل عالمي
- إنشاء مجموعة مثيلات مُدارة باستخدام نموذج تطبيق اختباري
- إنشاء سياسة أمان في Cloud Armor
- نشر قائمة عناوين IP مسماة في Cloud Armor
- التحقّق من صحة سياسة Cloud Armor الخاصة بعناوين IP المسماة