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

1. نظرة عامة

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

5aed47d10595c878.png

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

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

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

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

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

يتم اتصال المضيفين على الموقع من خلال شبكة VPC

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

31611f6a2f12fd0c.png

محاكاة حمولة عمل على الموقع باستخدام خادم قفزة في VPC

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

aebf22740c7a84f0.png

إنّ الجهاز الظاهري على Compute Engine الذي ستستخدمه كسجّال قفزة له مصدر الشبكة نفسه الذي يستخدمه بوابة Cloud VPN، ولهذا السبب يمكنك استخدامه لمحاكاة إرسال الطلبات من خلال حمولة عمل على الموقع.

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

إعداد البيئة حسب وتيرة الطالب واحتياجاته

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديله في أي وقت.
  • يكون معرّف المشروع فريدًا في جميع مشاريع 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] (نعم/لا)؟ نعم
gcloud run deploy 

عند اكتمال هذا الأمر، يتم إدراج عنوان URL لخدمة Cloud Run. ستظهر لك النتيجة على النحو التالي:

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 كسجّان قفزة

الخطوة التالية هي محاكاة الطلبات الواردة من خادم داخل المؤسسة من خلال بوابة Cloud 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. من المفترض أن ينجح هذا الطلب، لأنّه يتم تشغيل نسخة الجهاز الافتراضي في شبكة VPC الخاصة بمشروعك، وهي مصدر داخلي.

export SERVICE_URL=https://

curl ${SERVICE_URL}

من المفترض أن يظهر لك ما يلي:

Partner registration service: RUNNING

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

لقد شرح لك هذا البرنامج التعليمي كيفية استخدام إعدادات الدخول والحالات التي تستدعي ذلك. تشكّل إعدادات الدخول خطوة أولى رائعة إذا كنت تربط بين حمولة عمل على الموقع وCloud Run.

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

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

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

6- تهانينا!

تهانينا، لقد أكملت دورة codelab.

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

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

تَنظيم

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

حذف المشروع

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

مراجع مفيدة

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