1. مقدمة
نظرة عامة
يوضّح لك هذا الدرس التطبيقي حول الترميز كيفية تفعيل Identity-Aware Proxy من Cloud Run وتأمين عدد الزيارات المتّجهة إلى إحدى خدمات Cloud Run من خلال توجيهها إلى IAP لإجراء المصادقة. من خلال تفعيل IAP من Cloud Run، يمكنك توجيه الزيارات بنقرة واحدة من جميع مسارات الدخول، بما في ذلك عناوين URL التلقائية في run.app وموازنات التحميل.
في هذا الدرس العملي، ستنشر خدمة حاوية hello. لا يمكن الوصول إلى الخدمة إلا للمستخدمين الذين تم إدراجهم في القائمة المسموح بها باستخدام IAP.
للاطّلاع على القيود المعروفة الأخرى، يُرجى الرجوع إلى مستندات "الوصول الآمن عبر الإنترنت" على Cloud Run.
أهداف الدورة التعليمية
- كيفية تفعيل ميزة "الشراء داخل التطبيق بنقرة واحدة" في Cloud Run
- كيفية منح هوية مستخدم إذن الوصول إلى خدمة Cloud Run من خلال IAP
2. قبل البدء
تفعيل واجهات برمجة التطبيقات
قبل البدء في استخدام هذا الدرس التطبيقي، فعِّل واجهات برمجة التطبيقات التالية من خلال تنفيذ ما يلي:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3- إنشاء متغيّرات بيئية
ضبط متغيّرات البيئة التي سيتم استخدامها في هذا الدرس التطبيقي حول الترميز
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>
export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")
4. نشر خدمة مع تفعيل IAP
أنشئ حساب الخدمة (المستخدَم كمعرّف خدمة Cloud Run) من خلال تنفيذ الأمر التالي:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
نفِّذ صورة حاوية hello مع تفعيل IAP.
gcloud beta run deploy ${SERVICE_NAME} \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--region=${REGION} \
--service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
--no-allow-unauthenticated \
--iap
ملاحظة: إذا حاولت الوصول إلى التطبيق الآن، ستظهر لك صفحة الخطأ You don't have access. في الخطوة التالية، ستمنح المستخدم إذن الوصول من خلال "الشراء داخل التطبيق".
5- ضبط عناصر التحكّم في الوصول إلى IAP
أنشئ وكيل خدمة IAP.
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
إسناد دور "مستدعي Cloud Run" إلى حساب خدمة IAP
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
منح المستخدم إذن الوصول من خلال السماح لمستخدمين أو مجموعات محدّدة باستخدام IAP
EMAIL_ADDRESS=<YOUR_EMAIL>
gcloud beta iap web add-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor \
--condition=None
ملاحظة: يمكنك أيضًا استخدام group:your-group@example.com في مَعلمة "العضو" إذا كنت تفضّل ذلك.
6. اختبار التطبيق
تأكيد إمكانية الوصول إلى التطبيق
احصل على عنوان URL لخدمة Cloud Run النموذجية.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
افتح عنوان URL في المتصفّح، وسيظهر لك "يعمل! تهانينا، لقد نشرت صورة حاوية بنجاح على Cloud Run"
تأكيد إزالة إذن الوصول إلى التطبيق
يمكنك إزالة إذن الوصول إلى التطبيق من خلال تنفيذ الأمر التالي.
gcloud beta iap web remove-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor
انتظِر بضع دقائق حتى يتم نشر سياسة IAM. الآن، جرِّب فتح عنوان URL في المتصفّح وستظهر لك صفحة الخطأ You don't have access.
7. تهانينا!
تهانينا على إكمال هذا الدرس العملي.
ننصحك بمراجعة مستندات IAP في Cloud Run.
المواضيع التي تناولناها
- كيفية تفعيل ميزة "الشراء داخل التطبيق بنقرة واحدة" في Cloud Run
- كيفية منح هوية مستخدم إذن الوصول إلى خدمة Cloud Run من خلال IAP
8. تَنظيم
لتجنُّب الرسوم غير المقصودة، مثلاً إذا تم استدعاء خدمات Cloud Run مرات أكثر من عدد مرات الاستدعاء المخصّصة لك شهريًا في Cloud Run في الطبقة المجانية، يمكنك حذف خدمة Cloud Run iap-example التي أنشأتها في الخطوة 6.
لحذف خدمة Cloud Run، انتقِل إلى Cloud Run Cloud Console على https://console.cloud.google.com/run واحذف الخدمة iap-example.
لحذف المشروع بأكمله، انتقِل إلى إدارة المراجع، واختَر مشروعك، ثم انقر على "حذف". إذا حذفت المشروع، عليك تغيير المشاريع في Cloud SDK. يمكنك الاطّلاع على قائمة بجميع المشاريع المتاحة من خلال تنفيذ gcloud projects list.