לאחרונה הוכרזה ההשקה של הגרסה החדשה של הפצת לינוקס "בקבוק 1.7.0", שפותחה בהשתתפות אמזון, להפעלת מכולות מבודדות בצורה יעילה ומאובטחת.
למי שחדש ב-Botlerocket, כדאי לדעת שמדובר בהפצה המספקת תמונת מערכת בלתי ניתנת לחלוקה מעודכנת אוטומטית, הכוללת את ליבת לינוקס וסביבת מערכת מינימלית הכוללת רק את הרכיבים הדרושים להפעלת קונטיינרים.
לגבי Bottlerocket
הסביבה משתמש במנהל מערכת systemd, ספריית Glibc, כלי הבנייה של Buildroot, טוען האתחול GRUB, זמן הריצה של ארגז החול של מיכל, פלטפורמת תזמור המכולות Kubernetes, המאמת aws-iam וסוכן Amazon ECS.
כלי תזמור המכילים מגיעים במיכל ניהול נפרד המופעל כברירת מחדל ומנוהל באמצעות סוכן SSM ו-API של AWS. תמונת הבסיס חסרה מעטפת פקודה, שרת SSH ושפות מפורשות (לדוגמה, Python או Perl): כלי ניהול ואיתור באגים מועברים למיכל שירות נפרד, המושבת כברירת מחדל.
ההבדל העיקרי מהפצות דומות כגון Fedora CoreOS, CentOS / Red Hat Atomic Host הוא הדגש העיקרי במתן אבטחה מירבית בהקשר של חיזוק ההגנה של המערכת מפני איומים אפשריים, מה שמקשה על ניצול נקודות תורפה ברכיבי מערכת ההפעלה ומגביר את הבידוד של הקונטיינר.
קונטיינרים נוצרים באמצעות מנגנוני ליבת לינוקס הרגילים: cgroups, מרחבי שמות ו-seccomp. לבידוד נוסף, ההפצה משתמשת ב-SELinux במצב "יישום".
מחיצת השורש מותקנת לקריאה בלבד והמחיצה עם תצורת /etc מותקנת ב-tmpfs ומשוחזרת למצבה המקורי לאחר אתחול מחדש. שינוי ישיר של קבצים בספריית /etc, כגון /etc/resolv.conf ו-/etc/containerd/config.toml, אינו נתמך; כדי לשמור את התצורה לצמיתות, עליך להשתמש ב-API או להעביר את הפונקציונליות למכולות נפרדות.
לצורך אימות קריפטוגרפי של תקינות מחיצת השורש, נעשה שימוש במודול dm-verity, ואם מזוהה ניסיון לשנות נתונים ברמת התקן הבלוק, המערכת מופעלת מחדש.
רוב רכיבי המערכת כתובים ב- Rust, אשר מספקת כלים בטוחים בזיכרון למניעת פגיעויות הנגרמות כתוצאה מטיפול באזור זיכרון לאחר שחרורו, מצביעי null של הפנייה והצפת מאגר.
בעת ההידור, מצבי ההידור "–enable-default-pie" ו-"–enable-default-ssp" משמשים כברירת מחדל כדי לאפשר אקראית של מרחב כתובות (PIE) להפעלה והגנה על הצפת מחסנית באמצעות החלפת תגים קנריים.
מה חדש ב-Bottlerocket 1.7.0?
בגרסה החדשה הזו של ההפצה שמוצגת, אחד השינויים הבולטים הוא זה בעת התקנת חבילות RPM, הוא מסופק כדי ליצור רשימה של תוכניות בפורמט JSON והרכב אותו למכל המארח כקובץ /var/lib/bottlerocket/inventory/application.json כדי לקבל מידע על חבילות זמינות.
כמו כן מוצג ב-Botlerocket 1.7.0 עדכון קונטיינר "admin" ו-"control"., כמו גם גרסאות חבילה ותלות עבור Go ו-Rust.
מצד שני, הדגשים גרסאות מעודכנות של חבילות עם תוכניות של צד שלישי, תיקנו גם בעיות תצורה של tmpfilesd עבור kmod-5.10-nvidia ובעת התקנת tuftool גרסאות תלות מקושרות.
סוף סוף למי שכן מעוניין ללמוד עוד על זה לגבי הפצה זו, עליך לדעת שערכת הכלים ורכיבי בקרת ההפצה כתובים ב-Rust ומופצים תחת הרישיונות MIT ו-Apache 2.0.
כיס בקבוק תומך בהפעלת אשכולות Amazon ECS, VMware ו-AWS EKS Kubernetes, כמו גם יצירת בנייה ומהדורות מותאמות אישית המאפשרות תזמורות וכלי זמן ריצה שונים עבור קונטיינרים.
אתה יכול לבדוק את הפרטים, בקישור הבא.