הגדרת IAP ל-Cloud Run

בדף הזה מוסבר איך להפעיל את 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, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

הפעלת 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:

  1. נכנסים לדף Services של Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. אם מגדירים שירות חדש, לוחצים על Deploy container (פריסת מאגר), ממלאים את הדף של הגדרות השירות הראשוניות לפי הצורך, ואז בוחרים באפשרות Require authentication (נדרש אימות). בוחרים באפשרות שרת proxy לאימות זהויות (IAP).

  3. אם משנים שירות קיים, לוחצים על השירות, על הכרטיסייה אבטחה ואז על דרישת אימות. בוחרים באפשרות IAP.

  4. זה שינוי אופציונלי. כדי להעניק גישה למשתמשים, פועלים לפי ההוראות לניהול גישה של משתמשים או קבוצות ל-IAP. אם נתקלתם בבעיות בהגדרת הגישה למשתמשים מחוץ לארגון, תוכלו להיעזר בקטע פתרון בעיות.

  5. כדי לשמור את ההגדרות, לוחצים על Save.

  6. כדי ליצור או לפרוס את השירות, לוחצים על יצירה או על פריסה.

gcloud

כדי להפעיל IAP ישירות מ-Cloud Run, מוסיפים את הדגל --iap כשפורסים את האפליקציה ומעניקים הרשאת הפעלה לסוכן השירות של IAP:

  1. פורסים את שירות 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 .
  2. נותנים לסוכן השירות של 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 .
  3. זה שינוי אופציונלי. הוראות להענקת גישת משתמשים מופיעות במאמר ניהול גישת משתמשים או קבוצות בנושא IAP.

  4. כדי לוודא שהשירות מוגדר עם IAP מופעל, מריצים את הפקודה הבאה:

    gcloud run services describe SERVICE_NAME

    הפלט צריך לכלול את המחרוזת הבאה:

    Iap Enabled: true

מעכשיו, IAP מנתב את כל התעבורה שמיועדת לשירות Cloud Run שהוגדר ל-IAP לצורך אימות, לפני שהוא מעביר אותה לקונטיינר.

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

כדי להפעיל את IAP באמצעות Terraform, צריך לעדכן את הגדרת השירות ולהוסיף קישור למדיניות IAM כדי להעניק הרשאת הפעלה ל-IAP.

  1. כדי להפעיל את 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"
        }
      }
    }
    
  2. מוסיפים את השורה הבאה כדי לתת לסוכן השירות של 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 במספר הפרויקט.

  3. זה שינוי אופציונלי. כדי לאחזר את נתוני מדיניות ה-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.

בתוך הארגון

המסוף

