בקרת גישה באמצעות IAM

כברירת מחדל, רק בעלי הפרויקט ועורכים יכולים ליצור, לעדכן, למחוק או להפעיל שירותים ועבודות, ורק בעלי הפרויקט ואדמינים של Cloud Run יכולים לשנות את מדיניות ניהול הזהויות והגישה (IAM) – למשל, כדי להפוך שירות לציבורי. פרטים נוספים זמינים במאמר בנושא תפקידי IAM ב-Cloud Run.

כדי לתת לישויות מורשות או לקבוצות אחרות את היכולת לבצע את הפעולות האלה, צריך להשתמש ב-IAM כדי לתת תפקידים לישויות מורשות שונות.

אם יצרתם או פרסתם פונקציות באמצעות פקודות של gcloud functions או ממשקי API של Cloud Functions v2 ואתם צריכים להשתמש באפשרויות האלה לצורך תאימות לאחור, כדאי לעיין במאמר בקרת גישה באמצעות IAM.

תפקידים מוגדרים מראש ב-Cloud Run

בהשוואה לתפקידים הבסיסיים (בעלים, עריכה וצפייה), לתפקידים המוגדרים מראש הבאים יש בקרת גישה פרטנית יותר למשאבי Cloud Run:

תפקיד תיאור
אדמין של Cloud Run‏ (roles/run.admin) יכול ליצור, לעדכן ולמחוק שירותים ועבודות, יכול לקבל, להציג ברשימה ולמחוק הפעלות של עבודות.
יכול להפעיל שירותים ועבודות, יכול לבטל הפעלות של עבודות.
יכול לקבל ולהגדיר מדיניות IAM.
יכול להציג, להחיל ולדחות המלצות.
נדרש הגדרה נוספת כדי לפרוס שירותים.
Cloud Run Developer (roles/run.developer) יכול ליצור, לעדכן ולמחוק שירותים ועבודות, יכול לקבל, להציג ברשימה ולמחוק ביצועים של עבודות.
יכול לקבל מדיניות IAM אבל לא להגדיר אותה.
יכול להציג, להחיל ולבטל המלצות.
בעל הרשאת צפייה ב-Cloud Run‏ (roles/run.viewer) יכולים לראות שירותים, משימות והרצות של משימות.
יכולים לקבל מדיניות IAM.
יכולים לראות המלצות.
הפעלת Cloud Run (roles/run.invoker) יכול להפעיל שירותים ומשימות, יכול לבטל הפעלות של משימות.

שליטה בגישה לשירות או למשרה ספציפיים

אפשר לשלוט בגישה לכל שירות או לכל משימה באמצעות IAM.

הוספת ישויות

אפשר להוסיף חשבונות משתמשים למשרה או לשירות.

הוספת גורמים מרכזיים לשירות

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

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

  2. לוחצים על תיבת הסימון לצד השירות שרוצים להוסיף לו ישויות. (לא לוחצים על השירות עצמו).

  3. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

  4. לוחצים על Add principal.

  5. בשדה New principals, מזינים את הזהות (או הזהויות) שצריכה גישה לשירות.

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

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

gcloud

משתמשים בפקודה gcloud run services add-iam-policy-binding:

gcloud run services add-iam-policy-binding SERVICE_NAME \
  --member=PRINCIPAL \
  --role=ROLE

כאשר SERVICE_NAME הוא שם השירות, PRINCIPAL הוא החשבון הראשי (למשל user:email@domain.com) ו-ROLE הוא התפקיד.

רשימת הערכים הקבילים של PRINCIPAL מופיעה במאמר מזהים של חשבונות משתמשים. רשימת הערכים הקבילים ל-ROLE מופיעה במאמר תפקידי IAM ב-Cloud Run.

הוספת חשבונות משתמש למשימה

כדי להוסיף חשבונות ראשיים למשרה:

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

  2. לוחצים על תיבת הסימון שמימין למשרה שרוצים להוסיף לה ישויות. (לא לוחצים על המשרה עצמה).

  3. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

  4. לוחצים על Add principal.

  5. בשדה New principals, מזינים את הזהות (או הזהויות) שצריכה גישה למשימה.

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

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

