מידע על סריקת מצב האבטחה ב-Kubernetes

במסמך הזה מוסבר איך להשתמש בסריקת מצב האבטחה של Kubernetes כדי למצוא סיכוני אבטחה ב-GKE ולצמצם אותם. המסמך הזה מניח שאתם מכירים את הנושאים הבאים:

התכונה 'בדיקת מצב האבטחה של Kubernetes' היא חלק ממרכז הבקרה של מצב האבטחה. היא עוזרת לכם לזהות מראש נקודות חולשה באבטחה באשכולות Google Kubernetes Engine ‏ (GKE) ולטפל בהן. סריקת מצב האבטחה של Kubernetes כוללת את התכונות הבאות:

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

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

תמחור

השירות מוצע ב-GKE ללא תשלום נוסף.

הערכים שנוספים ל-Cloud Logging כפופים לתמחור של Cloud Logging.

מידע על ביקורת של הגדרות עומסי עבודה

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

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

היתרונות של ביקורת על הגדרות עומס העבודה

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

איך פועל תהליך הביקורת של הגדרות עומס העבודה

לגבי כל עומס עבודה (workload) שניתן לפריסה, GKE סורק באופן רציף את המפרט של עומס העבודה ומשווה את השדות והערכים לאמצעי הבקרה שמוגדרים במדיניות האבטחה הבסיסית. לדוגמה, Pod עם הערך spec.containers.securityContext.privileged=true לא עומד בתקן הבסיסי לאבטחת Pod, ו-Pod עם השדה spec.securityContext.runAsNonRoot שהערך שלו הוא false לא עומד בתקן המוגבל. רשימת מדיניות האבטחה שנבדקת ב-GKE מופיעה במאמר מה נבדק בביקורת של הגדרות עומס העבודה?.

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

מה נבדק בביקורת של הגדרות עומס העבודה?

סוג הטיפול שדות ערכים מותרים חוּמרה

מרחבי שמות של מארחים

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

  • spec.hostNetwork
  • spec.hostIPC
  • spec.hostPID
  • לא מוגדר או nil
  • false
גבוהה

Privileged containers

קונטיינרים עם הרשאות מאפשרים גישה כמעט בלתי מוגבלת למארח. הם חולקים מרחבי שמות עם המארח, ואין להם קבוצת בקרה, seccomp,‏ AppArmor והגבלות יכולת.

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged
  • לא מוגדר או nil
  • false
גבוהה

גישה ליציאות של המארח

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

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • לא מוגדר או nil
  • 0
גבוהה

יכולות שאינן ברירת מחדל

לקונטיינר מוקצות יכולות שיכולות לאפשר פירצה בקונטיינר.

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add
  • לא מוגדר או nil
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
בינוני

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

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

spec.volumes[*].hostPath לא מוגדר או nil בינוני

מסכה /proc שאינה ברירת מחדל

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

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount
  • לא מוגדר או nil
  • ברירת מחדל
בינוני

Unsafe sysctls mask

אפשר להגדיר Pod כך שיאפשר שינוי של פרמטרים לא בטוחים של ליבת המערכת באמצעות מערכת הקבצים הווירטואלית /proc/sys. פרמטרים לא בטוחים לא תומכים במרחבי שמות, לא מבודדים כראוי את ההשפעה שלהם בין ה-Pods, עלולים לפגוע בבריאות של הצומת או לאפשר ל-Pod לקבל משאבים מעבר למגבלות שלו.

spec.securityContext.sysctls[*].name
  • לא מוגדר או nil
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range
בינוני

הפעלה כמשתמש לא-ראשי

אפשר לאפשר באופן מפורש לקונטיינר לפעול כמשתמש Root אם ההוראה runAsUser או USER במפרט התמונה מציינת את משתמש Root. היעדר אמצעי בקרה למניעת סיכונים כשמריצים את המאגר כמשתמש Root מגביר את הסיכון לפירצה בקונטיינר.

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot
true בינוני

הסלמת הרשאות

אפשר להגדיר קונטיינר באופן מפורש כך שיאפשר הסלמת הרשאות (privilege escalation) בזמן ההפעלה. ההרשאה הזו מאפשרת לתהליך שנוצר בתוך הקונטיינר על ידי הפעלה של קובץ הפעלה עם set-user-id, ‏ set-group-id או יכולת קובץ, לקבל את ההרשאות שצוינו בקובץ ההפעלה. היעדר אמצעי בקרה למניעת סיכוני אבטחה מגביר את הסיכון לפירצה בקונטיינר.

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
false בינוני

פרופיל AppArmor לא מוגבל

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

metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"] false נמוכה

בנוסף, מערכת GKE בודקת אם יש RoleBindings או ClusterRoleBindings של RBAC שמפנים לאחד מהמשתמשים או הקבוצות הבאים:

  • system:anonymous
  • system:authenticated
  • system:unauthenticated

אם קיימים קישורי RBAC שמפנים למשתמשים או לקבוצות האלה, תופיע במרכז הבקרה של מצב האבטחה ממצא בשם Effectively Anonymous Users Granted GKE Cluster Access (משתמשים אנונימיים קיבלו גישה לאשכול GKE) ברמת חומרה Medium (בינונית). המשתמשים והקבוצות האלה הם למעשה אנונימיים, ולכן לא מומלץ להשתמש בהם ב-RoleBindings או ב-ClusterRoleBindings. מידע נוסף זמין במאמר בנושא הימנעות משימוש בתפקידים ובקבוצות שמוגדרים כברירת מחדל.

מידע על הצגת עדכוני אבטחה דחופים

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

בלוח הבקרה של מצב האבטחה מוצגים עדכוני אבטחה שמשפיעים על האשכולות, על עומסי העבודה ועל מאגרי הצמתים במצב רגיל. התכונה הזו היא חלק מהיכולת Kubernetes security posture של לוח הבקרה security posture, והיא מופעלת באופן אוטומטי כשיוצרים קלאסטר Autopilot או Standard. כדי להפעיל סריקה של מצב האבטחה ב-Kubernetes, פועלים לפי ההוראות במאמר ביקורת אוטומטית של עומסי עבודה לאיתור בעיות בהגדרות.

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

כדי לראות עדכונים דחופים לגבי אשכולות שנרשמתם לסריקת מצב האבטחה שלהם ב-Kubernetes, עוברים אל מרכז הבקרה של מצב האבטחה:

מעבר אל 'רמת האבטחה'

עדכונים דחופים שמשפיעים על הסביבה שלכם מופיעים בקטע עדכוני אבטחה דחופים.

המאמרים הבאים