כדי להוסיף או להסיר הרשאת גישה:

  1. במסוף Google Cloud , נכנסים לדף Cloud Run:

    כניסה ל-Cloud Run

  2. לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.

  3. בקטע IAP, לוחצים על Edit policy (עריכת המדיניות).

  4. כדי להוסיף גישה, מזינים את החשבון הראשי ואת רמת הגישה שרוצים להוסיף (אפשר גם להשאיר את רמת הגישה ריקה).

  5. כדי להסיר גישה כשיש רק גורם אחד במדיניות, לוחצים על סמל מחיקת המדיניות לצד רמות גישה.

  6. כדי להסיר חשבונות משתמשים ספציפיים ממדיניות, לוחצים על סמל X לצד השם של החשבון שרוצים להסיר.

  7. כדי לשמור את הגדרות המשתמש, לוחצים על 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 כדי להעניק תפקיד לרשימה סמכותית של חשבונות משתמשים. המשאב הזה מוודא שהתפקיד יינתן רק למשתמשים שמופיעים ברשימה. כל חשבון משתמש אחר שהוקצה לו התפקיד יוסר.

    1. מוסיפים את הטקסט הבא למשאב 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 כדי לתת תפקיד לחשבון משתמש יחיד בלי להשפיע על חשבונות משתמש אחרים שיכול להיות שיש להם את אותו תפקיד.

    1. מוסיפים את הטקסט הבא למשאב 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, צריך להשלים את תהליך ההגדרה הבא, שמתבצע רק פעם אחת:

    1. במסוף Google Cloud , נכנסים לדף Cloud Run:

      כניסה ל-Cloud Run

    2. לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.

    3. בדף פרטי האבטחה של שירות Cloud Run, בקטע IAP, לוחצים על עריכת המדיניות.

    4. לוחצים על Configure in IAP (הגדרה ב-IAP). ייפתח דף הגדרות המשאב ב-IAP.

    5. לוחצים על הגדרת מסך ההסכמה כדי להגדיר את מסך ההסכמה ל-OAuth. בסוג הקהל, בוחרים באפשרות External (חיצוני).

    6. כדי להגדיר את הקישור במהירות, לוחצים על יצירת פרטי כניסה באופן אוטומטי.

    7. אפשרות אחרת היא לפעול לפי ההוראות ליצירת מזהה לקוח OAuth. בוחרים באפשרות Custom OAuth (‏OAuth מותאם אישית) ומזינים את מזהה הלקוח והסוד המותאמים אישית.

    8. כדי לשמור את ההגדרות, לוחצים על Save.

    עכשיו אפשר לחזור לשירות Cloud Run ב-Cloud Run כדי להוסיף ישויות שאינן שייכות לארגון.

  • כדי להוסיף או להסיר גישת משתמשים, צריך לבצע את השלבים הבאים:

    1. במסוף Google Cloud , נכנסים לדף Cloud Run:

      כניסה ל-Cloud Run

    2. לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.

    3. בקטע IAP, לוחצים על Edit policy (עריכת המדיניות).

    4. כדי להוסיף גישה, מזינים את החשבון הראשי, ואם רוצים, את רמת הגישה שרוצים להוסיף, או משאירים את רמת הגישה ריקה.

    5. כדי להסיר גישה כשיש רק גורם אחד במדיניות, לוחצים על סמל מחיקת המדיניות לצד רמות גישה.

    6. כדי להסיר חשבונות משתמשים ספציפיים ממדיניות, לוחצים על סמל X לצד השם של החשבון שרוצים להסיר.

    7. כדי לשמור את הגדרות המשתמש, לוחצים על 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 כדי להעניק תפקיד לרשימה סמכותית של חשבונות משתמשים. המשאב הזה מבטיח שרק חברים ברשימה יקבלו את התפקיד. כל החשבונות הראשיים האחרים שקיבלו את התפקיד יוסרו.

    1. מוסיפים את הטקסט הבא למשאב 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 כדי להעניק תפקיד לחשבון ראשי יחיד בלי להשפיע על חשבונות ראשיים אחרים שאולי יש להם את אותו תפקיד.

    1. מוסיפים את הטקסט הבא למשאב 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.

אין ארגון

המסוף

כדי להוסיף או להסיר הרשאת גישה:

  1. במסוף Google Cloud , נכנסים לדף Cloud Run:

    כניסה ל-Cloud Run

  2. לוחצים על השירות הקיים שרוצים לשנות ואז לוחצים על אבטחה.

  3. בקטע IAP, לוחצים על Edit policy (עריכת המדיניות).

  4. כדי להוסיף גישה, מזינים את החשבון הראשי, ואם רוצים, את רמת הגישה שרוצים להוסיף, או משאירים את רמת הגישה ריקה.

  5. כדי להסיר גישה כשיש רק גורם אחד במדיניות, לוחצים על סמל מחיקת המדיניות לצד רמות גישה.

  6. כדי להסיר חשבונות משתמשים ספציפיים ממדיניות, לוחצים על סמל X לצד השם של החשבון שרוצים להסיר.

  7. כדי לשמור את הגדרות המשתמש, לוחצים על 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 כדי להעניק תפקיד לרשימה סמכותית של חשבונות משתמשים. המשאב הזה מבטיח שרק חברים ברשימה יקבלו את התפקיד. כל החשבונות הראשיים האחרים שקיבלו את התפקיד יוסרו.

    1. מוסיפים את הטקסט הבא למשאב 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 כדי להעניק תפקיד לחשבון ראשי יחיד בלי להשפיע על חשבונות ראשיים אחרים שאולי יש להם את אותו תפקיד.

    1. מוסיפים את הטקסט הבא למשאב 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:

  1. במסוף Google Cloud , נכנסים לדף Cloud Run:

    כניסה ל-Cloud Run

  2. לוחצים על השירות הקיים שרוצים לשנות.

  3. לוחצים על אבטחה ומבטלים את הסימון של IAP. השירות שלכם מוגן על ידי מדיניות IAM. אבל אם אתם לא משתמשים ב-IAM, אתם יכולים להגדיר את השירות כזמין לכולם על ידי בחירה באפשרות Allow Public access (מתן גישה לכולם).

  4. כדי לשמור את ההגדרות, לוחצים על Save.

gcloud

כדי להשבית את IAP ישירות מ-Cloud Run, מוסיפים את הדגל --no-iap כשפורסים את האפליקציה, באופן הבא:

  1. פורסים את שירות 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 .
  2. כדי לוודא שהשירות שלכם לא מוגדר יותר עם 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 ברמת הארגון, פועלים לפי השלבים הבאים.

