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

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

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

يحتوي الجهاز الافتراضي Compute Engine الذي ستستخدمه كخادم وسيط على مصدر الشبكة نفسه الذي تستخدمه بوابة Cloud VPN، ولهذا السبب يمكنك استخدام هذا الجهاز لمحاكاة إرسال الطلبات من عبء عمل محلي.
2. الإعداد والمتطلبات
إعداد بيئة الاختبار الذاتي
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديله في أي وقت.
- رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف المشروع (يتم تحديده عادةً على أنّه
PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. ولا يمكن تغييرها بعد هذه الخطوة وستبقى سارية طوال مدة المشروع. - للعلم، هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير من المال، إن وُجدت تكلفة على الإطلاق. لإيقاف الموارد كي لا يتم تحصيل رسوم منك بعد هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بأكمله. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
إعداد البيئة
- اضبط متغيّر بيئة على رقم تعريف المشروع لاستخدامه في الأوامر اللاحقة:
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ZONE=us-central1-a
- فعِّل واجهات برمجة التطبيقات المطلوبة لتنفيذ هذا الدرس التطبيقي.
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
compute.googleapis.com \
artifactregistry.googleapis.com
- استنساخ مستودع التطبيق النموذجي والانتقال إلى الدليل
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git
cd cymbal-eats/partner-registration-service
- ضبط المنطقة والمنطقة التلقائيتَين لخدمتَي Compute Engine وCloud Run
gcloud config set compute/region ${REGION}
gcloud config set run/region ${REGION}
gcloud config set compute/zone ${ZONE}
3- تفعيل الخدمة
عليك أولاً نشر الخدمة وإتاحتها للجميع. بعد التأكّد من إمكانية إرسال الطلبات من المتصفّح، سنحظر الخدمة ولن نسمح إلا بالطلبات الواردة من مصادر الشبكة الداخلية.
عند تنفيذ الأمر التالي، اتّبِع التعليمات التالية:
- موقع رمز المصدر (...): تأكَّد من أنّك في دليل خدمة تسجيل الشركاء واضغط على Enter لقبول الإعداد التلقائي
- اسم الخدمة (partner-registration-service): اضغط على Enter لقبول القيمة التلقائية
- Allow unauthenticated invocations to [partner-registration-service] (y/N)? نعم
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 Service Controls) مثل خدمة Cloud Run، ما يجعلها مثالية لحالة الاستخدام هذه.
بالإضافة إلى ذلك، تُعتبَر الطلبات الواردة من منتجات Google Cloud الأخرى داخلية، حتى إذا لم تكن جزءًا من شبكة VPC. تشمل هذه المنتجات، على سبيل المثال، Pub/Sub وWorkflows.
تبقى الطلبات الواردة من هذه المصادر ضِمن شبكة Google، حتى إذا وصلت إلى خدمتك على عنوان URL run.app، ويُحظر الوصول إليها بشكل علني.
عدِّل الخدمة للسماح بالطلبات الداخلية فقط:
gcloud run services update partner-registration-service --ingress=internal
إذا فتحت عنوان URL الخاص بالخدمة مرة أخرى، ستظهر لك الرسالة "Error: Forbidden - Access is forbidden"
بما أنّ المتصفّح يرسل الطلب من مصدر شبكة خارجي وليس من مصدر داخلي لمشروع 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. تهانينا!
تهانينا، لقد أكملت درس البرمجة.
الخطوة التالية:
استكشِف دروسًا تطبيقية أخرى حول Cymbal Eats:
- تنفيذ مهام سير عمل Cloud باستخدام Eventarc
- تفعيل معالجة الأحداث من Cloud Storage
- الاتصال بخدمة CloudSQL الخاصة من Cloud Run
- الاتصال بقواعد بيانات مُدارة بالكامل من Cloud Run
- تأمين التطبيقات بدون خادم باستخدام Identity Aware Proxy (IAP)
- تشغيل مهام Cloud Run باستخدام Cloud Scheduler
- النشر بأمان على Cloud Run
- الاتصال بمثيل خاص من AlloyDB من GKE Autopilot
تَنظيم
لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، احذف المشروع الذي يحتوي على الموارد أو احتفظ بالمشروع واحذف الموارد الفردية.
حذف المشروع
أسهل طريقة لإيقاف الفوترة هي حذف المشروع الذي أنشأته لتنفيذ البرنامج التعليمي.
المراجع المفيدة
في ما يلي مراجع إضافية تساعدك في التعرّف أكثر على طبقتَي التحكّم في الوصول على Cloud Run.