בדף הזה מוסבר איך להפעיל את IAP ישירות בשירות Cloud Run ולאבטח את התעבורה שמיועדת לשירות Cloud Run על ידי ניתוב שלה ל-IAP לצורך אימות. אם מפעילים את IAP ישירות ב-Cloud Run, אפשר לאבטח את התנועה בלחיצה אחת מכל נתיבי הכניסה, כולל כתובות URL שמוגדרות כברירת מחדל ומאזני עומסים.
כשמשלבים את 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:
נכנסים ל-Cloud Run במסוף Google Cloud :
בתפריט הניווט של Cloud Run, לוחצים על Services (שירותים).
אם מגדירים שירות חדש, לוחצים על Deploy container (פריסת מאגר) וממלאים את הגדרות השירות הראשוניות.
אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על הכרטיסייה אבטחה.
בוחרים באפשרות דרישת אימות ואז באפשרות שרת proxy לאימות זהויות (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. \ --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." }מחליפים את
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 for Cloud Run משתמש בלקוח OAuth שמנוהל על ידי Google, שמאפשר לכם להוסיף זהויות בארגון עם כתובת אימייל שמשויכת למשתמש. אפשר גם לנהל ישויות מחוץ לארגון או בלי ארגון, באמצעות Google Cloud המסוף ב-IAP. לשם כך צריך ליצור לקוח OAuth מותאם אישית, כמו שמתואר בשלבים הבאים.
אפשר להוסיף או להסיר גישה ל-IAP לשירות Cloud Run באמצעות מסוף Google Cloud , ה-CLI של gcloud או Terraform.
בתוך הארגון
המסוף
כדי להוסיף או להסיר הרשאת גישה:
במסוף Google Cloud , נכנסים לדף Cloud Run:
לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.
בקטע שרת proxy לאימות זהויות (IAP), לוחצים על עריכת המדיניות.
כדי להוסיף גישה, מזינים את החשבון הראשי ואת רמת הגישה שרוצים להוסיף (אפשר גם להשאיר את רמת הגישה ריקה).
כדי להסיר גישה כשיש רק גורם אחד במדיניות, לוחצים על סמל מחיקת המדיניות לצד רמות גישה.
כדי להסיר חשבונות משתמשים ספציפיים ממדיניות, לוחצים על סמל 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 = "/span>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 = "/span>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 = "/span>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:
בוחרים את השירות שרוצים לשנות.
לוחצים על הכרטיסייה אבטחה.
מבטלים את הבחירה באפשרות שרת proxy לאימות זהויות (IAP). השירות שלכם מוגן על ידי מדיניות IAM. עם זאת, אם אתם לא משתמשים ב-IAM, אתם יכולים להגדיר את השירות כזמין לכולם על ידי בחירה באפשרות Allow Public access (מתן גישה לכולם).
לוחצים על הצגת ההבדלים ופריסה מחדש ואז על פריסת השינויים.
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.