gcloud

משתמשים בפקודה gcloud run jobs add-iam-policy-binding:

gcloud run jobs add-iam-policy-binding JOB_NAME \
  --member=PRINCIPAL \
  --role=ROLE

כאשר JOB_NAME הוא שם התפקיד, PRINCIPAL הוא סוג החשבון הראשי (למשל user:email@domain.com), ו-ROLE הוא התפקיד.

רשימת הערכים הקבילים של PRINCIPAL מופיעה בדף המושגים של IAM. רשימת הערכים הקבילים ל-ROLE מופיעה במאמר תפקידי IAM ב-Cloud Run.

הסרת חשבונות ראשיים מתפקיד

אפשר להסיר ישויות משירות או מעבודה.

הסרת חשבונות ראשיים מתפקיד בשירות

כדי להסיר חשבונות ראשיים מתפקיד בשירות:

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

  2. לוחצים על תיבת הסימון שמימין לשירות שרוצים להסיר ממנו את הישויות. (לא לוחצים על השירות עצמו).

  3. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

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

  5. לוחצים על סמל פח האשפה delete לצד החשבון הראשי בתפקיד הרצוי כדי להסיר את התפקיד מהחשבון הראשי.

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

gcloud

משתמשים בפקודה gcloud run services remove-iam-policy-binding:

  gcloud run services remove-iam-policy-binding SERVICE_NAME \
    --member=PRINCIPAL \
    --role=ROLE

כאשר SERVICE_NAME הוא שם השירות, PRINCIPAL הוא סוג החשבון הראשי (למשל user:email@domain.com) ו-ROLE הוא התפקיד.

רשימת הערכים הקבילים של PRINCIPAL מופיעה בדף המושגים של IAM. רשימת הערכים הקבילים ל-ROLE מופיעה במאמר תפקידי IAM ב-Cloud Run.

הסרת חשבונות ראשיים מתפקיד במשימה

כדי להסיר חשבונות ראשיים מתפקיד במשימה:

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

  2. לוחצים על תיבת הסימון שמימין למשרה שרוצים להוסיף לה ישויות. (לא לוחצים על המשרה עצמה).

  3. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

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

  5. לוחצים על סמל פח האשפה delete לצד החשבון הראשי בתפקיד הרצוי כדי להסיר את התפקיד מהחשבון הראשי.

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

gcloud

משתמשים בפקודה gcloud run jobs remove-iam-policy-binding:

  gcloud run jobs remove-iam-policy-binding JOB_NAME \
    --member=PRINCIPAL \
    --role=ROLE

כאשר JOB_NAME הוא שם התפקיד, PRINCIPAL הוא סוג החשבון הראשי (למשל user:email@domain.com), ו-ROLE הוא התפקיד.

רשימת הערכים הקבילים של PRINCIPAL מופיעה בדף המושגים של IAM. רשימת הערכים הקבילים ל-ROLE מופיעה במאמר תפקידי IAM ב-Cloud Run.

הוספה או הסרה של משתמשים בצובר

אפשר להוסיף או להסיר כמה שירותים או משרות בבת אחת.

הוספה והסרה גורפות של חשבונות משתמשים לשירותים

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

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

  2. לוחצים על תיבת הסימון שמימין לשירות שרוצים להוסיף לו ישויות או להסיר ממנו ישויות. (לא לוחצים על השירות עצמו).

  3. בוחרים את השירות שרוצים להוסיף לו ישויות או להסיר ממנו ישויות.

  4. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

אם רוצים להוסיף ישויות:

  1. לוחצים על Add principal.

  2. בשדה New principals, מזינים את הזהות (או הזהויות) שצריכה גישה לשירות.

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

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

אם רוצים להסיר חשבונות ראשיים:

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

  2. לוחצים על סמל פח האשפה delete לצד החשבון הראשי בתפקיד הרצוי כדי להסיר את התפקיד מהחשבון הראשי.

  3. בתיבת הדו-שיח לאישור, יש לכם אפשרות להסיר את חשבון המשתמש מכל התפקידים בשירות. לוחצים על הסרה כדי להסיר את החשבון הראשי מהתפקיד.

