צרו קשר תנו פידבק
מאמרים

צעדים לאבטחת צינור CI/CD

צינור CI/CD הוא חלק בסיסי בתהליכי ה-DevOps. בנוסף לתהליכים שצוותי DevOps משתמשים בהם כדי לספק תוכנה, הצינור מהווה שער לאיחוד עבודת הפיתוח עם עבודת ה- IT.

19.07.2022
3 min
גיא חורש, מהנדס פריסייל בבינת תקשורת
צעדים לאבטחת צינור CI/CD

צינור ה-CI/CD עצמו מהווה יעד למתקפות ולניצול לרעה. בשל הנגישות לקוד, מסדי נתונים, אישורים, סודות וסביבות פיתוח וייצור, אלה הופכים את הצינור ליעד אטרקטיבי עבור תוקפים, ודאגה רבה עבור ארגונים (הדבר התחדד עוד יותר בעקבות מתקפות SolarWinds והפרת Codecov, שפגעו בשרשראות אספקת התוכנה עבור אלפי ארגונים).

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

צעדים שיש לנקוט לאבטחת צינור CI/CD

1. מיפוי איומים ויישום חיבורים מאובטחים

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

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

כל החיבורים צריכים להתבצע באמצעות TLS (Transport Layer Security). במקביל יש לנעול הגדרות עבור מאגרים ושרתי בנייה, ואף לסרוק תהליכי בניית סקריפטים בכדי לאיתור פגיעויות אפשריות.

2. בקרת גישה הדוקה

יצירת רשימות וכללים לבקרת גישה בכדי לשלוט בכל הגישה לצינור ה-CI/CD. המטרה לקבל באופן ברור, קל ומיידי למי יש גישה למה, מתי ואיך.

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

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

3. הפרדת סמכויות ואכיפת הרשאות

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

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

4. שמירה על סודות

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

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

גם כאשר נעשה שימוש בכלי ניהול סודות, רצוי לנטר ולבקר את מאגרי הקוד כדי לזהות ולהסיר סודות שהועברו לבסיס הקוד – מפתחים אינם צריכים לכתוב קוד שמדפיס סוד ל Console log, אפילו במהלך בדיקה – קיימים כלים מסוימים של CI היכולים להסוות סודות במידה והם מודפסים או יוצאים בכל דרך, כגון: debug logs.

5. נעילת מאגרי קודים

מאגרי קוד, כגון Git, הם בעלי ערך גבוה לתוקפים מכיוון שהם מכילים קוד מקור קנייני וקניין רוחני — היו התקפות כופר שבהם מאגרים כאלה נמחקו. ארגונים ועסקים המארחים מאגר קוד מבוסס Git חשופים לסיכון גבוה, זאת כתוצאה מתצורה שגויה העלולה ליצור פגיעות ולחשוף את צינור ה CI/CD להתקפה.

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

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

לבסוף, יש לבצע גיבוי כחלק ממדיניות כוללת ולא כחלק מתהליך ה- CI/CD.

6. פיקוח וניקוי הסביבה

סביבת ה- CI/CD בהגדרה נועדה עבור זרימה של חלקים ותהליכים ללא הרף לבנייה ופריסה של תוכנה, על אף הדינמיות המתמשכת חשוב לא להזניח את מטלות התחזוקה והפיקוח הקשורים באבטחה. לדוגמה יש לוודא הפסקה של משאבים זמניים כגון קונטיינרים ו-VMs לאחר השלמת המשימות בכדי לצמצם את משטח ההתקפה על קונטיינרים ו-VMs (דוגמאות נוספות: הסרת כלי עזר מיותרים כגון: netcat, הפעלת קונטיינרים במצב קריאה בלבד במידת האפשר, ועוד…).

7. עדכונים ותוכניות תגובה לאירועים

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

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

לסיכום

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

יש לפלח את צינור ה CI/CD משאר הרשת הארגונית ולבצע מעקב קבוע אחר הצינורות והתהליכים המוזרמים בהם לאיתור סימנים לפעילות חשודה או בלתי הולמת.

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

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