אישור גישה באמצעות IAM (דור ראשון)
משתמשים בניהול זהויות והרשאות גישה (IAM) כדי לתת לזהויות הרשאה לבצע פעולות ניהוליות בפונקציות, כמו יצירה, עדכון ומחיקה שלהן. מוסיפים חשבונות משתמש (הזהויות שרוצים להפעיל, בדרך כלל כתובת אימייל של משתמש או של חשבון שירות) לפונקציה, ואז מקצים לחשבונות המשתמש האלה את התפקידים המתאימים ב-IAM. התפקידים האלה כוללים הרשאות שמגדירות את הפעולות שמותר להם לבצע.
הפעלת גישה לפונקציה
אפשר לשלוט בפעולות בפונקציה על ידי הקצאה או הגבלה של תפקידים לזהויות בודדות באמצעות IAM.
הוספת חשבונות משתמש והקצאת תפקידים
המסוף
נכנסים למסוף Google Cloud :
לוחצים על תיבת הסימון שליד הפונקציה שרוצים להשתמש בה.
לוחצים על הרשאות בחלק העליון של המסך. נפתחת החלונית הרשאות.
לוחצים על Add principal.
בשדה New principals, מזינים את הזהות (או הזהויות) שצריכה גישה לפונקציה. בדרך כלל זו כתובת אימייל של משתמש או של חשבון שירות.
בוחרים תפקיד (או תפקידים) בתפריט הנפתח Select a rol. התפקידים שבחרתם יופיעו בחלונית עם תיאור קצר של ההרשאות שהם מעניקים.
לוחצים על Save.
gcloud
משתמשים בפקודה gcloud functions add-iam-policy-binding:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
כאשר FUNCTION_NAME הוא שם הפונקציה, PRINCIPAL_ID הוא המזהה של חשבון המשתמש, בדרך כלל כתובת אימייל, ו-ROLE הוא התפקיד.
רשימת המקורות שיכולים לספק PRINCIPAL_ID מופיעה במאמר מזהים של חשבונות משתמשים.
רשימת הערכים הקבילים ל-ROLE מופיעה בדף העיון בנושא תפקידי IAM ב-Cloud Run functions.
הסרת תפקידים מחשבונות משתמשים
המסוף
נכנסים למסוף Google Cloud :
לוחצים על תיבת הסימון שליד הפונקציה שרוצים להשתמש בה.
לוחצים על הרשאות בחלק העליון של המסך. נפתחת החלונית הרשאות.
מחפשים את חשבון המשתמש שרוצים להסיר. יש לבדוק בכל תפקיד שהוקצה לישות המורשית.
כשמוצאים את חשבון המשתמש בתפקיד שרוצים למחוק, לוחצים על סמל פח האשפה לצדו. אם רוצים להסיר לחלוטין את הגישה של החשבון, צריך לעשות את זה לכל תפקיד שהוקצה לו.
gcloud
משתמשים בפקודה gcloud functions remove-iam-policy-binding:
gcloud functions remove-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
כאשר FUNCTION_NAME הוא שם הפונקציה, PRINCIPAL_ID הוא כתובת האימייל שמזהה את חשבון השירות עם הקידומת serviceAccount:, ו-ROLE הוא התפקיד.
רשימת המקורות הקבילים ל-PRINCIPAL_ID מופיעה במאמר מזהים של חשבונות משתמשים.
רשימת הערכים האפשריים של ROLE מופיעה בדף העזר בנושא תפקידי IAM ב-Cloud Run Functions.
אם לחשבון המשתמש הראשי הוקצו כמה תפקידים, צריך לציין את התפקיד שרוצים להסיר.
הוספה של חשבונות משתמשים בכמות גדולה
המסוף
נכנסים למסוף Google Cloud :
לוחצים על תיבות הסימון לצד הפונקציות שרוצים לתת או להגביל אליהן גישה.
לוחצים על הרשאות בחלק העליון של המסך. נפתחת החלונית הרשאות.
כדי להוסיף חשבונות ראשיים:
לוחצים על Add principal.
בשדה New principals, מזינים את הזהויות שצריכות גישה לפונקציה.
בוחרים תפקיד (או תפקידים) בתפריט הנפתח Select a rol. התפקידים שבחרתם יופיעו בחלונית עם תיאור קצר של ההרשאות שהם מעניקים.
לוחצים על Save.
gcloud
יוצרים מדיניות IAM בשם, לדוגמה, policy.json:
{ "bindings": [ { "role": ROLE, "members": [ PRINCIPAL_ID ] } ] }
משתמשים בפקודה gcloud functions set-iam-policy:
gcloud functions set-iam-policy FUNCTION_NAME policy.json
רשימת המקורות הקבילים ל-PRINCIPAL_ID מופיעה במאמר מזהים של חשבונות משתמשים.
רשימת הערכים הקבילים ל-ROLE מופיעה בדף העיון בנושא תפקידי IAM ב-Cloud Run functions.
הצגת חשבונות ראשיים
המסוף
נכנסים למסוף Google Cloud :
לוחצים על שם הפונקציה שרוצים לראות.
לוחצים על הכרטיסייה הרשאות. נפתחת החלונית הרשאות.
לוחצים על הכרטיסייה View by principals כדי לראות רשימה של כל החשבונות הראשיים עם הרשאות לפונקציה שנבחרה.
gcloud
משתמשים בפקודה gcloud functions get-iam-policy:
gcloud functions get-iam-policy FUNCTION_NAME
אישור להפעלה של פונקציית HTTP לא מאומתת
החל מ-15 בינואר 2020, פונקציות HTTP ללא ההגדרה Allow unauthenticated invocations (מתן אפשרות להפעלת קריאות ללא אימות) מופעלת, מגבילות את הגישה למשתמשי קצה ולחשבונות שירות שאין להם הרשאות מתאימות.
כדי לאפשר הפעלות לא מאומתות, צריך לציין זאת במהלך הפריסה או אחריה.
אתם משתמשים בגרסה מיוחדת של הגישה שמתוארת למעלה כדי להעניק למשתמשים שקוראים לפונקציה ללא אימות את היכולת להפעיל פונקציית HTTP.
בזמן הפריסה
המסוף
בקטע Authentication (אימות) בחלונית Trigger (טריגר), בוחרים באפשרות Allow unauthenticated invocations (מתן הרשאה להפעלות לא מאומתות).
gcloud
הפקודה gcloud functions deploy כוללת הנחיה שתעזור לכם להגדיר הרשאות הפעלה במהלך יצירת הפונקציה. הוא יכול לכלול גם את הדגל --allow-unauthenticated:
gcloud functions deploy FUNCTION_NAME \ --no-gen2 \ --trigger-http \ --allow-unauthenticated \ ...
פריסות עוקבות של אותה פונקציה לא משנות את הסטטוס שלה, גם אם לא משתמשים בדגל הזה.
אחרי הפריסה
כדי לאפשר הפעלה לא מאומתת של פונקציה, מקצים את התפקיד Cloud Functions Invoker לחשבון המשתמש המיוחד allUsers בפונקציה:
המסוף
נכנסים למסוף Google Cloud :
לוחצים על תיבת הסימון לצד הפונקציה המקבלת. (לא לוחצים על הפונקציה עצמה).
לוחצים על הרשאות בחלק העליון של המסך. נפתחת החלונית הרשאות.
לוחצים על Add principal.
בשדה New principals, מקלידים
allUsers.בתפריט הנפתח Select a role, בוחרים את התפקיד Cloud Functions > Cloud Functions Invoker.
בתגובה לתיבת הדו-שיח, לוחצים על Allow public access.
gcloud
כדי לתת את התפקיד roles/cloudfunctions.invoker לחשבון הראשי המיוחד allUsers בפונקציה, משתמשים בפקודה gcloud functions add-iam-policy-binding:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member="allUsers" \ --role="roles/cloudfunctions.invoker"
מידע נוסף על השדות האלה מופיע במאמר gcloud functions add-iam-policy-bindingהפניה.
שיתוף מוגבל לדומיין
אם אתם מפתחים פונקציות בפרויקט שחל עליו מדיניות הארגון 'שיתוף מוגבל לדומיין', לא תוכלו לאפשר הפעלה לא מאומתת של פונקציה. המדיניות הזו מגבילה את השיתוף של נתונים עם הציבור כדי לצמצם את הסיכון לזליגת נתונים.
אם רוצים לפרוס פונקציות שמאפשרות הפעלה לא מאומתת, מומלץ להסיר את מדיניות הארגון 'שיתוף מוגבל של דומיינים' מהפרויקט. אפשר להגדיר מדיניות ארגונית ברמת הארגון, התיקייה או הפרויקט.
אחרי שיוצרים את הפונקציות שמאפשרות הפעלה לא מאומתת, אפשר להפעיל מחדש את מדיניות הארגון:
- פונקציות שנפרסו לפני הפעלה מחדש של מדיניות הארגון ימשיכו לאפשר הפעלה לא מאומתת.
- אפשר לפרוס גרסאות חדשות של הפונקציות הקיימות האלה בלי לדרוש הפעלה מאומתת.
- אי אפשר לפרוס פונקציות חדשות שמאפשרות הפעלות לא מאומתות.
שליטה בגישה לכל הפונקציות בפרויקט
אם רוצים להעניק תפקידים לכל הפונקציות בפרויקט, אפשר להעניק את התפקידים האלה בפרויקט.