בדף הזה מוסבר איך להפעיל את IAP ישירות בשירות Cloud Run ולאבטח את התעבורה שמיועדת לשירות Cloud Run על ידי ניתוב שלה ל-IAP לצורך אימות. אם מפעילים את IAP ישירות ב-Cloud Run, אפשר לאבטח את התנועה בלחיצה אחת מכל נתיבי הכניסה, כולל כתובות URL שמוגדרות כברירת מחדל ומאזני עומסים.run.app
כשמשלבים את IAP עם Cloud Run, אפשר לנהל את הגישה של משתמשים או קבוצות בדרכים הבאות:
- בתוך הארגון – הגדרת גישה למשתמשים שנמצאים באותו ארגון כמו שירות Cloud Run
- מחוץ לארגון – הגדרת גישה למשתמשים מארגונים שונים משירות Cloud Run שלכם
- No organization (ללא ארגון) – הגדרת גישה בפרויקטים שלא משויכים לארגון ב-Google
מגבלות ידועות
- אי אפשר להגדיר IAP גם במאזן העומסים וגם בשירות Cloud Run.
- מערכת Cloud Run אוכפת את מדיניות IAP לפני שהיא מבצעת בדיקות IAM בחשבון השירות של IAP. מכיוון ש-IAP מיירט בקשות ומחליף את הזהות של הגורם המקורי ששלח את הבקשה, יכול להיות ששירותים כמו Pub/Sub שמסתמכים על האימות שלהם ייכשלו.
לפני שמתחילים
מפעילים את IAP API:
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להפעלת IAP, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- אדמין Cloud Run (
roles/run.admin) בפרויקט -
כדי לתת גישה לשירות שמופעל בו IAP:
אדמין מדיניות IAP (
roles/iap.admin) בפרויקט -
יוצרים שירות עם IAP או מעדכנים שירות קיים כדי להפעיל IAP:
- קורא של Artifact Registry (
roles/artifactregistry.reader) בתמונות הקונטיינרים שנפרסו - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
- קורא של Artifact Registry (
-
כדי לתת גישה למשתמשים שלא שייכים לארגון ב-Google:
אדמין הגדרות IAP (
roles/iap.settingsAdmin) בפרויקט -
כדי לתת גישה למשתמשים מחוץ לארגון או למשתמשים שלא שייכים לארגון:
כלי העריכה של הגדרות OAuth (
roles/oauthconfig.editor) בפרויקט
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הפעלת IAP מ-Cloud Run
מומלץ להפעיל IAP ב-Cloud Run ישירות.
אפשר להפעיל את IAP מ-Cloud Run באמצעות מסוף Google Cloud , Google Cloud CLI או Terraform.
המסוף
כשמפעילים IAP ב-Cloud Run, IAP דורש הרשאות להפעלת שירות Cloud Run. אם מפעילים את IAP באמצעות מסוף Google Cloud , ההרשאה הזו ניתנת אוטומטית על ידי הקצאת התפקיד Cloud Run Invoker (roles/run.invoker) לסוכן השירות של IAP.
כדי להפעיל את IAP מ-Cloud Run:
נכנסים לדף Services של Cloud Run במסוף Google Cloud :
אם מגדירים שירות חדש, לוחצים על Deploy container (פריסת מאגר), ממלאים את הדף של הגדרות השירות הראשוניות לפי הצורך, ואז בוחרים באפשרות Require authentication (נדרש אימות). בוחרים באפשרות שרת proxy לאימות זהויות (IAP).
אם משנים שירות קיים, לוחצים על השירות, על הכרטיסייה אבטחה ואז על דרישת אימות. בוחרים באפשרות IAP.
זה שינוי אופציונלי. כדי להעניק גישה למשתמשים, פועלים לפי ההוראות לניהול גישה של משתמשים או קבוצות ל-IAP. אם נתקלתם בבעיות בהגדרת הגישה למשתמשים מחוץ לארגון, תוכלו להיעזר בקטע פתרון בעיות.
כדי לשמור את ההגדרות, לוחצים על Save.
כדי ליצור או לפרוס את השירות, לוחצים על יצירה או על פריסה.
gcloud
כדי להפעיל IAP ישירות מ-Cloud Run, מוסיפים את הדגל --iap כשפורסים את האפליקציה ומעניקים הרשאת הפעלה לסוכן השירות של IAP:
פורסים את שירות Cloud Run באמצעות אחת מהפקודות הבאות:
בשביל שירות חדש:
gcloud run deploy
SERVICE_NAME\ --region=REGION\ --image=IMAGE_URL\ --no-allow-unauthenticated \ --iapאם מפעילים את IAP בפעם הראשונה בפרויקט ללא ארגון, יכול להיות שתופיע האזהרה הבאה:
Deploying services with IAP enabled in a project without an organization may require initial setup via the Cloud Console. Please use the Cloud Run UI to enable IAP for the first time in the project.האזהרה הזו מופיעה כי אי אפשר ליצור לקוחות OAuth באופן פרוגרמטי. מומלץ להפעיל קודם את IAP ב-Cloud Run ישירות ממסוף Google Cloud , או להגדיר לקוח OAuth בהתאמה אישית, ואז להוסיף משתמשים באמצעות ה-CLI של gcloud.
בשירות קיים:
gcloud run services update
SERVICE_NAME\ --region=REGION\ --iapמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של שירות Cloud Run. -
REGION: השם של האזור ב-Cloud Run. לדוגמה,europe-west1. - IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. -
PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud .
-
נותנים לסוכן השירות של IAP הרשאת הפעלה:
gcloud run services add-iam-policy-binding
SERVICE_NAME\ --region=REGION\ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com \ --role=roles/run.invokerמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של שירות Cloud Run. -
REGION: השם של האזור ב-Cloud Run. לדוגמה,europe-west1. -
PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud .
-
זה שינוי אופציונלי. הוראות להענקת גישת משתמשים מופיעות במאמר ניהול גישת משתמשים או קבוצות בנושא IAP.
כדי לוודא שהשירות מוגדר עם IAP מופעל, מריצים את הפקודה הבאה:
gcloud run services describe
SERVICE_NAMEהפלט צריך לכלול את המחרוזת הבאה:
Iap Enabled: true
מעכשיו, IAP מנתב את כל התעבורה שמיועדת לשירות Cloud Run שהוגדר ל-IAP לצורך אימות, לפני שהוא מעביר אותה לקונטיינר.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
כדי להפעיל את IAP באמצעות Terraform, צריך לעדכן את הגדרת השירות ולהוסיף קישור למדיניות IAM כדי להעניק הרשאת הפעלה ל-IAP.
כדי להפעיל את IAP בשירות, מוסיפים את
iap_enabled = trueלמשאבgoogle_cloud_run_v2_serviceבהגדרות של Terraform:resource "google_cloud_run_v2_service" "default" { name = "cloudrun-iap-service" location = "europe-west1" ingress = "INGRESS_TRAFFIC_ALL" iap_enabled = true template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } }מוסיפים את השורה הבאה כדי לתת לסוכן השירות של IAP את התפקיד
roles/run.invoker.resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com" }מחליפים את
PROJECT_NUMBERבמספר הפרויקט.זה שינוי אופציונלי. כדי לאחזר את נתוני מדיניות ה-IAM הנוכחית, מוסיפים את הקוד הבא למשאב
google_cloud_run_v2_service_iam_policyבהגדרות של Terraform.data "google_cloud_run_v2_service_iam_policy" "policy" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name }
ניהול הרשאות גישה של משתמשים או קבוצות
כברירת מחדל, IAP ל-Cloud Run משתמש בלקוח OAuth שמנוהל על ידי Google, שמאפשר לכם להוסיף זהויות בארגון עם כתובת אימייל שמשויכת למשתמש. אפשר גם לנהל ישויות מחוץ לארגון או בלי ארגון, באמצעות Google Cloud המסוף ב-IAP. לשם כך צריך ליצור לקוח OAuth מותאם אישית, כמו שמתואר בשלבים הבאים.
אפשר להוסיף או להסיר גישה ל-IAP לשירות Cloud Run באמצעות מסוף Google Cloud , ה-CLI של gcloud או Terraform.
בתוך הארגון
המסוף
כדי להוסיף או להסיר הרשאת גישה:
במסוף Google Cloud , נכנסים לדף Cloud Run:
לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.
בקטע IAP, לוחצים על Edit policy (עריכת המדיניות).
כדי להוסיף גישה, מזינים את החשבון הראשי ואת רמת הגישה שרוצים להוסיף (אפשר גם להשאיר את רמת הגישה ריקה).
כדי להסיר גישה כשיש רק גורם אחד במדיניות, לוחצים על סמל מחיקת המדיניות לצד רמות גישה.
כדי להסיר חשבונות משתמשים ספציפיים ממדיניות, לוחצים על סמל X לצד השם של החשבון שרוצים להסיר.
כדי לשמור את הגדרות המשתמש, לוחצים על Save.
gcloud
כדי להוסיף או להסיר גישה לשירות Cloud Run למשתמשים או לקבוצות ספציפיים, מריצים אחת מהפקודות הבאות:
כדי להוסיף הרשאת גישה:
gcloud iap web add-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAMEכדי להסיר את הגישה:
gcloud iap web remove-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAMEכדי לראות את הרשאות הגישה:
gcloud iap web get-iam-policy \ --region=
REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
USER_EMAIL: כתובת האימייל של המשתמש. -
REGION: השם של האזור ב-Cloud Run. -
SERVICE_NAME: השם של שירות Cloud Run.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
כדי להעניק גישה מהימנה לרשימה של חשבונות משתמשים:
אפשר להשתמש במשאב
google_iap_web_cloud_run_service_iam_bindingכדי להעניק תפקיד לרשימה סמכותית של חשבונות משתמשים. המשאב הזה מוודא שהתפקיד יינתן רק למשתמשים שמופיעים ברשימה. כל חשבון משתמש אחר שהוקצה לו התפקיד יוסר.מוסיפים את הטקסט הבא למשאב
google_iap_web_cloud_run_service_iam_bindingבהגדרות של Terraform.resource "google_iap_web_cloud_run_service_iam_binding" "binding" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" members = [ "PRINCIPAL_A", "PRINCIPAL_B" ] }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. -
REGION: האזור Google Cloud . לדוגמה,europe-west1. -
SERVICE_NAME: השם של שירות Cloud Run. -
PRINCIPAL: המזהה של החשבון הראשי או של המשתמש בקבוצה. בדרך כלל בצורה הבאה:PRINCIPAL_TYPE:ID. לדוגמה:user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.
-
כדי להעניק גישה לחשבון ראשי יחיד:
משתמשים במשאב
google_iap_web_cloud_run_service_iam_memberכדי לתת תפקיד לחשבון משתמש יחיד בלי להשפיע על חשבונות משתמש אחרים שיכול להיות שיש להם את אותו תפקיד.מוסיפים את הטקסט הבא למשאב
google_iap_web_cloud_run_service_iam_memberבהגדרות של Terraform.resource "google_iap_web_cloud_run_service_iam_member" "member" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" member = "PRINCIPAL" }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. -
REGION: האזור Google Cloud . לדוגמה,europe-west1. -
SERVICE_NAME: השם של שירות Cloud Run. -
PRINCIPAL: המזהה של החשבון הראשי או של המשתמש בקבוצה. בדרך כלל בצורה הבאה:PRINCIPAL_TYPE:ID. לדוגמה:user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.
-
מחוץ לארגון
המסוף
כדי להוסיף משתמשים מחוץ לארגון באמצעות IAP, צריך להשלים את תהליך ההגדרה הבא, שמתבצע רק פעם אחת:
במסוף Google Cloud , נכנסים לדף Cloud Run:
לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.
בדף פרטי האבטחה של שירות Cloud Run, בקטע IAP, לוחצים על עריכת המדיניות.
לוחצים על Configure in IAP (הגדרה ב-IAP). ייפתח דף הגדרות המשאב ב-IAP.
לוחצים על הגדרת מסך ההסכמה כדי להגדיר את מסך ההסכמה ל-OAuth. בסוג הקהל, בוחרים באפשרות External (חיצוני).
כדי להגדיר את הקישור במהירות, לוחצים על יצירת פרטי כניסה באופן אוטומטי.
אפשרות אחרת היא לפעול לפי ההוראות ליצירת מזהה לקוח OAuth. בוחרים באפשרות Custom OAuth (OAuth מותאם אישית) ומזינים את מזהה הלקוח והסוד המותאמים אישית.
כדי לשמור את ההגדרות, לוחצים על Save.
עכשיו אפשר לחזור לשירות Cloud Run ב-Cloud Run כדי להוסיף ישויות שאינן שייכות לארגון.
כדי להוסיף או להסיר גישת משתמשים, צריך לבצע את השלבים הבאים:
במסוף Google Cloud , נכנסים לדף Cloud Run:
לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.
בקטע IAP, לוחצים על Edit policy (עריכת המדיניות).
כדי להוסיף גישה, מזינים את החשבון הראשי, ואם רוצים, את רמת הגישה שרוצים להוסיף, או משאירים את רמת הגישה ריקה.
כדי להסיר גישה כשיש רק גורם אחד במדיניות, לוחצים על סמל מחיקת המדיניות לצד רמות גישה.
כדי להסיר חשבונות משתמשים ספציפיים ממדיניות, לוחצים על סמל X לצד השם של החשבון שרוצים להסיר.
כדי לשמור את הגדרות המשתמש, לוחצים על Save.
gcloud
לפני שמתחילים
- כדי להוסיף משתמשים מחוץ לארגון, צריך קודם להגדיר את לקוח OAuth}.
כדי להוסיף או להסיר גישה לשירות Cloud Run למשתמשים או לקבוצות ספציפיים, מריצים אחת מהפקודות הבאות:
כדי להוסיף הרשאת גישה:
gcloud iap web add-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAMEכדי להסיר את הגישה:
gcloud iap web remove-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAMEכדי לראות את הרשאות הגישה:
gcloud iap web get-iam-policy \ --region=
REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
USER_EMAIL: כתובת האימייל של המשתמש. -
REGION: השם של האזור ב-Cloud Run. -
SERVICE_NAME: השם של שירות Cloud Run.
Terraform
לפני שמתחילים
- כדי להוסיף נציגי משתמשים מחוץ לארגון, צריך קודם להגדיר את לקוח OAuth.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
כדי להעניק גישה מהימנה לרשימה של חשבונות משתמשים:
משתמשים במשאב
google_iap_web_cloud_run_service_iam_bindingכדי להעניק תפקיד לרשימה סמכותית של חשבונות משתמשים. המשאב הזה מבטיח שרק חברים ברשימה יקבלו את התפקיד. כל החשבונות הראשיים האחרים שקיבלו את התפקיד יוסרו.מוסיפים את הטקסט הבא למשאב
google_iap_web_cloud_run_service_iam_bindingבהגדרות של Terraform.resource "google_iap_web_cloud_run_service_iam_binding" "binding" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" members = [ "PRINCIPAL_A", "PRINCIPAL_B" ] }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. -
REGION: האזור Google Cloud . לדוגמה,europe-west1. -
SERVICE_NAME: השם של שירות Cloud Run. -
PRINCIPAL: המזהה של החשבון הראשי או של המשתמש בקבוצה. בדרך כלל בצורה הבאה:PRINCIPAL_TYPE:ID. לדוגמה:user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.
-
כדי להעניק גישה לחשבון ראשי יחיד:
משתמשים במשאב
google_iap_web_cloud_run_service_iam_memberכדי להעניק תפקיד לחשבון ראשי יחיד בלי להשפיע על חשבונות ראשיים אחרים שאולי יש להם את אותו תפקיד.מוסיפים את הטקסט הבא למשאב
google_iap_web_cloud_run_service_iam_memberבהגדרות של Terraform.resource "google_iap_web_cloud_run_service_iam_member" "member" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" member = "PRINCIPAL" }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. - REGION: האזור Google Cloud . לדוגמה,
europe-west1. - SERVICE_NAME: השם של שירות Cloud Run.
- PRINCIPAL: המזהה של החשבון הראשי או של המשתמש בקבוצה. בדרך כלל בצורה הבאה: PRINCIPAL_TYPE:ID. לדוגמה:
user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.
-
אין ארגון
המסוף
כדי להוסיף או להסיר הרשאת גישה:
במסוף Google Cloud , נכנסים לדף Cloud Run:
לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.
בקטע IAP, לוחצים על Edit policy (עריכת המדיניות).
כדי להוסיף גישה, מזינים את החשבון הראשי, ואם רוצים, את רמת הגישה שרוצים להוסיף, או משאירים את רמת הגישה ריקה.
כדי להסיר גישה כשיש רק גורם אחד במדיניות, לוחצים על סמל מחיקת המדיניות לצד רמות גישה.
כדי להסיר חשבונות משתמשים ספציפיים ממדיניות, לוחצים על סמל X לצד השם של החשבון שרוצים להסיר.
כדי לשמור את הגדרות המשתמש, לוחצים על Save.
gcloud
לפני שמתחילים
- כדי להוסיף משתמשים לפרויקט שלא משויך לארגון, צריך קודם לבצע את ההגדרה החד-פעמית של הגדרת לקוח OAuth בהתאמה אישית.
כדי להוסיף או להסיר גישה לשירות Cloud Run למשתמשים או לקבוצות ספציפיים, מריצים אחת מהפקודות הבאות:
כדי להוסיף הרשאת גישה:
gcloud iap web add-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAMEכדי להסיר את הגישה:
gcloud iap web remove-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAMEכדי לראות את הרשאות הגישה:
gcloud iap web get-iam-policy \ --region=
REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
USER_EMAIL: כתובת האימייל של המשתמש. -
REGION: השם של האזור ב-Cloud Run. -
SERVICE_NAME: השם של שירות Cloud Run.
Terraform
לפני שמתחילים
- כדי להוסיף נציגי משתמשים מחוץ לארגון, צריך קודם להגדיר את לקוח OAuth.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
כדי להעניק גישה מהימנה לרשימה של חשבונות משתמשים:
משתמשים במשאב
google_iap_web_cloud_run_service_iam_bindingכדי להעניק תפקיד לרשימה סמכותית של חשבונות משתמשים. המשאב הזה מבטיח שרק חברים ברשימה יקבלו את התפקיד. כל החשבונות הראשיים האחרים שקיבלו את התפקיד יוסרו.מוסיפים את הטקסט הבא למשאב
google_iap_web_cloud_run_service_iam_bindingבהגדרות של Terraform.resource "google_iap_web_cloud_run_service_iam_binding" "binding" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" members = [ "PRINCIPAL_A", "PRINCIPAL_B" ] }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. -
REGION: האזור Google Cloud . לדוגמה,europe-west1. -
SERVICE_NAME: השם של שירות Cloud Run. -
PRINCIPAL: המזהה של החשבון הראשי או של המשתמש בקבוצה. בדרך כלל בצורה הבאה:PRINCIPAL_TYPE:ID. לדוגמה:user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.
-
כדי להעניק גישה לחשבון ראשי יחיד:
משתמשים במשאב
google_iap_web_cloud_run_service_iam_memberכדי להעניק תפקיד לחשבון ראשי יחיד בלי להשפיע על חשבונות ראשיים אחרים שאולי יש להם את אותו תפקיד.מוסיפים את הטקסט הבא למשאב
google_iap_web_cloud_run_service_iam_memberבהגדרות של Terraform.resource "google_iap_web_cloud_run_service_iam_member" "member" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" member = "PRINCIPAL" }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. -
REGION: האזור Google Cloud . לדוגמה,europe-west1. -
SERVICE_NAME: השם של שירות Cloud Run. -
PRINCIPAL: המזהה של החשבון הראשי או של המשתמש בקבוצה. בדרך כלל בצורה הבאה:PRINCIPAL_TYPE:ID. לדוגמה:user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.
-
השבתת IAP מ-Cloud Run
אפשר להשבית את IAP באמצעות מסוף Google Cloud או ה-CLI של gcloud.
המסוף
כדי להשבית את IAP מ-Cloud Run:
במסוף Google Cloud , נכנסים לדף Cloud Run:
לוחצים על השירות הקיים שרוצים לשנות.
לוחצים על אבטחה ומבטלים את הסימון של IAP. השירות שלכם מוגן על ידי מדיניות IAM. אבל אם אתם לא משתמשים ב-IAM, אתם יכולים להגדיר את השירות כזמין לכולם על ידי בחירה באפשרות Allow Public access (מתן גישה לכולם).
כדי לשמור את ההגדרות, לוחצים על Save.
gcloud
כדי להשבית את IAP ישירות מ-Cloud Run, מוסיפים את הדגל --no-iap כשפורסים את האפליקציה, באופן הבא:
פורסים את שירות Cloud Run באמצעות אחת מהפקודות הבאות:
בשירות חדש:
gcloud run deploy
SERVICE_NAME\ --region=REGION\ --image=IMAGE_URL\ --no-iapבשירות קיים:
gcloud run services update
SERVICE_NAME\ --region=REGION\ --no-iapמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של שירות Cloud Run. -
REGION: השם של האזור ב-Cloud Run. - IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
-
כדי לוודא שהשירות שלכם לא מוגדר יותר עם IAP מופעל, מריצים את הפקודה הבאה:
gcloud run services describe
SERVICE_NAMEהפלט לא אמור להכיל יותר את המחרוזת הבאה:
Iap Enabled: true
מערכת IAP כבר לא מעבירה את כל התעבורה שמיועדת לשירות Cloud Run שהוגדר לאימות ב-IAP לפני שהיא מועברת אל הקונטיינר.
הגדרת לקוח OAuth מותאם אישית
מומלץ להשתמש במסוף Google Cloud כשמפעילים את הרכישות מתוך האפליקציה בפעם הראשונה. כך תוכלו ליצור פרטי כניסה באופן אוטומטי, בלי שתצטרכו ליצור לקוח OAuth מותאם אישית באופן ידני. כשמפעילים את IAP ב-Cloud Run ישירות מ Google Cloud המסוף, IAP מגדיר אוטומטית את לקוח OAuth בהתאמה אישית ברמת הפרויקט.
אם אתם משתמשים ב-CLI של gcloud כדי לנהל את הגישה של משתמשים שאין להם ארגון, אתם יכולים להפעיל את IAP ב-Cloud Run ישירות מ Google Cloud המסוף או לבצע את השלבים שבקטע הזה כדי ליצור באופן ידני לקוח OAuth בהתאמה אישית.
בתרחישים מתקדמים, כמו התאמה אישית של מסך ההסכמה או ניהול לקוחות OAuth ברמת הארגון, פועלים לפי השלבים הבאים.
הגדרת המותג
נכנסים לדף Branding של OAuth במסוף Google Cloud :
לוחצים על שנתחיל?
ממלאים את הטופס פרטי האפליקציה ולוחצים על הבא.
בקטע קהל, לוחצים על חיצוני.
ממלאים את שאר הטופס ולוחצים על יצירה.
יצירה ידנית של לקוח OAuth בהתאמה אישית
אם זו הפעם הראשונה שאתם מגדירים את פלטפורמת האימות של Google:
נכנסים לדף Clients במסוף Google Cloud :
אם מופיעה בקשה, לוחצים על תחילת העבודה בדף הסקירה הכללית של פלטפורמת האימות של Google.
- ממלאים את פרטי האפליקציה ולוחצים על הבא.
- בוחרים באפשרות חיצוני לסוג הקהל.
- ממלאים את הפרטים ליצירת קשר, מאשרים את התנאים ולוחצים על יצירה.
- לוחצים על Create client.
- ב-Application type בוחרים באפשרות אפליקציית אינטרנט וממלאים את השם של לקוח ה-OAuth.
- לוחצים על יצירה.
- רושמים את מזהה הלקוח ואת הסוד ולוחצים על OK (אישור).
- לוחצים על השם של לקוח ה-OAuth החדש שנוצר כדי לערוך אותו.
- בשדה Authorized redirect URIs (מזהי URI מורשים להפניה אוטומטית), מוסיפים את ה-URI הבא:
מחליפים אתhttps://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
CLIENT_IDבמזהה הלקוח ב-OAuth שיצרתם. - לוחצים על Save.
אם כבר הגדרתם את פלטפורמת האימות של Google:
נכנסים לדף Clients במסוף Google Cloud :
לוחצים על Create client.
ב-Application type בוחרים באפשרות אפליקציית אינטרנט וממלאים את השם של לקוח ה-OAuth.
ממלאים את פרטי האפליקציה.
לוחצים על יצירה.
רושמים את מזהה הלקוח ואת הסוד ולוחצים על OK (אישור).
לוחצים על השם של לקוח ה-OAuth החדש שנוצר כדי לערוך אותו.
בשדה Authorized redirect URIs (מזהי URI מורשים להפניה אוטומטית), מוסיפים את ה-URI הבא:
מחליפים אתhttps://iap.googleapis.com/v1/oauth/clientIds/
CLIENT_ID:handleRedirectCLIENT_IDבמזהה הלקוח ב-OAuth שיצרתם.לוחצים על Save.
החלת לקוח OAuth על IAP
אפשר להחיל את לקוח ה-OAuth ברמת הפרויקט או הארגון.
ברמת הפרויקט, פועלים לפי השלבים הבאים:
יוצרים קובץ בשם
iap_settings.yamlומוסיפים את התוכן הבא:access_settings: oauth_settings: client_id:
CLIENT_IDclient_secret:CLIENT_SECRETמריצים את הפקודה
gcloud iap settings setכדי להחיל את לקוח OAuth ברמת הפרויקט:gcloud iap settings set iap_settings.yaml --project=
PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
CLIENT_ID: מזהה הלקוח ב-OAuth ששמרתם בשלב הקודם. -
CLIENT_SECRET: הסוד ששמרתם בשלב הקודם. -
PROJECT_ID: מזהה הפרויקט.
ברמת הארגון, מבצעים את השלבים הבאים:
כדי להחיל את לקוח OAuth ברמת הארגון, מריצים את הפקודה
gcloud iap settings set:gcloud iap settings set iap_settings.yaml --organization=
ORGANIZATION_NUMBERמחליפים את מה שכתוב בשדות הבאים:
-
CLIENT_ID: מזהה הלקוח ב-OAuth ששמרתם בשלב הקודם. -
CLIENT_SECRET: הסוד ששמרתם בשלב הקודם. -
ORGANIZATION_NUMBER: מספר הארגון.
-
פתרון בעיות
בקטע הבא מוסבר איך לפתור בעיות ב-IAP באמצעות Cloud Run.
שגיאות בגישה מחוץ לארגון
אלה שגיאות שיכולות להופיע כשמגדירים גישה למשתמשים מחוץ לארגון.
גישת משתמשים מחוץ לארגון: מושבתת
כדי לוודא שהגישה מחוץ לארגון מושבתת, מומלץ להשבית אותה ברמת הפרויקט. יכול להיות שאמצעי בקרה ברמות אחרות (שירות, תיקייה או ארגון) יופיעו כהשבתה, גם אם הגישה זמינה.
המותג מוגדר כרגע כפנימי
הגישה מחוץ לארגון לא נתמכת כשמותג לקוח OAuth מותאם אישית מוגדר כ'פנימי'.
כדי לעדכן את הגדרת המותג ל'חיצוני' כדי לאפשר גישה למשתמשים מחוץ לארגון באמצעות IAP, פועלים לפי השלבים הבאים:
במסוף Google Cloud , עוברים לדף קהל בפלטפורמת האימות של Google:
בקטע סוג משתמש, לוחצים על הפיכה למשתמש חיצוני.
שגיאה בהגדרת IAM נגרמת בגלל כשל בסוכן השירות
הפעלת IAP בפרויקט חדש בפעם הראשונה עלולה לגרום לשגיאה הבאה:
Setting IAM permissions failedהסיבה לכך היא שהסוכן של שירות Cloud Run נכשל. כדי לפתור את הבעיה, צריך להפעיל מחדש את IAP או להגדיר את מדיניות ה-IAM באופן ידני.
המאמרים הבאים
- הוראות להפעלת IAP משירות קצה עורפי או ממאזן עומסים מופיעות במאמר הפעלת IAP ב-Cloud Run.
- אם נתקלתם בבעיות בהפעלת IAP ב-Cloud Run, תוכלו לעיין במאמר בנושא פתרון שגיאות.
- ניהול הגישה למשאבים שמוגנים על ידי IAP
- שימוש במדיניות ארגונית כדי לשלוט בהפעלת IAP.