1. مقدمة
تتيح لك قوائم عناوين IP المُسمّاة في Google Cloud Armor الإشارة إلى قوائم بعناوين IP ونطاقات عناوين IP التي يحتفظ بها مقدّمو الخدمات التابعون لجهات خارجية. يمكنك ضبط قوائم عناوين IP المُسَمّاة ضمن سياسة أمان. ليس عليك تحديد كل عنوان IP أو نطاق IP يدويًا بشكل فردي.
المعلومات التي ستطّلع عليها
- مزايا قائمة عناوين IP المُسمّاة في Cloud Armor
- إنشاء سياسة أمان في Cloud Armor
- نشر قائمة عناوين IP المُسمّاة في Cloud Armor
- إنشاء جهاز موازنة الحمل العالمي
- إنشاء مجموعة مثيلات مُدارة باستخدام نموذج تطبيق تجريبي
المتطلبات
- خبرة في تنفيذ سياسات الأمان وأجهزة موازنة الحمل
2. السماح بالزيارات من مقدّمي الخدمة التابعين لجهات خارجية فقط
تتمثل حالة الاستخدام المعتادة في إنشاء قائمة مسموح بها تحتوي على عناوين IP لشريك خارجي مسموح له، وذلك لضمان عدم وصول سوى الزيارات الواردة من هذا الشريك إلى جهاز موازنة الحمل والخلفيات.
على سبيل المثال، يحتاج موفرو شبكات توصيل المحتوى (CDN) إلى سحب المحتوى من خوادم المصدر على فترات زمنية منتظمة لتوزيعه على ذاكرات التخزين المؤقت الخاصة بهم. توفِّر الشراكة مع Google اتصالاً مباشرًا بين مزوّدي شبكة توصيل المحتوى (CDN) وحافة شبكة Google. يمكن لمستخدمي شبكة توصيل المحتوى (CDN) على Google Cloud استخدام هذا الاتصال المباشر أثناء عمليات سحب المصدر. في هذه الحالة، قد يرغب مستخدم شبكة توصيل المحتوى في إنشاء سياسة أمان تسمح فقط بالزيارات الواردة من موفر شبكة توصيل المحتوى (CDN) المحدد.
في هذا المثال، ينشر موفر شبكة توصيل المحتوى قائمة عناوين IP الخاصة به 23.235.32.0/20 و43.249.72.0/22 و⋯.. يضبط مستخدم شبكة توصيل المحتوى (CDN) قاعدة أمان لا تسمح إلا بالزيارات الواردة من عناوين IP هذه. ونتيجةً لذلك، يُسمح بنقطتين من مزوِّدي شبكة توصيل المحتوى (CDN) (23.235.32.10 و43.249.72.10) وبالتالي يتم السماح بهما. تم حظر حركة المرور من نقطة الوصول غير المصرح بها 198.51.100.1.
عنوان IP المُسمّى في Google Cloud Armor
3- تبسيط الإعداد والإدارة باستخدام قواعد مُعدَّة مسبقًا
غالبًا ما يستخدم موفرو شبكة توصيل المحتوى (CDN) عناوين IP معروفة ويحتاج العديد من مستخدمي شبكة توصيل المحتوى (CDN) إلى استخدامها. وتتغيّر هذه القوائم بمرور الوقت، حيث يضيف مقدّمو الخدمات عناوين IP ويزيلونها ويعدّلونها.
إنّ استخدام قائمة عناوين IP ذات أسماء معيّنة في قاعدة سياسة الأمان يبسّط عملية ضبط عناوين IP وإدارتها لأنّ Google Cloud Armor يعمل على مزامنة المعلومات تلقائيًا من مزوّدي شبكة توصيل المحتوى (CDN) بشكل يومي. ويؤدي ذلك إلى الحد من العملية التي تستغرق الكثير من الوقت والمعرضة للأخطاء للاحتفاظ بقائمة كبيرة من عناوين IP يدويًا.
موفِّرو قائمة عناوين IP
يتوفّر موفّرو قوائم عناوين IP في الجدول التالي مع Google Cloud Armor. هؤلاء هم مزودو شبكات توصيل المحتوى (CDN) الذين عقدوا شراكة مع Google. ويتم نشر قوائم عناوين IP لهذه الجهات من خلال عناوين URL الفردية المتاحة للجميع.
ويوفر هؤلاء الشركاء قوائم منفصلة بعناوين IPv4 وعناوين IPv6. تستخدم Google Cloud Armor عناوين URL المقدَّمة لجلب القوائم، ثم تحوّل القوائم إلى قوائم عناوين IP مُسمّاة. يمكنك الرجوع إلى القوائم من خلال الأسماء الواردة في الجدول.
بدلاً من ذلك، يمكنك استخدام Cloud Shell للحصول على قائمة بقوائم عناوين IP المُسمّاة التي تم ضبطها مسبقًا.
تسجيل الدخول إلى Cloudshell وضبط معرّف المشروع
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.
ضبط الواجهة الخلفية
توجّه خدمات الخلفية حركة البيانات الواردة إلى واجهة خلفية واحدة أو أكثر متصلة. تتألف كل واجهة خلفية من مجموعة مثيلات وبيانات وصفية إضافية لسعة العرض.
- انقر على إعدادات الخلفية.
- لخدمات الخلفية انقر على "إنشاء خدمات الخلفية أو تحديدها" ثم انقر فوق "خدمات الخلفية" (Backend services) ثم انقر على "إنشاء خدمة خلفية".
- نوع الخلفية هو مجموعة المثيلات
- اضبط القيم التالية، واترك جميع القيم الأخرى على إعداداتها التلقائية: .
- انقر على "تم".
- بالنسبة إلى ميزة "التحقّق من الصحة"، اختَر "إنشاء فحص صحّي".
- اضبط القيم التالية، واترك جميع القيم الأخرى على إعداداتها التلقائية: .
- انقر على "حفظ ومتابعة".
- انقر فوق "Create" (إنشاء) لإنشاء خدمة الخلفية.
ضبط الواجهة الأمامية
وتحدِّد قواعد المضيف والمسار كيفية توجيه الزيارات. على سبيل المثال، يمكنك توجيه زيارات الفيديو إلى إحدى الخلفيات، في حين يمكنك توجيه الزيارات الثابتة إلى واجهة خلفية أخرى. على الرغم من ذلك، ليس عليك ضبط قواعد المضيف والمسار في هذا التمرين المعملي.
- انقر على تهيئة الواجهة الأمامية.
- http-front-end
- حدِّد ما يلي، مع ترك جميع القيم الأخرى على مستوى التلقائي.
- انقر على "تم".
8. مراجعة وإنشاء جهاز موازنة حمل HTTP
- انقر فوق مراجعة وإنهاء.
- راجع خدمات الخلفية والواجهة الأمامية.
- انقر فوق إنشاء.
- الانتظار بضع دقائق حتى يتم إنشاء جهاز موازنة الحمل
- انقر على اسم جهاز موازنة الحمل (http-lb).
- دوِّن عنوان IPv4 لجهاز موازنة الحمل للمهمة التالية، ويُشار إليه باسم http-lb.
9. التحقّق من صحة الوصول غير المصرَّح به بنجاح
قبل تنفيذ سياسة "عنوان IP المُسمّى"، تأكَّد من نجاح الوصول غير المصرَّح به إلى جهاز موازنة المختبر وتطبيق الويب اللاحق. ملاحظة: بعد تنفيذ سياسة عنوان IP المُسمّاة، يقتصر الوصول إلى تطبيق الويب على مجموعة التعبيرات المُدارة.
- حدِّد عنوان IP لجهاز موازنة الحمل الذي تم إنشاؤه في الخطوة السابقة (http-lb) والصقه في متصفّح الويب. ستكون الإخراج مشابهة وفقًا للقطة الشاشة أدناه.
ملاحظة: ستستغرق هذه الخطوة عدة دقائق، بعد إنشاء صفحة الويب، يكون عنوان IP للعميل من واجهة Google الأمامية، وليس من عنوان 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 Amour لقائمة عناوين 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 المتاحة لقوائم عناوين 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)
طبِّق سياسة أمان مرجع تصديق (CA) وانتظر عدة دقائق حتى يتم نشر السياسة العامة.
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. التحقُّق من صحة عنوان IP المُسمّى
- بسبب تطبيق سياسة الأمان، لا يُسمَح بالوصول إلى جهاز موازنة الحمل من محطة العمل.
- للتحقّق من صحة ذلك، افتح نافذة طرفية من محطة العمل ونفِّذ عملية ربط لعنوان IP لجهاز موازنة الحمل. سيؤدي الناتج من الضفيرة إلى ظهور الخطأ "403". حدث خطأ محظور لأنّ محطة العمل الخاصة بك غير مسموح بها الآن.
من محطة العمل لديك
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
- التحقُّق من سياسة IP Cloud Armor المسماة