אבטחה של סביבת ההפעלה

כל פונקציה פועלת על גבי אימג' של זמן ריצה עם ניהול גרסאות בתוך סביבת ההפעלה המאובטחת של פונקציות Cloud Run. תמונות של זמן ריצה מכילות ספריות של מערכת הפעלה, זמני ריצה של שפות וחבילות מערכת אחרות. ‫Google מתחזקת את כל תמונות זמן הריצה של פונקציות Cloud Run, ומפרסמת תיקוני אבטחה ועדכוני תחזוקה אחרי תקופה של בדיקות יציבות.

תמונות נטענות לאפקט

לכל זמן ריצה משויכת תמונת זמן ריצה (שנקראת גם תמונת הפעלה) במאגר ציבורי ב-gcr.io. רשימה של מזהי זמן ריצה ותמונות זמן הריצה שלהם זמינה במאמר בנושא זמני ריצה.

זיהוי תמונת זמן הריצה

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

ביומני הבנייה, מחפשים את google.run-image. כך תוכלו לראות את רשומת היומן משלב ה-build שמתארת את הגרסה של תמונת זמן הריצה ששימשה ליצירת ה-build של הפונקציה. לדוגמה, רשומה ביומן של פונקציית Node.js יכולה להיראות כך:

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us.gcr.io/serverless-runtimes/google-22-full/runtimes/nodejs20:nodejs20_20241110_20_18_0_RC00
",
  ...
}

מדיניות עדכוני אבטחה

אפשר לבחור באחת ממדיניות עדכוני האבטחה הבאות:

  • עדכונים אוטומטיים (ברירת מחדל): עדכונים ותיקוני אבטחה לסביבת זמן הריצה מתפרסמים בגרסאות חדשות של תמונת זמן הריצה. אחרי תקופת בדיקות של היציבות והאמינות, זמן הריצה המעודכן מופץ לכל הפונקציות, וכתוצאה מכך מתבצע עדכון ללא השבתה. עדכוני אבטחה אוטומטיים זמינים בפונקציות Cloud Run (דור ראשון) ובפונקציות Cloud Run. כדי להחיל תיקוני אבטחה ברמת השפה, יכול להיות שתצטרכו לבנות מחדש פונקציות שמשתמשות בשפות שעברו קומפילציה כמו Go או Java.

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

אפשר לשנות את מדיניות העדכון של זמן הריצה באמצעות --runtime-update-policy הדגל בפקודה gcloud functions deploy.

הגדרת מדיניות העדכון של הפונקציה

אם אתם משתמשים בפונקציות Cloud Run (דור ראשון), אתם יכולים לשנות את מדיניות העדכון של הפונקציה על ידי הוספת הדגל --runtime-update-policy לפקודה gcloud deploy, כמו שמוצג כאן:

  gcloud functions deploy FUNCTION_NAME --no-gen2 \
    --runtime-update-policy=POLICY ...

מחליפים את:

  • FUNCTION_NAME בשם הפונקציה
  • POLICY עם automatic או on-deploy

בדיקת מדיניות העדכון של הפונקציה

אפשר לבדוק את מדיניות העדכון של הפונקציה באמצעות הפקודה הבאה:

  gcloud functions describe FUNCTION_NAME \

כאשר FUNCTION_NAME הוא שם הפונקציה

  • פונקציות שמופעלים בהן עדכוני אבטחה אוטומטיים יכללו את המקש automaticUpdatePolicy
  • פונקציות שמתעדכנות בזמן הפריסה יכללו את המפתח onDeployUpdatePolicy

זיהוי תמונת זמן הריצה שנעשה בה שימוש אחרי עדכון אוטומטי

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

בתוך יומני הריצה, התווית runtime_version מציינת מתי נעשה שימוש בתמונה חדשה של זמן ריצה בפונקציה. רשומה ביומן של פונקציית Nodejs שעודכנה באופן אוטומטי יכולה להיראות כך:

{
  ...
  "labels:" {
    runtime_version: nodejs20_20230924_20_6_1_RC00
    execution_id: ...
  }
  ...
}