gcloud

יוצרים מדיניות IAM:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        PRINCIPAL
      ]
    }
  ]
}
EOF

משתמשים בפקודה gcloud run services set-iam-policy:

gcloud run services set-iam-policy SERVICE_NAME policy.json

רשימת הערכים הקבילים של PRINCIPAL מופיעה בדף המושגים של IAM. רשימת הערכים הקבילים ל-ROLE מופיעה במאמר תפקידי IAM ב-Cloud Run.

הוספה והסרה גורפות של חשבונות משתמשים למשרות

כדי להוסיף או להסיר מספר משרות בבת אחת:

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

  2. לוחצים על תיבת הסימון שמימין למשרה שרוצים להוסיף לה ישויות. (לא לוחצים על המשרה עצמה).

  3. בוחרים את המשרה שרוצים להוסיף לה או להסיר ממנה גורמים.

  4. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

אם רוצים להוסיף ישויות:

  1. לוחצים על Add principal.

  2. בשדה New principals, מזינים את הזהות (או הזהויות) שצריכה גישה לשירות.

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

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

אם רוצים להסיר חשבונות ראשיים:

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

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

  3. בתיבת הדו-שיח לאישור, יש לכם אפשרות להסיר את החשבון מכל התפקידים בעבודה. לוחצים על הסרה כדי להסיר את החשבון הראשי מהתפקיד.

gcloud

יוצרים מדיניות IAM:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        PRINCIPAL
      ]
    }
  ]
}
EOF

משתמשים בפקודה gcloud run jobs set-iam-policy:

gcloud run jobs set-iam-policy JOB_NAME policy.json

רשימת הערכים הקבילים של PRINCIPAL מופיעה בדף המושגים של IAM. רשימת הערכים הקבילים ל-ROLE מופיעה במאמר תפקידי IAM ב-Cloud Run.

הצגת ישויות

אפשר לראות את חשבונות המשתמשים בשירותים ובמשימות.

הצגת חשבונות משתמש בשירות

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

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

  2. לוחצים על תיבת הסימון שמימין לשירות שרוצים לראות את העקרונות והתפקידים שלו. (לא לוחצים על השירות עצמו).

  3. בוחרים את השירות שרוצים לראות את החשבונות הראשיים והתפקידים שלו.

  4. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

  5. תוצג רשימה של תפקידים וחשבונות משתמשים, מקובצים לפי התפקיד שהוקצה.

gcloud

משתמשים בפקודה gcloud run services get-iam-policy:

gcloud run services get-iam-policy SERVICE_NAME

צפייה בעקרונות של משרה

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

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

  2. לוחצים על תיבת הסימון שמימין למשרה שרוצים להוסיף לה ישויות. (לא לוחצים על המשרה עצמה).

  3. בוחרים את העבודה שרוצים לראות את החשבונות הראשיים והתפקידים שלה.

  4. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

  5. תוצג רשימה של תפקידים וחשבונות משתמשים, מקובצים לפי התפקיד שהוקצה.

gcloud

משתמשים בפקודה gcloud run jobs get-iam-policy:

gcloud run jobs get-iam-policy JOB_NAME

שליטה בגישה לכל השירותים והמשימות בפרויקט

אם רוצים להקצות תפקידים לישויות מורשות בכל השירותים והמשימות בפרויקט, אפשר להשתמש בIAM ברמת הפרויקט.

ממשק המשתמש של המסוף

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

    כניסה למסוף Google Cloud

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

  3. לוחצים על סמל העריכה העיפרון בצד שמאל של השורה של חשבון המשתמש.

  4. לוחצים על Add another role ובוחרים את התפקיד הרצוי.

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

gcloud

משתמשים בפקודה gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=PRINCIPAL \
  --role=ROLE

כאשר PRINCIPAL הוא הגורם המרכזי (למשל user:email@domain.com) ו-ROLE הוא התפקיד (למשל roles/run.admin).

