אבטחת פונקציית Cloud Run
בדף הזה מובאת סקירה כללית של הדרכים שבהן אפשר לשלוט באינטראקציות עם משאבי הפונקציות של Cloud Run.
בקרת גישה
יש שתי גישות לשליטה בגישה לפונקציות Cloud Run:
אבטחת הגישה באמצעות זהות
אחת הדרכים לשלוט בגישה לפונקציה היא לדרוש מהגורם המבקש לזהות את עצמו באמצעות פרטי כניסה. אמצעי אימות הוא מעין 'שם' שמאובטח באמצעות סוד שהישות יודעת או שיש לה גישה אליו, כמו סיסמה או התקן חומרה. כברירת מחדל, הפונקציות נפרסות כפרטיות, ונדרשים פרטי כניסה כדי להשתמש בהן. עם זאת, אפשר לפרוס פונקציה כציבורית, כלומר לא נדרשים פרטי כניסה כדי להשתמש בה.
השלב הראשון בתהליך הוא אימות האישורים כדי לוודא שהגורם ששולח את הבקשה הוא מי שהוא טוען שהוא, ושהוא מציג את השם והסוד הנכונים. השלב הזה נקרא (Authentication).
אחרי שמאמתים את הזהות של מבקש הגישה, אפשר להעריך את רמת הגישה שלו ואת ההרשאות שניתנו לו. השלב הזה נקרא (Authorization).
אימות
פונקציות Cloud Run תומכות בשני סוגים שונים של זהויות, שנקראות גם גורמים ראשיים:
- חשבונות שירות: אלה חשבונות מיוחדים שמשמשים כזהות של ישות שאינה אדם, כמו פונקציה, אפליקציה או מכונה וירטואלית. הם מאפשרים לכם לאמת את הזהות של הגורמים האלה שהם לא אנשים.
- חשבונות משתמשים: החשבונות האלה מייצגים אנשים – כבעלי חשבונות Google פרטיים או כחלק מישות בשליטת Google, כמו קבוצת Google.
גם בחשבונות שירות וגם בחשבונות משתמש, החלק של השם בפרטי הכניסה הוא בדרך כלל כתובת אימייל שמשויכת לחשבון. הסוד של חשבון משתמש הוא בדרך כלל סיסמה, והסוד של חשבון שירות הוא בדרך כלל המפתח הפרטי של זוג המפתחות שנוצר יחד עם החשבון.
אבל הסיסמאות של המשתמשים והמפתחות של חשבונות השירות הם חזקים מאוד: הם יכולים לספק גישה רחבה לנתונים ולפונקציות, והם נשארים בתוקף עד שמבטלים או משנים אותם באופן פעיל. כדי להגביל את הנזק הפוטנציאלי שעלול להתרחש אם פרטי הכניסה ידלפו, פרטי הכניסה הבסיסיים האלה מוחלפים בפרטי כניסה לטווח קצר שמבוססים עליהם, כלומר באסימון, שיש לו משך חיים מוגבל והוא נוצר באופן דינמי כחלק מרצף הבקשות. Google Cloud האסימון מועבר עם הבקשה ומשמש לאימות מאובטח של החשבון.
יש שני סוגים של אסימונים שמשמשים בפונקציות Cloud Run: אסימוני גישה ואסימונים מזהים. אסימוני גישה משמשים בדרך כלל לאימות קריאות ל-API, ואסימונים מזהים משמשים לאימות קריאות לקוד שנוצר על ידי מפתחים, למשל אם פונקציה קוראת לפונקציה אחרת. האסימונים עצמם נוצרים באמצעות מסגרת OAuth 2 וההרחבה שלה, Open Identity Connect, אבל הרצף מורכב ונוטה לשגיאות, ולכן מומלץ מאוד להשתמש בספריות הלקוח ב-Cloud כדי לנהל את התהליך.
הרשאה
אחרי שמאמתים את הזהות של הישות ששלחה את הבקשה, צריך להעריך מה מותר למבקש לעשות. ההערכה הזו מבוססת על ההרשאות שניתנו לחשבון המאומת כשהוא הוגדר. פונקציות Cloud Run משתמשות בניהול זהויות והרשאות גישה (IAM) כדי לעשות זאת. תפקידים, שהם קבוצות של הרשאות פרטניות שמאורגנות יחד לנוחות השימוש, מוקצים לחשבון ישירות או באמצעות הגדרה שנקראת מדיניות. כל הרשאה בודדת בקבוצת התפקידים בדרך כלל תואמת לקריאה אחת ל-API שנחשפת על ידי השירות המבוקש. מידע נוסף על התהליך הזה זמין במאמר אישור גישה באמצעות IAM.
בקרת גישה מבוססת-רשת
אפשר גם להגביל את הגישה באמצעות הגדרת הגדרות רשת לפונקציות ספציפיות. כך אפשר לשלוט בצורה מדויקת בתעבורת נתונים נכנסת (ingress) ובתעבורת נתונים יוצאת (egress) לפונקציות ומהן ברשת.
בידוד והרצה בארגז חול
באופן פנימי, מופעים של פונקציות מבודדים זה מזה באמצעות פלטפורמת הארגז חול gVisor. כברירת מחדל, לפונקציה אין גישה לסביבות ההפעלה של פונקציות אחרות.
עדכונים בסביבת ההפעלה
Google מפרסמת תיקוני אבטחה ועדכוני תחזוקה אחרי תקופה של בדיקות יציבות. יכול להיות שפונקציות Cloud Run יחילו עדכונים על היבטים אחרים של סביבת ההרצה, כמו מערכת ההפעלה או חבילות כלולות. העדכונים האלה עוזרים לשמור על סביבת ההפעלה של הפונקציה.
עדכוני אבטחה של פונקציות Cloud Run
אפשר לבחור באחת ממדיניות עדכוני האבטחה הבאות:
עדכונים אוטומטיים (ברירת מחדל): עדכונים ותיקוני אבטחה לסביבת זמן הריצה מתפרסמים בגרסאות חדשות של תמונת זמן הריצה. אחרי תקופת בדיקות של היציבות והאמינות, זמן הריצה המעודכן מופץ לכל הפונקציות, וכתוצאה מכך מתבצע עדכון ללא השבתה. עדכוני אבטחה אוטומטיים זמינים בפונקציות Cloud Run (דור ראשון) ובפונקציות Cloud Run. כדי להחיל תיקוני אבטחה ברמת השפה, יכול להיות שתצטרכו לבנות מחדש פונקציות שמשתמשות בשפות שעברו קומפילציה כמו Go או Java.
במהלך פריסת עדכונים: עדכונים ותיקוני אבטחה מוחלים על סביבות זמן ריצה רק כשפורסים או פורסים מחדש פונקציות, אלא אם צוין אחרת. עדכונים לגבי פריסה זמינים גם בפונקציות Cloud Run (דור ראשון) וגם בפונקציות Cloud Run.
אפשר לשנות את מדיניות העדכון של זמן הריצה באמצעות --runtime-update-policy
הדגל בפקודה gcloud functions deploy.
מידע נוסף על עדכוני אבטחה של סביבת ההפעלה זמין במאמר בנושא מדיניות עדכוני אבטחה.