בקרת גישה באמצעות IAM (דור ראשון)
אתם (כלומר, המשתמש או חשבון השירות שמבצעים פריסה של הפונקציה) יכולים להגדיר בקרת גישה באמצעות תפקידים ברמת הפרויקט. מקצים תפקיד לחבר בפרויקט או לחשבון שירות כדי לקבוע את רמת הגישה לGoogle Cloud פרויקט ולמשאבים שלו. כברירת מחדל, כל הפרויקטים מגיעים עם משתמש אחד: יוצר הפרויקט המקורי. Google Cloud לאף משתמש אחר אין גישה לפרויקט, ולכן אין לו גישה לפונקציות, עד שמוסיפים משתמש כחבר בצוות הפרויקט.
בקרת גישה למשתמשים
אתם יכולים להוסיף משתמשים כחברי צוות לפרויקט ולהקצות להם תפקידים באמצעות ניהול זהויות והרשאות גישה (IAM).
פונקציות Cloud Run תומכות בתפקידים הבסיסיים עריכה, בעלים וצפייה, שמקנים את ההרשאות הבאות:
- עורך ובעלים: גישת קריאה וכתיבה לכל המשאבים שקשורים לפונקציות. מאפשר למשתמשים לפרוס, לעדכן ולמחוק פונקציות. גישה נוספת למשאבים אחרים בפרויקט.
- בעל הרשאת צפייה: גישה לקריאה בלבד לפונקציות ולמיקומים. מאפשרת למשתמשים לרשום פונקציות ולראות את הפרטים שלהן, אבל לא מאפשרת להם לראות את קוד המקור. גישה נוספת למשאבים אחרים בפרויקט.
פונקציות Cloud Run תומכות גם בתפקידים המוגדרים מראש Developer ו-Viewer של פונקציות Cloud Run, שמעניקים את ההרשאות הבאות:
- מפתח: גישת קריאה וכתיבה לכל המשאבים שקשורים לפונקציות. מאפשר למשתמשים לפרוס, לעדכן ולמחוק פונקציות. אין גישה למשאבים אחרים בפרויקט.
- בעל הרשאת צפייה: גישה לקריאה בלבד לפונקציות ולמיקומים. מאפשרת למשתמשים לרשום פונקציות ולראות את הפרטים שלהן, אבל לא מאפשרת להם לראות את קוד המקור. אין גישה למשאבים אחרים בפרויקט.
בקרת גישה לחשבונות שירות
חשבון שירות הוא סוג מיוחד של חשבוןGoogle Cloud שמשמש כזהות של משתמש לא אנושי שצריך לאמת ולאשר כדי לתת לו גישה לנתונים ולבצע פעולות שונות. חלק מהחשבונות האלה נוצרים ומנוהלים על ידי Google עצמה, והם נקראים סוכני שירות.
חשבונות השירות הבאים משמשים לפונקציות Cloud Run:
| שם | מספר חבר | תפקיד |
|---|---|---|
| חשבון השירות של App Engine שמוגדר כברירת מחדל | PROJECT_ID@appspot.gserviceaccount.com |
עריכה |
| סוכן שירות של Google Cloud Run | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
סוכן שירות של פונקציות Cloud Run |
| — | PROJECT_NUMBER@cloudbuild.gserviceaccount.com |
חשבון השירות של Cloud Build |
| חשבון השירות של Cloud Build | service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com |
סוכן שירות של Cloud Build |
| סוכן שירות של Google Container Registry | service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com |
סוכן שירות של Container Registry |
| סוכן שירות של Artifact Registry | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com |
סוכן שירות של Artifact Registry |
חשבונות שירות בזמן ריצה
בזמן הריצה, פונקציות Cloud Run משתמשות כברירת מחדל בחשבון השירות שמוגדר כברירת מחדל ב-App Engine (PROJECT_ID@appspot.gserviceaccount.com), שיש לו את התפקיד עריכה בפרויקט. אתם יכולים לשנות את התפקיד של חשבונות השירות האלה כדי להגביל או להרחיב את ההרשאות של הפונקציות הפעילות. אפשר גם לשנות את חשבון השירות שבו משתמשים על ידי ציון חשבון שירות ספציפי שאינו חשבון ברירת המחדל.
מידע נוסף על חשבונות שירות זמין במאמר חשבונות שירות.
חשבונות שירות אדמיניסטרטיביים
כדי לבצע פעולות ניהול בפרויקט במהלך יצירה, עדכון או מחיקה של פונקציות, כל הפרויקטים בפונקציות Cloud Run צריכים את חשבון השירות של סוכן השירות של Google Cloud Run functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com).
בנוסף, כל סביבות זמן הריצה מבצעות בנייה ואחסון של קובצי אימג' של קונטיינר בתוך הפרויקט שלכם. כדי לתמוך בכך, צריך גם להקצות את הפריטים הבאים:
- חשבון השירות הבסיסי של Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com) - חשבון השירות של סוכן השירות של Cloud Build (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com) - חשבון השירות של סוכן השירות של Google Container Registry (
service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com)
לחשבונות השירות האלה צריכים להיות התפקידים שמפורטים בטבלה שלמעלה.
חשבון השירות של סוכן השירות של פונקציות Cloud Run
כברירת מחדל, לחשבון השירות של סוכן השירות של פונקציות Cloud Run (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) מוקצה התפקיד cloudfunctions.serviceAgent בפרויקט.
הנה כמה מההרשאות הבולטות שבהן נעשה שימוש ב-cloudfunctions.serviceAgent:
| הרשאה | תיאור |
|---|---|
roles/artifactregistry.admin |
ניהול מאגרי מידע ואחסון תמונות של גרסאות build ב-Artifact Registry. |
roles/cloudbuild.builds.editor |
נדרש כדי להשתמש ב-Cloud Build לביצוע build בפרויקט המשתמש. |
roles/cloudbuild.customworkers.builder |
יצירת קומפילציות בעובדים בהתאמה אישית ב-Cloud Build. |
cloudfunctions.functions.invoke |
הפעלת פונקציית HTTP שמוגנת על ידי IAM. |
compute.globalOperations.get,compute.networks.access,vpcaccess.connectors.{get, use} |
הקצאת פונקציות עם גישה ל-VPC של פרויקטים של צרכנים. |
firebasedatabase.instances.{get, update} |
יצירת פונקציות שמופעלות על ידי מסד נתונים בזמן אמת ב-Firebase. |
iam.serviceAccounts.{actAs, getAccessToken, signBlob} |
אפשרות לקבל פרטי כניסה לחשבון שירות בזמן ריצה. |
iam.serviceAccounts.getOpenIdToken |
נדרש כדי שהסוכן יקבל טוקן OpenID ברשות שצוינה על ידי המשתמש. אסימון OpenID משמש להפעלת פונקציות שמופעל בהן IAM. |
pubsub.subscriptions |
ניהול מינויים בפרויקט של המשתמש. |
pubsub.topics |
ניהול נושאים בפרויקט של המשתמש. |
storage.buckets.{get, update} |
הגדרת התראות בקטגוריה של Cloud Storage שיוצרות טריגר לפונקציה. |
storage.buckets.create,storage.objects.{delete, get, create, list} |
נדרש לאחסון קוד מקור בפרויקט של המשתמש. |
אפשר לראות את כל ההרשאות בקטע תפקידים מוגדרים מראש ב-IAM או על ידי הרצת הפקודה הבאה:
gcloud iam roles describe roles/cloudfunctions.serviceAgent
אפשר לאפס את חשבון השירות הזה לתפקיד ברירת המחדל על ידי הסרת התפקיד הנוכחי שלו והוספת התפקיד 'סוכן שירות של פונקציות Cloud Run':
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role roles/cloudfunctions.serviceAgent
פתרון בעיות שקשורות להרשאות
אם מופיעות שגיאות הרשאה כשמבצעים פריסה, עדכון, מחיקה או הפעלה של פונקציות בפרויקט, צריך לבצע את השלבים הבאים:
מוודאים שיש לכם תפקיד עריכה או בעלים בפרויקט, או שאתם משתמשים בתפקיד מפתח פונקציות Cloud Run.
אם משתמשים בתפקיד Cloud Run functions Developer ברמת הפרויקט, צריך לוודא שהמשתמש קיבל גם את התפקיד IAM Service Account User.
ברמת הפונקציה, מותרות רק הרשאות הפעלה.
מוודאים שלחשבון השירות של סוכן השירות של פונקציות Cloud Run (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) מוקצה התפקיד cloudfunctions.serviceAgent בפרויקט.כדי לראות את החשבון הזה, צריך לוודא שהתיבה Include Google-provided role grants בכרטיסייה Permissions בדף Console IAM מסומנת. אפשר גם להשתמש ב-
gcloud projects add-iam-policy-binding PROJECT_ID.מוודאים שיש לכם הרשאות למקורות של טריגרים, כמו Pub/Sub או Cloud Storage.
אם מוצגת השגיאה 'אין הרשאות מספיקות' או שיש בעיות אחרות באימות כשמריצים את הפונקציות, צריך לוודא שלחשבון השירות של זמן הריצה יש את ההרשאות הנכונות לגישה למשאבים שהפונקציות צריכות. לאחר מכן, חוזרים על שלבים 2 ו-3.
אם מופיעה השגיאה 'השירות לא זמין' במהלך הפריסה, צריך לוודא שחשבון השירות של זמן הריצה PROJECT_ID@appspot.gserviceaccount.comקיים בפרויקט. כדי ליצור מחדש את חשבון השירות הזה אם הוא נמחק, אפשר לעיין במאמר בנושא ביטול מחיקה של חשבון שירות.
אפשר לעיין גם במאמר בנושא פתרון בעיות בפונקציות Cloud Run.