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

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

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

إنّ الجهاز الافتراضي Compute Engine الذي ستستخدمه كخادم وسيط له مصدر الشبكة نفسه الذي تستخدمه Cloud VPN Gateway، ولهذا السبب يمكنك استخدام هذا الجهاز لمحاكاة إرسال الطلبات من عبء عمل محلي.
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 لقبول القيمة التلقائية
- هل تريد السماح باستدعاءات لم تتم مصادقتها إلى [partner-registration-service] (نعم/لا)؟ Y
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، هذا هو السلوك المتوقّع تمامًا. أصبحت خدمتك الآن أكثر أمانًا.
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 Workflows باستخدام Eventarc
- بدء معالجة الأحداث من Cloud Storage
- الاتصال بخدمة Private CloudSQL من Cloud Run
- الاتصال بقواعد البيانات المُدارة بالكامل من Cloud Run
- تأمين التطبيقات التي لا تستخدم خوادم من خلال خدمة Identity-Aware Proxy (IAP)
- تشغيل مهام Cloud Run باستخدام Cloud Scheduler
- النشر بشكل آمن على Cloud Run
- الاتصال بـ AlloyDB الخاص من GKE Autopilot
تَنظيم
لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، احذف المشروع الذي يحتوي على الموارد أو احتفظ بالمشروع واحذف الموارد الفردية.
حذف المشروع
أسهل طريقة لإيقاف الفوترة هي حذف المشروع الذي أنشأته لتنفيذ البرنامج التعليمي.
المراجع المفيدة
في ما يلي مراجع إضافية تساعدك في التعرّف أكثر على طبقتَي التحكّم في الوصول على Cloud Run.