قائمة عناوين IP المُسمّاة في Cloud Armor

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 هذه. نتيجةً لذلك، يُسمح بنقطتَي وصول لمزوّد شبكة توصيل المحتوى (CDN) (23.235.32.10 و43.249.72.10)، وبالتالي يُسمح بزياراتهما. تم حظر الزيارات الواردة من نقطة الوصول غير المصرَّح بها 198.51.100.1.

27243e72ee25ee16.png

عنوان 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 مسماة. يمكنك الرجوع إلى القوائم من خلال الأسماء الواردة في الجدول.

7e9c09a008e04656.png

بدلاً من ذلك، استخدِم 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. بنية الدرس التطبيقي حول الترميز

68a800f9adbf4570.png

5- الإعداد والمتطلبات

إعداد البيئة بالسرعة التي تناسبك

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

96a9c957bc475304.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.png

تذكَّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID.

  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.

لن تكلفك تجربة هذا الدرس البرمجي الكثير من المال، إن وُجدت تكلفة على الإطلاق. احرص على اتّباع أي تعليمات في قسم "التنظيف" الذي ينصحك بكيفية إيقاف الموارد حتى لا يتم تحصيل رسوم منك بعد هذا البرنامج التعليمي. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 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 الخاصة بها.

  1. في Compute Engine، انقر على "الآلات الافتراضية" في القائمة اليمنى
  2. لاحظ المثيلات التي تبدأ بـ us-east1-mig. هذه المثيلات هي جزء من مجموعات المثيلات المُدارة.
  3. انقر على عنوان IP الخارجي لأحد مثيلات us-east1-mig. يجب أن يظهر لك عنوان IP للعميل (عنوان IP الخاص بك) واسم المضيف (يبدأ بـ us-east1-mig)

ضبط جهاز موازنة الحمل عبر بروتوكول HTTP

  1. في Cloud Console، انقر على "قائمة التنقّل" ( mainmenu.png) > "خدمات الشبكة" > "موازنة الحمل"، ثم انقر على "إنشاء جهاز موازنة حمل".
  2. ضمن "موازنة حمل HTTP(S)"، انقر على "بدء الإعداد".

start_config.png

  1. اختَر "من الإنترنت إلى الأجهزة الافتراضية"، ثم انقر على "متابعة".
  2. اضبط الاسم على http-lb.

ضبط الواجهة الخلفية

توجّه خدمات الخلفية عدد الزيارات الواردة إلى خدمة خلفية واحدة أو أكثر من الخدمات الخلفية المرفقة. تتألف كل خلفية من مجموعة أجهزة افتراضية وبيانات وصفية إضافية حول سعة العرض.

  1. انقر على "ضبط الواجهة الخلفية".
  2. بالنسبة إلى "خدمات الخلفية" و"حِزم الخلفية"، انقر على "إنشاء" أو "اختيار خدمات الخلفية وحِزم الخلفية"، ثم انقر على "خدمات الخلفية"، ثم انقر على "إنشاء خدمة خلفية".
  3. نوع الخلفية هو "مجموعة مثيلات"
  4. اضبط القيم التالية، واترك جميع القيم الأخرى على الإعدادات التلقائية: 18bf7a852f0759ee.png
  5. انقر على "تم".
  6. بالنسبة إلى "التحقّق من الصحة"، انقر على "إنشاء عملية تحقّق من الصحة". health_check.png
    1. اضبط القيم التالية، واترك جميع القيم الأخرى على الإعدادات التلقائية: d2f85af1e988532b.png
  7. انقر على "حفظ ومتابعة".
  8. انقر على "إنشاء" لإنشاء خدمة الخلفية.

b00c217bf592f0.png

ضبط الواجهة الأمامية

تحدّد قواعد المضيف والمسار طريقة توجيه الزيارات. على سبيل المثال، يمكنك توجيه زيارات الفيديو إلى خلفية واحدة وتوجيه الزيارات الثابتة إلى خلفية أخرى. ومع ذلك، لن يتم ضبط قواعد المضيف والمسار في هذا التمرين العملي.

  1. انقر على "ضبط الواجهة الأمامية".
  2. http-front-end
  3. حدِّد ما يلي، مع ترك جميع القيم الأخرى على 51ae16211e72142f.png التلقائية
  4. انقر على "تم".

8. مراجعة جهاز موازنة الحمل عبر بروتوكول HTTP وإنشاؤه

  1. انقر على "المراجعة والإنهاء".

8efe5b462a80071d.png

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

30b06910bf7fae29.png

  1. انقر على "إنشاء".
  2. انتظِر عدة دقائق حتى يتم إنشاء أداة موازنة الحمل
  3. انقر على اسم موازن التحميل (http-lb).
  4. دوِّن عنوان IPv4 الخاص بموازن التحميل للمهمة التالية، ويُشار إليه باسم http-lb.

9. التحقّق من نجاح الوصول غير المصرَّح به

قبل تنفيذ سياسة "عناوين IP المحدّدة"، تحقَّق من إمكانية الوصول غير المصرَّح به إلى موازن التحميل في المختبر وتطبيق الويب اللاحق. يُرجى العِلم أنّه بعد تنفيذ سياسة عناوين IP المسماة، سيقتصر الوصول إلى تطبيق الويب على مجموعة التعبيرات المتوفّرة.

  1. حدِّد عنوان IP لموازنة التحميل الذي تم إنشاؤه في الخطوة السابقة (http-lb) والصقه في متصفّح الويب. ستكون النتيجة مشابهة لما هو موضّح في لقطة الشاشة أدناه.

ملاحظة: ستستغرق هذه الخطوة عدة دقائق، وبعد إنشاء صفحة الويب، سيكون عنوان IP للعميل من Google Front End، وليس عنوان IP لمحطة العمل.

f93410e9568f1f32.png

من محطة العمل، نفِّذ عملية التحقّق المشابهة الموضّحة أدناه.

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. تطبيق سياسة أمان هيئة التصديق

تطبيق سياسة أمان "المرجع المصدّق" والانتظار لعدة دقائق حتى يتم نشر السياسة العامة

gcloud compute backend-services update http-backend --security-policy ca-policy --global

13. التحقّق من صحة عنوان IP المسمّى

  1. بما أنّ سياسة الأمان مطبَّقة، لا يُسمح بالوصول إلى موازن التحميل من محطة العمل.
  2. للتحقّق من صحة ذلك، افتح نافذة أوامر طرفية من محطة العمل ونفِّذ طلب curl إلى عنوان IP لموازنة التحميل. سيؤدي الإخراج من curl إلى ظهور رسالة الخطأ "403 Forbidden" (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
  • التحقّق من صحة سياسة Named IP Cloud Armor