שאלה כיצד לטפל בעדכוני אבטחה בתוך מיכלי Docker?


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

באופן מסורתי, עדכוני אבטחה הוחלו רק על ידי ביצוע פקודת מנהל חבילה כדי להתקין גרסאות מעודכנות של חבילות במערכת ההפעלה (לדוגמה "עדכון yum" ב- RHEL). אבל עם כניסתו של הטכנולוגיה מיכל כגון Docker שבו תמונות מכולה למעשה צרור הן את היישום ו את הפלטפורמה, מהי הדרך הקנונית של שמירה על מערכת עם מכולות מעודכן? הן המארח והן מכולות יש משלהם, עצמאית, חבילות של חבילות שצריכים לעדכן ולעדכן על המארח לא לעדכן את כל החבילות בתוך המכולות. עם שחרורו של RHEL 7 שבו מכולות דוקר מופיעים במיוחד, זה יהיה מעניין לשמוע מה הדרך המומלצת של Redhat להתמודד עם עדכוני אבטחה של מכולות הוא.

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

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

לכן אף אחת מהגישות הללו אינה משביעת רצון.


103
2017-07-08 21:54




הרעיון הטוב ביותר עבור זה ראיתי עד כה הוא פרויקט אטומי. אני לא חושב שזה די מוכן לפריים זמן אף. - Michael Hampton♦
Valko, מה זרימת עבודה אתה בסופו של דבר עם? אני מפעיל מיכלים ארוכי טווח (אירוח php-cgi, למשל) ומה שמצאתי עד כה הוא: docker pull debian/jessie כדי לעדכן את התמונה, ולאחר מכן לבנות מחדש את התמונות הקיימות שלי, ולאחר מכן להפסיק את המכלים ולהפעיל אותם שוב (עם התמונה החדשה). התמונות שאני בונה יש שם זהה לזה הקודם, ולכן ההתחלה מתבצעת באמצעות התסריט. לאחר מכן הסר תמונות "ללא שם". אני בוודאי מעריך את זרימת עבודה טובה יותר. - miha
miha: זה נשמע דומה למה יש לי בסופו של דבר. בעיקרון מתעדכן כל הזמן מחדש את כל התמונות כחלק ביצוע משחרר חדש. והפעלה מחדש של המכלים באמצעות התמונות החדשות. - Markus Hallmann
התשובה הטובה ביותר כאן עוזר הרבה כי יש תסריט המכיל ראשי פקודות לעשות בדיוק מה יוהאנס Ziemke אמר: - Hudson Santos


תשובות:


A Docker תמונה חבילות יישומים "פלטפורמה", זה נכון. אבל בדרך כלל התמונה מורכבת תמונה בסיס היישום בפועל.

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


43
2017-08-12 11:41



תודה, זה נשמע הגיוני. רק עדיין רוצה לעדכן את הפלטפורמה כך לדבר לא יצטרך לארוז מחדש את היישום כולו (לשקול למשל צורך לבנות מחדש 100 תמונות יישום שונות בשל תמונה בסיס אחד מקבל עדכון). אבל אולי זה בלתי נמנע עם הפילוסופיה דוקר של bundling הכל יחד בתוך תמונה אחת. - Markus Hallmann
@ ValkoSipuli אתה תמיד יכול לכתוב סקריפט כדי להפוך את התהליך. - dsljanus
למה לא apt- לקבל שדרוג, שדרוג dnf, pacman -syu, וכו 'שווה בתוך המיכל? אתה יכול אפילו ליצור סקריפט פגז שעושה את זה ואז מפעיל את היישום, ולאחר מכן להשתמש בו כנקודת הכניסה של הגורם המכיל, כך שכאשר המכולה מופעלת / מופעלת מחדש היא משדרגת את כל החבילות שלה. - Arthur Kay
@ ArthurKay שתי סיבות: 1) אתה לפוצץ את גודל המכולה, שכן כל חבילות לקבל משודרגים יתווספו שכבת מכולה תוך שמירה על החבילה המיושנת בתמונה. 2) זה מביס את היתרון הגדול ביותר של (תמונות מכולה): התמונה שאתה מפעיל זה לא אותו אתה בונה / בדיקות כי אתה משנה חבילות על זמן ריצה. - Johannes 'fish' Ziemke
יש דבר אחד שאני לא מבין: אם אתה קונה פיסת תוכנה שנשלחת כמכולה, אתה צריך לחכות ליצרן התוכנה כדי לבנות מחדש את חבילת היישומים בכל פעם שהבעיה הביטחונית יוצאת ? איזו חברה תוותר על השליטה על הפגיעות הפתוחה שלהם בדרך זו? - Sentenza


המכלים אמורים להיות קלים וניתנים להחלפה. אם למכולה שלך יש בעיית אבטחה, תוכל לבנות מחדש גירסה של הגורם המכיל שתוקן ולפרוס את המיכל החדש. (מיכלים רבים משתמשים בתמונת בסיס סטנדרטית המשתמשת בכלים סטנדרטיים לניהול חבילות כמו apt-get כדי להתקין את התלות שלהם, בנייה מחדש תמשוך את העדכונים מהמאגרים)

בזמן שאתה יכול לתקן בתוך המכלים, זה לא הולך בקנה מידה טוב.


6
2017-10-03 19:44





זה מטופל באופן אוטומטי ב- SUSE Enterprise Linux באמצעות מעגן zypper (1)

SUSE / zypper- מעגן

Docker התחלה מהירה


1
2018-05-08 17:05





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


0
2017-07-08 23:23