אי אפשר להחיל את סוגי החשבונות הראשיים allUsers ו-allAuthenticatedUsers ברמת הפרויקט, אלא צריך להוסיף אותם לכל שירות בנפרד.

הגדרת שירות כציבורי

יש שתי דרכים ליצור שירות ציבורי ב-Cloud Run:

  • משביתים את בדיקת ה-IAM של Cloud Run Invoker (מומלץ).
  • מקצים את תפקיד ה-IAM ‏Cloud Run Invoker לסוג החבר allUsers.

התפקידים הנדרשים

כדי להשבית או להפעיל מחדש את בדיקת ה-IAM של מי שמפעיל שירות, צריכות להיות לכם ההרשאות הבאות:

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

ההרשאות האלה כלולות בתפקיד אדמין של Cloud Run (roles/run.admin). רשימה מלאה של התפקידים וההרשאות שמשויכות אליהם מופיעה במאמר תפקידי IAM ב-Cloud Run.

השבתת בדיקת ה-IAM של Cloud Run Invoker

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

כדי להשבית את הבדיקה:

המסוף

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

    כניסה ל-Cloud Run

  2. אם אתם מגדירים שירות חדש, לוחצים על יצירת שירות וממלאים את הדף של הגדרות השירות הראשוניות לפי הצורך.

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

  3. לוחצים על Allow public access.

  4. לוחצים על יצירה או על שמירה.

gcloud

  • כדי ליצור שירות חדש, משתמשים בפקודה gcloud run deploy עם הדגל --no-invoker-iam-check:

    gcloud run deploy SERVICE_NAME --no-invoker-iam-check

    מחליפים את SERVICE_NAME בשם השירות.

  • בשביל שירות קיים, משתמשים בפקודה gcloud run services update עם הדגל --no-invoker-iam-check:

    gcloud run services update SERVICE_NAME --no-invoker-iam-check

מחליפים את SERVICE_NAME בשם השירות.

YAML

  1. כדי להציג ולהוריד את ההגדרות:

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את ההערה run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        annotations:
          run.googleapis.com/invoker-iam-disabled: 'true'
        name: SERVICE_NAME

    מחליפים את SERVICE_NAME בשם של שירות Cloud Run.

  3. מחליפים את השירות בהגדרה החדשה שלו באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

Terraform

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

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_service בקובץ התצורה של Terraform:
resource "google_cloud_run_v2_service" "default" {
   name     = "SERVICE"
   location = "REGION"
   invoker_iam_disabled = true

   template {
      containers {
      image = "IMAGE_URL"
      }
   }
}

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

  • SERVICE: השם של שירות Cloud Run.
  • REGION: האזור Google Cloud . לדוגמה, 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

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

הפעלה מחדש של בדיקת Cloud Run Invoker IAM

כדי להפעיל מחדש את הבדיקה:

המסוף

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

    כניסה ל-Cloud Run

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

  3. בוחרים באפשרות דרישת אימות ואז באפשרות ניהול זהויות והרשאות גישה (IAM).

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

gcloud

  • מעדכנים את השירות באמצעות הדגל --invoker-iam-check:

    gcloud run services update SERVICE_NAME --invoker-iam-check

    מחליפים את SERVICE_NAME בשם השירות.

YAML

  1. כדי להציג ולהוריד את ההגדרות:

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את ההערה run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invoker-iam-disabled: 'false'
        name: SERVICE_NAME

    מחליפים את SERVICE_NAME בשם של שירות Cloud Run.

Terraform

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

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_service בקובץ התצורה של Terraform:
resource "google_cloud_run_v2_service" "default" {
   name     = "SERVICE"
   location = "REGION"
   invoker_iam_disabled = false

   template {
      containers {
      image = "IMAGE_URL"
      }
   }
}

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

  • SERVICE: השם של שירות Cloud Run.
  • REGION: האזור Google Cloud . לדוגמה, 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

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

הגדרת מדיניות הארגון לבדיקת IAM של הפעלת Cloud Run

אדמינים יכולים להגביל את האפשרות להשבית את בדיקת ה-IAM של Invoker באמצעות האילוץ המנוהל constraints/run.managed.requireInvokerIam. האילוץ הזה לא נאכף כברירת מחדל.

