1. מבוא
סקירה כללית
ב-codelab הזה נסביר איך להפעיל שרת proxy לאימות זהויות (IAP) מ-Cloud Run ולאבטח את התעבורה שמיועדת לשירות Cloud Run באמצעות ניתוב ל-IAP לצורך אימות. אם מפעילים את IAP מ-Cloud Run, אפשר להפנות תנועה בלחיצה אחת מכל נתיבי הכניסה, כולל כתובות URL של run.app כברירת מחדל ומאזני עומסים.
ב-codelab הזה תפרסו את שירות קונטיינר hello. רק משתמשים שנכללים ברשימת ההיתרים באמצעות IAP יכולים לגשת לשירות.
מגבלות ידועות אחרות מפורטות במסמכי התיעוד של IAP ב-Cloud Run.
מה תלמדו
- איך מפעילים IAP בלחיצה אחת ב-Cloud Run
- איך מעניקים גישה לזהות משתמש לשירות Cloud Run דרך IAP
2. לפני שמתחילים
הפעלת ממשקי ה-API
לפני שמתחילים להשתמש ב-codelab הזה, מפעילים את ממשקי ה-API הבאים באמצעות הפקודה:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. יצירת משתני סביבה
הגדרת משתני סביבה שישמשו לאורך כל ה-codelab
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. בשלב הבא, תעניקו למשתמש גישה דרך IAP.
5. הגדרת בקרת גישה ל-IAP
יוצרים את סוכן השירות של IAP.
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
הקצאת התפקיד Cloud Run Invoker לחשבון השירות של 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
הערה: אפשר גם להשתמש בפרמטר member:your-group@example.com אם מעדיפים.
6. בדיקת האפליקציה
אימות הגישה לאפליקציה
מקבלים את כתובת ה-URL של שירות Cloud Run לדוגמה.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
פותחים את כתובת ה-URL בדפדפן. אמורה להופיע ההודעה 'It's Running! כל הכבוד, פרסת בהצלחה קובץ אימג' של קונטיינר ב-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. מעולה!
כל הכבוד, סיימתם את ה-Codelab!
מומלץ לעיין במסמכי התיעוד בנושא IAP ב-Cloud Run.
מה נכלל
- איך מפעילים IAP בלחיצה אחת ב-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.