הקשחת image: לא-root ובסיס מינימלי
image שעובד הוא לא בהכרח image שבטוח לפרוס. בשיעור הזה נתמקד בנושא אחד: לצמצם את מה שאפשר לתקוף. נריץ את הקונטיינר כמשתמש לא-root (ברירת המחדל בקונטיינר היא root, והוראת USER מורידה אותנו למשתמש מוגבל כך שפריצה תזיק פחות), נבחר בסיס image מינימלי (alpine או distroless — פחות חבילות וכלים פירושם פחות
תן/י לעובד רק את המפתחות שהוא צריך (לא-root), ושמור/י על ארגז כלים קטן (בסיס מינימלי) — כך גם אם מישהו פורץ פנימה, יש לו פחות מפתחות ופחות כלים לשחק איתם.
- משתמש לא-root (USER)
- הרצת התהליך בקונטיינר תחת משתמש בעל הרשאות מוגבלות במקום root. הוראת USER ב-Dockerfile קובעת אותו ומצמצמת את הנזק (blast radius) אם תוקף משיג הרצת קוד.
- בסיס image מינימלי
- בסיס קטן כמו alpine או distroless עם מעט חבילות וכלים. פחות מה שמותקן ב-image פירושו פחות חולשות אפשריות ושטח תקיפה (attack surface) קטן יותר.
- סריקת image (CVE)
- בדיקה אוטומטית של ה-image מול מאגר חולשות ידועות (CVE) בספריות ובבסיס. הסריקה מתריעה על חבילות פגיעות, ולכן מקבעים גרסאות ומעדכנים.