تأمين الزيارات الواردة من تشغيل السحابة الإلكترونية

1. نظرة عامة

يعرض لك هذا التمرين المعملي كيفية حظر الوصول إلى خدمة تشغيل السحابة الإلكترونية والسماح فقط بالطلبات الواردة من عبء عمل يتم تنفيذه داخل مقر الشركة أو في شبكة VPC الخاصة بمشروعك. هناك طبقتان من التحكُّم في الوصول يمكنك استخدامهما: إعدادات الدخول وسياسات إدارة الهوية وإمكانية الوصول (IAM).

5aed47d10595c878.png

إعدادات الدخول

تتيح لك إعدادات الدخول فلترة الطلبات استنادًا إلى مصدر الشبكة (داخلي أو خارجي). يتم تلقائيًا السماح بتمرير جميع الطلبات، بما في ذلك الطلبات الواردة من شبكة الإنترنت العامة.

سياسة إدارة الهوية وإمكانية الوصول

تتيح لك سياسات "إدارة الهوية وإمكانية الوصول" فلترة الطلبات بناءً على هوية المُرسِل، وهي تُستخدَم عادةً لمصادقة طلبات الخدمة إلى خدمة.

ستتعرّف في هذا التمرين المعملي على طريقة استخدام إعدادات الدخول وحالات استخدام هذه الإعدادات.

يتصل المضيفون داخل المؤسسة من خلال شبكة VPC.

سنحاكي عبء العمل داخل الشركة في هذا التمرين المعملي. لربط مضيف داخل الشركة بنظام التشغيل السحابي، يجب إعداد الوصول الخاص إلى Google للمضيفين في المؤسسة. ويشمل ذلك إعداد مدخل الشبكة الافتراضية الخاصة على السحابة الإلكترونية في شبكة VPC، كما هو موضّح أدناه.

31611f6a2f12fd0c.png

محاكاة عبء عمل داخل المؤسسة باستخدام خادم الانتقال السريع في VPC

في هذا التمرين، ستتم محاكاة إرسال الطلبات من مضيف داخل الشركة عن طريق إرسال الطلبات من جهاز Compute Engine الافتراضي في VPC، كما هو موضح هنا.

aebf22740c7a84f0.png

يجب أن يكون جهاز Compute Engine الافتراضي الذي ستستخدمه كخادم نقل بيانات له أصل الشبكة نفسه مثل بوابة الشبكة الافتراضية الخاصة في Cloud، ولهذا السبب يمكنك استخدام هذه الميزة لمحاكاة إرسال الطلبات من أعباء عمل داخل الشركة.

2. الإعداد والمتطلبات

إعداد بيئة ذاتية

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديله في أي وقت.
  • يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد تحديده). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الإشارة إلى رقم تعريف المشروع (يتم تحديده عادةً على أنّه PROJECT_ID). وإذا لم يعجبك المعرّف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. ويمكنك بدلاً من ذلك تجربة طلبك الخاص ومعرفة ما إذا كان متوفّرًا. ولا يمكن تغييره بعد هذه الخطوة وسيبقى طوال مدة المشروع.
  • لمعلوماتك، هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. لإيقاف تشغيل الموارد حتى لا تتحمل الفوترة بعد هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بالكامل. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

إعداد البيئة

  1. اضبط متغيّر بيئة على رقم تعريف المشروع لاستخدامه في الأوامر اللاحقة:
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ZONE=us-central1-a
  1. تمكين واجهات برمجة التطبيقات المطلوبة لتنفيذ هذا التمرين المعملي.
gcloud services enable \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  compute.googleapis.com \
  artifactregistry.googleapis.com
  1. استنسِخ نموذج مستودع التطبيقات وانتقِل إلى الدليل.
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git

cd cymbal-eats/partner-registration-service
  1. تحديد المنطقة والمنطقة التلقائيتَين لـ Compute Engine وCloud Run
gcloud config set compute/region ${REGION}
gcloud config set run/region ${REGION}
gcloud config set compute/zone ${ZONE}

3- نشر الخدمة

عليك أولاً نشر الخدمة وتركها متاحة للجميع. بعد التحقق من إمكانية إرسال طلبات من المتصفح، سيتم قفل الخدمة ولن نسمح بالطلبات سوى من مصادر الشبكة الداخلية.

عند تشغيل الأمر التالي، اتبع التعليمات التالية:

  • موقع رمز المصدر (...): تأكَّد من أنّك في دليل Partner-registration-service وانقر على Enter للموافقة على الإعدادات التلقائية.
  • اسم الخدمة (partner-registration-service): انقر على Enter لقبول القيمة التلقائية
  • هل تريد السماح بالاستدعاءات التي لم تتم مصادقتها إلى [partner-registration-service] (y/N)؟ س
gcloud run deploy 

عند اكتمال هذا الأمر، يتم عرض عنوان URL لخدمة تشغيل السحابة الإلكترونية. ستبدو النتيجة مشابهة لبطاقة البيانات التالية:

Service [partner-registration-service] revision [partner-registration-service-00001-haz] has been deployed and is serving 100 percent of traffic.
Service URL: https://partner-registration-service-ssssssssss-uc.a.run.app