מקצים את תפקיד ה-IAM Invoker ב-Cloud Run לסוג החבר allUsers

כדי לאפשר גישה ציבורית לשירות, צריך להקצות את תפקיד IAM של Cloud Run Invoker לסוג החבר allUsers.

כדי להגדיר אימות בשירות Cloud Run, צריכה להיות לכם הרשאת run.services.setIamPolicy. ההרשאה הזו כלולה בתפקיד 'אדמין של Cloud Run'. רשימה מלאה של התפקידים וההרשאות שמשויכות אליהם מופיעה במאמר תפקידי IAM ב-Cloud Run.

המסוף

בשירות Cloud Run קיים:

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

    כניסה למסוף Google Cloud

  2. מימין לשירות שרוצים להפוך לציבורי, לוחצים על תיבת הסימון. לא לוחצים על השירות עצמו.

  3. בחלונית המידע בפינה השמאלית העליונה, לוחצים על הכרטיסייה הרשאות. אם חלונית המידע לא מוצגת, יכול להיות שתצטרכו ללחוץ על Show Info Panel ואז על Permissions.

  4. לוחצים על Add principal.

בשדה New principals, מזינים את הערך allUsers.

  1. בתפריט Select a role (בחירת תפקיד), בוחרים בתפקיד Cloud Run Invoker (הפעלת Cloud Run).

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

  3. תתבקשו לאשר שאתם רוצים להפוך את המשאב הזה לציבורי. לוחצים על Allow public access כדי להחיל את השינוי על הגדרות IAM של השירות.

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

gcloud

כדי להפוך שירות לזמין לציבור, משתמשים בפקודה gcloud run services כדי להוסיף את סוג החבר המיוחד allUsers לשירות ולהעניק לו את התפקיד roles/run.invoker:

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

כדי שהשירות יהיה נגיש לכולם כשפורסים אותו, מריצים את הפקודה gcloud run deploy:

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

יוצרים קובץ בשם policy.yaml עם התוכן הבא:

bindings:
- members:
  - allUsers
  role: roles/run.invoker

כדי לאפשר גישה ציבורית ל-SERVICE הקיים באמצעות:

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

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

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_service בקובץ התצורה של Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

כדי לעדכן את הקישור של IAM בשירות roles/run.invoker, מוסיפים את ההפניה הבאה למשאב של שירות Cloud Run:

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

הקישור הזה הוא סמכותי רק לתפקיד הנתון. שאר ההרשאות ב-IAM במדיניות ה-IAM של השירות נשמרות.

שימוש בתנאי IAM בשירות

אתם יכולים להשתמש בתנאים של IAM כדי להגדיר ולאכוף בקרת גישה מותנית למשאבים ב-Cloud Run, על סמך מאפיינים. ‫Cloud Run תומך במאפייני התנאי (request.host) ו-(request.path) כדי להעניק גישה מותנית כשמפעילים שירותים של Cloud Run.

  • כדי להעניק גישה מותנית באמצעות המאפיינים request.host ו-request.path כשמפעילים שירותים של Cloud Run, מוסיפים את השדה condition כשמריצים את הפקודה הבאה:

    gcloud run services add-iam-policy-binding SERVICE_NAME \
     --member=PRINCIPAL \
     --role=ROLE \
     --region=REGION \
     --condition=[KEY=VALUE,...]
    

    מחליפים את:

    • SERVICE_NAME עם שם השירות (לדוגמה, my-service).
    • PRINCIPAL עם ה-principal (לדוגמה, user:email@domain.com).
    • ROLE עם התפקיד (לדוגמה, roles/run.invoker).
    • REGION עם האזור (לדוגמה, europe-west1).
    • KEY=VALUE עם תנאי להכללה בקישור. הדגל --condition חייב לכלול את צמדי מפתח/ערך expression ו-title.

השלבים הבאים

איך מאמתים בצורה מאובטחת מפתחים, שירותים ומשתמשים בשירותים שאובטחו זה עתה.