הגדרת IAP ל-Cloud Run

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

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

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

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

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

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Services:

    1. אם אתם מגדירים שירות חדש, לוחצים על Deploy container וממלאים את דף הגדרות השירות הראשוני.

    2. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על הכרטיסייה Security.

  3. בוחרים באפשרות Require authentication ואז באפשרות Identity-Aware Proxy (IAP).

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

  5. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.

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. \
      --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. מוסיפים את הקוד הבא כדי להקצות את התפקיד 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 במספר הפרויקט.

  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. נכנסים לדף Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

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

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

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

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

  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"
      }</span>
      

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

      • ‫PROJECT_ID: שם הפרויקט.
      • ‫REGION: האזור ב- Google Cloud . לדוגמה: europe-west1.
      • ‫SERVICE_NAME: השם של שירות Cloud Run.
      • ‫PRINCIPAL: המזהה של החשבונות הראשיים או של המשתמשים בקבוצה. בדרך כלל בצורה הבאה: PRINCIPAL_TYPE:ID. לדוגמה: user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.

מחוץ לארגון

המסוף

  • כדי להוסיף משתמשים מחוץ לארגון באמצעות IAP, צריך לבצע את תהליך ההגדרה החד-פעמי הבא:

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

      כניסה ל-Cloud Run

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

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

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

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

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

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

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

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

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

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

      כניסה ל-Cloud Run

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

    3. בקטע IAP, לוחצים על Edit policy.

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

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

    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"
      }</span>
      

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

      • ‫PROJECT_ID: שם הפרויקט.
      • ‫REGION: האזור ב- Google Cloud . לדוגמה: europe-west1.
      • ‫SERVICE_NAME: השם של שירות Cloud Run.
      • ‫PRINCIPAL: המזהה של החשבונות הראשיים או של המשתמשים בקבוצה. בדרך כלל בצורה הבאה: PRINCIPAL_TYPE:ID. לדוגמה: user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.

אין ארגון

המסוף

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

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

    כניסה ל-Cloud Run

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

  3. בקטע IAP, לוחצים על Edit policy.

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

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

  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"
      }</span>
      

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

      • ‫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. נכנסים לדף Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בוחרים את השירות שרוצים לשנות.

  3. לוחצים על הכרטיסייה אבטחה.

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

  5. לוחצים על View diff & redeploy ואז על Deploy changes.

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 בהתאמה אישית

בפעם הראשונה שמפעילים את IAP, מומלץ להשתמש במסוף Google Cloud . כך תוכלו ליצור פרטי כניסה שנוצרו אוטומטית, ולא תצטרכו ליצור באופן ידני לקוח OAuth בהתאמה אישית. כשמפעילים את IAP ב-Cloud Run ישירות ממסוף Google Cloud , המערכת מגדירה באופן אוטומטי את לקוח ה-OAuth בהתאמה אישית ברמת הפרויקט.

אם אתם משתמשים ב-CLI של gcloud כדי לנהל את הגישה של משתמשים בלי ארגון, הפעילו את IAP ב-Cloud Run ישירות ממסוף Google Cloud או בצעו את השלבים בקטע הזה כדי ליצור באופן ידני לקוח OAuth בהתאמה אישית.

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

הגדרת המותג

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

    מעבר לדף Branding

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

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

  4. בקטע Audience, לוחצים על External.

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

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

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

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

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

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

      1. ממלאים את פרטי האפליקציה ולוחצים על הבא.
      2. בוחרים באפשרות חיצוני בתור סוג המשתמשים.
      3. ממלאים את הפרטים ליצירת קשר, מאשרים את התנאים ולוחצים על Create.
      4. לוחצים על Create client.
      5. ב-Application type, בוחרים באפשרות אפליקציית אינטרנט וממלאים את השם של לקוח ה-OAuth.
      6. לוחצים על יצירה.
      7. רושמים בצד את מזהה הלקוח ואת הסוד ולוחצים על אישור.
      8. לוחצים על השם של לקוח ה-OAuth החדש שנוצר כדי לערוך אותו.
      9. בשדה Authorized redirect URIs, מוסיפים את ה-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. רושמים בצד את מזהה הלקוח ואת הסוד ולוחצים על אישור.

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

    8. בשדה Authorized redirect URIs, מוסיפים את ה-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 בהתאמה אישית מוגדר כפנימי, אי אפשר לגשת אליו מחוץ לארגון.

כדי לעדכן את הגדרת המותג ל-external ולאפשר גישה לחשבונות משתמשים מחוץ לארגון באמצעות IAP:

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

    מעבר לקהל

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

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

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

Setting IAM permissions failed

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

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