מידע על Codelab זה
1. מבוא
סקירה כללית
בקודלאב הזה תלמדו איך להפעיל שרת proxy לאימות זהויות מ-Cloud Run ולאבטח את התנועה שמגיעה לשירות של Cloud Run על ידי ניתוב לאימות ב-IAP. הפעלת IAP מ-Cloud Run מאפשרת לכם לנתב תנועה בלחיצה אחת מכל נתיבי הקלט, כולל מאזני עומסים וכתובות URL של run.app שמוגדרות כברירת מחדל.
בקודלאב הזה פורסים את שירות הקונטיינר hello. רק משתמשים שנוספו לרשימת ההיתרים באמצעות IAP יכולים לגשת לשירות.
מידע על מגבלות נוספות זמין במסמכי התיעוד של IAP ב-Cloud Run.
מה תלמדו
- איך מפעילים IAP בלחיצה אחת ב-Cloud Run
- איך מעניקים לזהות משתמש גישה לשירות Cloud Run דרך IAP
2. לפני שמתחילים
הפעלת ממשקי API
לפני שמתחילים להשתמש בקודלאב הזה, צריך להפעיל את ממשקי ה-API הבאים:
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
. בשלב הבא תעניקו למשתמש גישה דרך 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
הערה: אם רוצים, אפשר גם להשתמש ב-group:your-group@example.com בפרמטר member.
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. מעולה!
כל הכבוד על השלמת ה-Codelab!
מומלץ לעיין במסמכי התיעוד של Cloud Run IAP.
מה עסקנו בו
- איך מפעילים IAP בלחיצה אחת ב-Cloud Run
- איך מעניקים לזהות משתמש גישה לשירות Cloud Run דרך IAP
8. הסרת המשאבים
כדי להימנע מחיובים לא מכוונים, לדוגמה, אם שירותי Cloud Run מופעלים בטעות יותר פעמים מההקצאה החודשית שלכם להפעלות של Cloud Run ברמה החינמית, אתם יכולים למחוק את שירות Cloud Run iap-example
שיצרתם בשלב 6.
כדי למחוק את שירות Cloud Run, נכנסים למסוף Cloud של Cloud Run בכתובת https://console.cloud.google.com/run ומוחקים את השירות iap-example
.
כדי למחוק את הפרויקט כולו, עוברים אל Manage Resources, בוחרים את הפרויקט ובוחרים באפשרות Delete. אם תמחקו את הפרויקט, תצטרכו לשנות את הפרויקטים ב-Cloud SDK. כדי להציג את רשימת כל הפרויקטים הזמינים, מריצים את הפקודה gcloud projects list
.