בדף הזה מוסבר איך להפעיל את 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) בפרויקט -
הוספה או ניהול של רמות גישה לבקרת גישה מבוססת-הקשר:
- צפייה ב-Access Context Manager (
roles/accesscontextmanager.policyReader) בארגון, ו-Organization Viewer - צפייה בארגון (
roles/resourcemanager.organizationViewer) בארגון
- צפייה ב-Access Context Manager (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הפעלת IAP מ-Cloud Run
מומלץ להפעיל את IAP ישירות ב-Cloud Run.
מפעילים את IAP מ-Cloud Run באמצעות מסוף Google Cloud , Google Cloud CLI או Terraform.
המסוף
כשמפעילים את IAP ב-Cloud Run, נדרשות הרשאות כדי להפעיל את שירות Cloud Run. אם אתם מפעילים את IAP באמצעות מסוף Google Cloud , ההרשאה הזו ניתנת באופן אוטומטי על ידי הקצאת התפקיד Cloud Run Invoker (roles/run.invoker) לסוכן השירות של IAP.
כדי להפעיל את IAP מ-Cloud Run:
נכנסים ל-Cloud Run במסוף Google Cloud :
בתפריט הניווט של Cloud Run, לוחצים על Services:
אם אתם מגדירים שירות חדש, לוחצים על Deploy container וממלאים את דף הגדרות השירות הראשוני.
אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על הכרטיסייה Security.
בוחרים באפשרות Require authentication ואז באפשרות Identity-Aware Proxy (IAP).
אופציונלי: כדי לתת גישה למשתמשים, פועלים לפי ההוראות לניהול הגישה של משתמשים או קבוצות ל-IAP. אם נתקלתם בבעיות בהגדרת הגישה למשתמשים מחוץ לארגון, עיינו בקטע פתרון בעיות. כדי לשמור את ההגדרות האישיות, לוחצים על Save.
כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.
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" } } }מוסיפים את הקוד הבא כדי להקצות את התפקיד
roles/run.invokerלסוכן השירות של IAP.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 ל-Cloud Run נעשה שימוש בלקוח OAuth בניהול Google, שמאפשר להוסיף זהויות בתוך הארגון באמצעות כתובת אימייל שמשויכת למשתמש. אתם יכולים גם לנהל חשבונות משתמשים מחוץ לארגון או בלי ארגון, באמצעות מסוף Google Cloud ב-IAP, על ידי יצירת לקוח OAuth בהתאמה אישית, כפי שמתואר בשלבים הבאים.
אפשר להוסיף או להסיר את הגישה של IAP לשירות Cloud Run באמצעות מסוף Google Cloud , ה-CLI של gcloud או Terraform.
בתוך הארגון
המסוף
כדי להוסיף או להסיר גישה:
נכנסים לדף Cloud Run במסוף Google Cloud :
לוחצים על השירות שרוצים לשנות ואז על Security.
בקטע שרת proxy לאימות זהויות (IAP), לוחצים על עריכת המדיניות.
כדי להוסיף גישה, מזינים את חשבון המשתמש ואת רמת הגישה שרוצים להוסיף (אופציונלי), או משאירים את רמת הגישה ריקה. כדי לראות ולהוסיף רמות גישה, צריך את התפקידים הנדרשים ל-Access Context Manager.
כדי להסיר את הגישה כשיש רק חשבון משתמש אחד במדיניות, לוחצים על הסמל Delete policy לצד Access levels.
כדי להסיר חשבונות משתמשים ספציפיים מהמדיניות, לוחצים על הסמל 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, צריך לבצע את תהליך ההגדרה החד-פעמי הבא:
נכנסים לדף Cloud Run במסוף Google Cloud :
לוחצים על השירות הקיים שרוצים לשנות ואז על Security.
בדף פרטי האבטחה של שירות Cloud Run, בקטע IAP לוחצים על Edit policy.
לוחצים על Configure in IAP. ייפתח דף הגדרות המשאבים ב-IAP.
לוחצים על Configure consent screen כדי להגדיר את מסך ההסכמה ל-OAuth. בסוג הקהל, בוחרים באפשרות חיצוני.
כדי להגדיר את החיבור במהירות, לוחצים על יצירת פרטי כניסה באופן אוטומטי.
לחלופין, אפשר לפעול לפי ההוראות ליצירת מזהה לקוח OAuth. בוחרים באפשרות Custom OAuth ומזינים את מזהה הלקוח וסוד הלקוח בהתאמה אישית.
כדי לשמור את ההגדרות האישיות, לוחצים על Save.
עכשיו אפשר לחזור לשירות Cloud Run ב-Cloud Run כדי להוסיף חשבונות משתמשים מחוץ לארגון.
כדי להוסיף או להסיר גישה של משתמשים:
נכנסים לדף Cloud Run במסוף Google Cloud :
לוחצים על השירות שרוצים לשנות ואז על Security.
בקטע IAP, לוחצים על Edit policy.
כדי להוסיף גישה, מזינים את חשבון המשתמש ואת רמת הגישה שרוצים להוסיף, או משאירים את רמת הגישה ריקה. כדי לראות ולהוסיף רמות גישה, צריך את התפקידים הנדרשים ל-Access Context Manager.
כדי להסיר את הגישה כשיש רק חשבון משתמש אחד במדיניות, לוחצים על הסמל Delete policy לצד Access levels.
כדי להסיר חשבונות משתמשים ספציפיים מהמדיניות, לוחצים על הסמל 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.
-
אין ארגון
המסוף
כדי להוסיף או להסיר גישה:
נכנסים לדף Cloud Run במסוף Google Cloud :
לוחצים על השירות הקיים שרוצים לשנות ואז על Security.
בקטע IAP, לוחצים על Edit policy.
כדי להוסיף גישה, מזינים את חשבון המשתמש ואת רמת הגישה שרוצים להוסיף (אופציונלי). אפשר גם להשאיר את רמת הגישה ריקה. כדי לראות ולהוסיף רמות גישה, צריך שיהיו לכם התפקידים הנדרשים ל-Access Context Manager.
כדי להסיר את הגישה כשיש רק חשבון משתמש אחד במדיניות, לוחצים על הסמל Delete policy לצד Access levels.
כדי להסיר חשבונות משתמשים ספציפיים מהמדיניות, לוחצים על הסמל 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:
נכנסים לדף Cloud Run במסוף Google Cloud :
בוחרים את השירות שרוצים לשנות.
לוחצים על הכרטיסייה אבטחה.
מבטלים את הבחירה באפשרות שרת proxy לאימות זהויות (IAP). השירות מוגן על ידי מדיניות IAM. אבל אם אתם לא משתמשים ב-IAM, אתם יכולים לבחור באפשרות Allow Public access כדי לאפשר גישה ציבורית לשירות.
לוחצים על View diff & redeploy ואז על Deploy changes.
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 בהתאמה אישית
בפעם הראשונה שמפעילים את IAP, מומלץ להשתמש במסוף Google Cloud . כך תוכלו ליצור פרטי כניסה שנוצרו אוטומטית, ולא תצטרכו ליצור באופן ידני לקוח OAuth בהתאמה אישית. כשמפעילים את IAP ב-Cloud Run ישירות ממסוף Google Cloud , המערכת מגדירה באופן אוטומטי את לקוח ה-OAuth בהתאמה אישית ברמת הפרויקט.
אם אתם משתמשים ב-CLI של gcloud כדי לנהל את הגישה של משתמשים בלי ארגון, הפעילו את IAP ב-Cloud Run ישירות ממסוף Google Cloud או בצעו את השלבים בקטע הזה כדי ליצור באופן ידני לקוח OAuth בהתאמה אישית.
בתרחישים מתקדמים, כמו התאמה אישית של מסך ההסכמה או ניהול לקוחות OAuth ברמת הארגון, פועלים לפי השלבים הבאים.
הגדרת המותג
במסוף Google Cloud , נכנסים לדף Branding של OAuth:
לוחצים על שנתחיל?.
ממלאים את הטופס פרטי האפליקציה ולוחצים על הבא.
בקטע Audience, לוחצים על External.
ממלאים את שאר הטופס ולוחצים על יצירה.
יצירה ידנית של לקוח OAuth בהתאמה אישית
אם זו הפעם הראשונה שאתם מגדירים את פלטפורמת האימות של Google:
נכנסים לדף Clients במסוף Google Cloud :
אם מופיעה בקשה, לוחצים על Get started בדף הסקירה הכללית של Google Auth Platform.
- ממלאים את פרטי האפליקציה ולוחצים על הבא.
- בוחרים באפשרות חיצוני בתור סוג המשתמשים.
- ממלאים את הפרטים ליצירת קשר, מאשרים את התנאים ולוחצים על Create.
- לוחצים על Create client.
- ב-Application type, בוחרים באפשרות אפליקציית אינטרנט וממלאים את השם של לקוח ה-OAuth.
- לוחצים על יצירה.
- רושמים בצד את מזהה הלקוח ואת הסוד ולוחצים על אישור.
- לוחצים על השם של לקוח ה-OAuth החדש שנוצר כדי לערוך אותו.
- בשדה Authorized redirect URIs, מוסיפים את ה-URI הבא:
מחליפים אתhttps://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
CLIENT_IDבמזהה הלקוח ב-OAuth שיצרתם. - לוחצים על Save.
אם כבר הגדרתם את פלטפורמת האימות של Google:
נכנסים לדף Clients במסוף Google Cloud :
לוחצים על Create client.
ב-Application type, בוחרים באפשרות אפליקציית אינטרנט וממלאים את השם של לקוח ה-OAuth.
ממלאים את פרטי האפליקציה.
לוחצים על יצירה.
רושמים בצד את מזהה הלקוח ואת הסוד ולוחצים על אישור.
לוחצים על השם של לקוח ה-OAuth החדש שנוצר כדי לערוך אותו.
בשדה Authorized redirect URIs, מוסיפים את ה-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 בהתאמה אישית מוגדר כפנימי, אי אפשר לגשת אליו מחוץ לארגון.
כדי לעדכן את הגדרת המותג ל-external ולאפשר גישה לחשבונות משתמשים מחוץ לארגון באמצעות IAP:
במסוף Google Cloud , נכנסים לדף Audience בפלטפורמת האימות של Google:
בקטע סוג משתמש, לוחצים על הגדרה כחיצוני.
כשל בסוכן השירות גורם לשגיאה בהגדרת IAM
אם מפעילים את IAP בפרויקט חדש בפעם הראשונה, יכול להיות שתופיע השגיאה הבאה:
Setting IAM permissions failedהסיבה לכך היא שסוכן השירות של Cloud Run נכשל. כדי לפתור את הבעיה, צריך להפעיל מחדש את IAP או להגדיר את מדיניות ה-IAM באופן ידני.
המאמרים הבאים
- במאמר הפעלת IAP ל-Cloud Run מוסבר איך להפעיל את IAP משירות לקצה העורפי או ממאזן עומסים.
- אם נתקלתם בבעיות בהפעלת IAP ב-Cloud Run, תוכלו להיעזר במאמר פתרון בעיות.
- ניהול הגישה למשאבים שמאובטחים באמצעות IAP
- שימוש במדיניות הארגון כדי לשלוט בהפעלת IAP.