افتح عنوان URL للخدمة في المتصفّح. من المفترض أن يظهر لك هذا الإخراج:

Partner registration service: RUNNING

ضبط الخدمة للسماح بالطلبات الداخلية فقط

والآن، يمكنك استخدام إعدادات الدخول إلى خدمة Cloud Run للسماح بالطلبات من المصادر الداخلية فقط. تتضمن المصادر الداخلية موارد في شبكات VPC داخل المشروع نفسه (أو محيط عناصر التحكّم في خدمة VPC) مثل خدمة Cloud Run، ما يجعلها مثالية لحالة الاستخدام لدينا.

بالإضافة إلى ذلك، تُعتبر الطلبات الواردة من منتجات Google Cloud الأخرى داخلية، حتى إذا لم تكن جزءًا من شبكة VPC. وتشمل هذه المنتجات على سبيل المثال Pub/Sub وWorkflows.

تبقى الطلبات الواردة من هذه المصادر ضمن شبكة Google، حتى إذا كانت تصل إلى خدمتك على عنوان URL لـ run.app، ويحظّر الوصول إليها بشكل علني.

يمكنك تحديث الخدمة للسماح بالطلبات الداخلية فقط:

gcloud run services update partner-registration-service --ingress=internal

إذا فتحت عنوان URL للخدمة مرة أخرى، سيظهر لك "خطأ: محظور - الوصول محظور"

هذا ما تتوقّع أن يحدث بالضبط بما أنّ المتصفِّح يرسل الطلب من مصدر شبكة خارجي، وليس من مصدر داخلي إلى مشروع Google Cloud. أصبحت خدمتك أكثر أمانًا الآن.

4. إنشاء آلة افتراضية في Compute Engine كخادم انتقال

تتمثل الخطوة التالية في محاكاة الطلبات الواردة من خادم داخل المؤسسة عبر بوابة شبكة افتراضية خاصة (VPN) على السحابة الإلكترونية، عن طريق إنشاء مثيل Compute Engine في VPC لاستخدامه كخادم نقل بيانات:

gcloud compute instances create jump-server --scopes=https://www.googleapis.com/auth/cloud-platform

ويجب أن تظهر نتيجة هذا الأمر على النحو التالي:

NAME         ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
jump-server  us-central1-a  n1-standard-1               10.128.0.10  34.170.108.8  RUNNING

إرسال طلب من النسخة الافتراضية من Compute Engine إلى الخدمة

ستفتح الآن محطة طرفية على الجهاز الافتراضي وسترسل طلبًا مباشرةً من الجهاز في شبكة VPC.

إذا طُلب منك إعداد بروتوكول النقل الآمن (SSH) في Cloud Shell، اتّبِع التعليمات التالية:

gcloud compute ssh jump-server

احصل على عنوان URL لخدمة Cloud Run باستخدام الأمر التالي:

gcloud run services describe partner-registration-service --region us-central1

يجب أن تبدو الأسطر القليلة الأولى من الإخراج على النحو التالي:

✔ Service partner-registration-service in region us-central1

URL:     https://partner-registration-service-ssssssssss-uc.a.run.app
Ingress: internal

يمكنك الآن نسخ عنوان URL وإرسال طلب من مثيل Compute Engine باستخدام أمر curl. من المفترض أن ينجح هذا الطلب، لأنّ مثيل الجهاز الافتراضي (VM) يعمل في شبكة VPC الخاصة بمشروعك، وهو مصدر داخلي.

export SERVICE_URL=https://

curl ${SERVICE_URL}

يجب أن يكون النص كما يلي:

Partner registration service: RUNNING

5- ماذا عن التحكّم في الوصول المستند إلى "إدارة الهوية وإمكانية الوصول"؟

عرضت هذه الميزة الاختبارية طريقة استخدام إعدادات الدخول وأوقات استخدامها. تعتبر إعدادات الدخول خطوة أولى رائعة في حال ربط عبء عمل داخل المؤسسة بنظام التشغيل Cloud.

يتطلب التحكّم في الوصول المستند إلى "إدارة الهوية وإمكانية الوصول" المزيد من الجهد لتنفيذه، خاصةً في حال الاتصال من مضيف داخل الشركة:

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

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

6- تهانينا!

تهانينا، لقد أنهيت الدرس التطبيقي حول الترميز.

الخطوة التالية:

اطّلع على الدروس التطبيقية الأخرى حول الترميز في Cymbal Eats:

تَنظيم

لتجنُّب تحمُّل الرسوم المفروضة على حسابك على Google Cloud مقابل الموارد المُستخدَمة في هذا الدليل التوجيهي، يمكنك إما حذف المشروع الذي يحتوي على الموارد أو الاحتفاظ بالمشروع وحذف الموارد الفردية.

حذف المشروع

أسهل طريقة لإزالة الفوترة هي حذف المشروع الذي أنشأته للبرنامج التعليمي.

مراجع مفيدة

في ما يلي موارد إضافية تساعدك في معرفة المزيد من المعلومات حول طبقتي التحكم في الوصول على Cloud Run.