הגדרת המותג

  1. נכנסים לדף Branding של OAuth במסוף Google Cloud :

    מעבר לדף Branding

  2. לוחצים על שנתחיל?

  3. ממלאים את הטופס פרטי האפליקציה ולוחצים על הבא.

  4. בקטע קהל, לוחצים על חיצוני.

  5. ממלאים את שאר הטופס ולוחצים על יצירה.

יצירה ידנית של לקוח OAuth בהתאמה אישית

  • אם זו הפעם הראשונה שאתם מגדירים את פלטפורמת האימות של Google:

    1. נכנסים לדף Clients במסוף Google Cloud :

      מעבר אל "לקוחות"

    2. אם מופיעה בקשה, לוחצים על תחילת העבודה בדף הסקירה הכללית של פלטפורמת האימות של Google.

      1. ממלאים את פרטי האפליקציה ולוחצים על הבא.
      2. בוחרים באפשרות חיצוני לסוג הקהל.
      3. ממלאים את הפרטים ליצירת קשר, מאשרים את התנאים ולוחצים על יצירה.
      4. לוחצים על Create client.
      5. ב-Application type בוחרים באפשרות אפליקציית אינטרנט וממלאים את השם של לקוח ה-OAuth.
      6. לוחצים על יצירה.
      7. רושמים את מזהה הלקוח ואת הסוד ולוחצים על OK (אישור).
      8. לוחצים על השם של לקוח ה-OAuth החדש שנוצר כדי לערוך אותו.
      9. בשדה Authorized redirect URIs (מזהי URI מורשים להפניה אוטומטית), מוסיפים את ה-URI הבא:
        https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
        מחליפים את CLIENT_ID במזהה הלקוח ב-OAuth שיצרתם.
      10. לוחצים על Save.
  • אם כבר הגדרתם את פלטפורמת האימות של Google:

    1. נכנסים לדף Clients במסוף Google Cloud :

      מעבר אל "לקוחות"

    2. לוחצים על Create client.

    3. ב-Application type בוחרים באפשרות אפליקציית אינטרנט וממלאים את השם של לקוח ה-OAuth.

    4. ממלאים את פרטי האפליקציה.

    5. לוחצים על יצירה.

    6. רושמים את מזהה הלקוח ואת הסוד ולוחצים על OK (אישור).

    7. לוחצים על השם של לקוח ה-OAuth החדש שנוצר כדי לערוך אותו.

    8. בשדה Authorized redirect URIs (מזהי URI מורשים להפניה אוטומטית), מוסיפים את ה-URI הבא:

      https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
      מחליפים את CLIENT_ID במזהה הלקוח ב-OAuth שיצרתם.

    9. לוחצים על Save.

החלת לקוח OAuth על IAP

אפשר להחיל את לקוח ה-OAuth ברמת הפרויקט או הארגון.

  • ברמת הפרויקט, פועלים לפי השלבים הבאים:

    1. יוצרים קובץ בשם iap_settings.yaml ומוסיפים את התוכן הבא:

      access_settings:
        oauth_settings:
          client_id: CLIENT_ID
          client_secret: CLIENT_SECRET
    2. מריצים את הפקודה gcloud iap settings set כדי להחיל את לקוח OAuth ברמת הפרויקט:

      gcloud iap settings set iap_settings.yaml --project=PROJECT_ID

    מחליפים את מה שכתוב בשדות הבאים:

    • CLIENT_ID: מזהה הלקוח ב-OAuth ששמרתם בשלב הקודם.
    • CLIENT_SECRET: הסוד ששמרתם בשלב הקודם.
    • PROJECT_ID: מזהה הפרויקט.
  • ברמת הארגון, מבצעים את השלבים הבאים:

    1. כדי להחיל את לקוח 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, פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud , עוברים לדף קהל בפלטפורמת האימות של Google:

    עוברים אל 'קהל'

  2. בקטע סוג משתמש, לוחצים על הפיכה למשתמש חיצוני.

שגיאה בהגדרת IAM נגרמת בגלל כשל בסוכן השירות

הפעלת IAP בפרויקט חדש בפעם הראשונה עלולה לגרום לשגיאה הבאה:

Setting IAM permissions failed

הסיבה לכך היא שהסוכן של שירות Cloud Run נכשל. כדי לפתור את הבעיה, צריך להפעיל מחדש את IAP או להגדיר את מדיניות ה-IAM באופן ידני.

המאמרים הבאים