סקירה כללית על אבטחה

בדף הזה מובאת סקירה כללית על תכונות האבטחה של מערכת הפעלה שמותאמת לקונטיינרים שפועלת ב- Cloud de Confiance by S3NS.

אבטחת מערכת ההפעלה

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

טביעת רגל מינימלית של מערכת ההפעלה

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

מערכת קבצים בסיסית קבועה ואתחול מאומת

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

הגדרה ללא שמירת מצב

מערכת קבצים בסיסית לקריאה בלבד טובה לאבטחה, אבל קשה להשתמש במערכת. לדוגמה, אנחנו צריכים להיות מסוגלים ליצור משתמשים ולהוסיף אותם כדי להתחבר למערכת. כדי לפתור את הבעיה הזו, אנחנו מבצעים התאמה אישית של מערכת הקבצים הבסיסית כך שניתן לכתוב ב-/etc/ אבל היא חסרת מצב. כך אפשר לכתוב הגדרות תצורה בזמן הריצה, אבל ההגדרות האלה לא נשמרות אחרי הפעלה מחדש. לכן, בכל פעם שצומת של מערכת הפעלה שמותאמת לקונטיינרים מופעל מחדש, הוא מתחיל מחדש. נתונים מסוימים, כמו ספריות הבית של המשתמשים, יומנים ותמונות Docker, נשמרים גם אחרי הפעלה מחדש, כי הם לא חלק ממערכת הקבצים הבסיסית.

ליבה עם אבטחה משופרת

מערכת ההפעלה שמותאמת לקונטיינרים מאפשרת כמה תכונות של הקשחת ליבת אבטחה, כולל ארכיטקטורת מדידת תקינות (IMA), ביקורת, בידוד של טבלת דפי ליבה (KPTI) וכמה מודולי אבטחה של Linux‏ (LSM) מ-מערכת ההפעלה Chromium. בנוסף, מערכת הפעלה שמותאמת לקונטיינרים תומכת באמצעי אבטחה כמו seccomp ו-AppArmor, שמאפשרות לאכוף מדיניות אבטחה מפורטת יותר.

ברירות מחדל שמתמקדות באבטחה

מערכת ההפעלה שמותאמת לקונטיינרים מספקת רמה נוספת של אבטחה באמצעות ערכי ברירת מחדל שמתמקדים באבטחה בכמה תכונות. זה כולל דברים כמו הגדרות sysctl שמשביתות ptrace ו-BPF ללא הרשאות, נועלות את חומת האש וכו'. הגדרות ברירת המחדל האלה, שמוחלות אוטומטית על Fleet של מכונות, עוזרות לאבטח את כל האשכול, הפרויקט והארגון.

עדכונים אוטומטיים

התכונה של עדכונים אוטומטיים ב-Container-Optimized OS מאפשרת לספק בזמן תיקוני אבטחה למכונות וירטואליות שפועלות. כש-Container-Optimized OS מנוהלת על ידי Kubernetes Engine, שדרוגים אוטומטיים של צמתים מאזנים בין אבטחה ליציבות.

מערכת קבצים

בהמשך מופיעה רשימה של נתיבים במערכת קבצים של אימג' צומת במערכת הפעלה שמותאמת לקונטיינרים, יחד עם המאפיינים שלהם והשימוש המומלץ:

נתיב מאפיינים מטרה
/
  • לקריאה בלבד
  • קובץ הפעלה
מערכת הקבצים הבסיסית טעונה לקריאה בלבד כדי לשמור על השלמות שלה. הליבה מאמתת את התקינות של מערכת הקבצים הבסיסית במהלך ההפעלה, ומסרבת לבצע אתחול במקרה של שגיאות.
‫/home
‫/var
  • ניתן לכתיבה
  • לא קובץ להפעלה
  • עם שמירת מצב
הנתיבים האלה מיועדים לאחסון נתונים שנשמרים למשך משך החיים של דיסק האתחול. הם מותקנים מ-/mnt/stateful_partition.
‪/var/lib/google
‪ /var/lib/docker
‪ /var/lib/toolbox
  • ניתן לכתיבה
  • קובץ הפעלה
  • עם שמירת מצב
הנתיבים האלה הם ספריות עבודה לחבילות של Compute Engine (לדוגמה, שירות ניהול החשבונות), Docker ו-Toolbox, בהתאמה.
/var/lib/cloud
  • ניתן לכתיבה
  • קובץ הפעלה
  • אינו שומר מצב
  • tmpfs
הנתיב הזה הוא ספריית העבודה של חבילת cloud-init.
/etc
  • ניתן לכתיבה
  • קובץ הפעלה
  • אינו שומר מצב
  • tmpfs
בדרך כלל הוא מכיל את ההגדרות שלכם (לדוגמה, systemd שירותים שהוגדרו באמצעות cloud-init). מומלץ לתעד את המצב הרצוי של המכונות ב-cloud-init, כי cloud-init מופעל כשיוצרים מכונה חדשה וגם כשמפעילים מחדש מכונה.
/tmp
  • ניתן לכתיבה
  • לא קובץ להפעלה
  • אינו שומר מצב
  • tmpfs
בדרך כלל משתמשים בו כשטח אחסון זמני, ולא מומלץ לאחסן בו נתונים קבועים.
/mnt/disks
  • ניתן לכתיבה
  • קובץ הפעלה
  • אינו שומר מצב
  • tmpfs
אפשר לצרף דיסקים קשיחים קבועים לספריות ב-/mnt/disks.

חומת אש

כברירת מחדל, מערכת הפעלה שמותאמת לקונטיינרים מוגדרת להפיל את כל חיבורי ה-TCP/UDP הנכנסים, למעט SSH ביציאה 22. במאמר הגדרת חומת האש של המארח מוסבר איך לשנות את ברירת המחדל כדי לפתוח עוד יציאות.

גישה למכונה

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

דימון ה-SSH מוגדר כך שלא יאפשר אימות שמבוסס על סיסמה ולא יאפשר התחברות לרמת הבסיס (root). עם זאת, ההגדרה הזו לא מונעת מהמשתמשים לקבל הרשאות root באמצעות sudo אחרי הכניסה לחשבון.

אבטחת התשתית

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

נוצר ממקור ב-Google

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

סריקה רציפה של נקודות חולשה (CVE) ותגובה

מערכת לסריקת CVE שולחת לנו התראה בכל פעם שמתגלה נקודת חולשה בקרנל או בחבילה כלשהי של מערכת ההפעלה. זו אותה מערכת שמשמשת לזיהוי פגיעויות ב-Android ובמערכת ההפעלה Chromium. הצוות של מערכת הפעלה שמותאמת לקונטיינרים מגיב בעדיפות כדי ליצור גרסאות עם תיקונים. צוות מערכת הפעלה שמותאמת לקונטיינרים עובד גם עם צוות התגובה לאירוע של Google כדי לספק במהירות תיקוני אבטחה רחבים יותר במערכת הפעלה שמותאמת לקונטיינרים.

תהליך הבדיקה וההסמכה

לפני שאנחנו מפרסמים קובץ אימג' חדש של מערכת הפעלה שמותאמת לקונטיינרים ב-Google Cloud, אנחנו בודקים אותה בכמה רמות – כולל בדיקת fuzzing של ליבת המערכת באמצעות syzkaller, בדיקות Kubernetes ברמת האשכול, בדיקות שילוב עם תכונות של Compute Engine וכמה מדדי ביצועים. כך אנחנו מבטיחים את היציבות והאיכות של הגרסאות שלנו.