Table of Contents
מדוע קידוד סודיות אינו אופטימי יותר
פיתוח תוכנה מודרני נע במהירות.צוותים לפרוס קוד מספר פעמים ביום, מכולות מסתובבות ולמטה בתוך שניות, ותלויות מגיעות מעשרות ספריות קוד פתוח. בסביבה זו, פגם אבטחה אחד - בין אם בחבילה של צד שלישי, מיכל לא מוגדר, או מדבק קשה - יכול לחלחל לתוך פריצת אבטחה יקרה.
DevSecOps - קיצור לפיתוח, אבטחה ותפעול - הוא הנוהג של שילוב של בקרה ובדיקות ישירות לתוך האינטגרציה רציפה ומשלוח רציף (CI /CD) במקום לטפל בביטחון כשער בסוף הפיתוח, DevSecOps מטביע אותו כפעילות רציפה ואוטומטית שפועלת לצד כל בנייה, בדיקה ופריסה.
הבנה של DevSecOps: From After Thoughtt to Embedded Practice
DevSecOps בונה על הרעיונות הבסיסיים של DevOps - אוטומציה, שיתוף פעולה ושיפור מתמשך - אבל מרחיב אותם לכלול אבטחה כאזרח מחלקה ראשונה. במודל אבטחה מסורתי, צוות אבטחה נפרד מבצע בדיקה או מבחן חדירה זמן קצר לפני השחרור.אם נושאים נמצאים, מפתחים חייבים לעצור, לתקן את הקוד, ולחדש מחדש את המחזור.
באופן בולט, דו-סקפטיופס אומר כי בדיקות אבטחה - מניתוח סטטי כדי לסרוק את האימות - הן אוטומטיות והוצאו להורג על כל קוד מבצע, כל בקשה, וכל פריסה.הצנרת עצמה הופכת למטוס השליטה למדיניות הביטחון.שינוי זה מתואר לעתים קרובות כ"שינוי שמאלה", העברת פעילויות אבטחה מוקדם יותר במחזור החיים כאשר הם זולים ומהירים יותר לתקן.
עבור ארגונים שכבר משתמשים ב- CI/CD, אימוץ DevSecOps אינו בניין שלם; זהו אבולוציה. אותם תסריטים, צינורות, ו-Repositories פריטים ניתן לשפר עם תוספי אבטחה, תצורה קשיחה, ואת השערים אוטומטיים.המפתח הוא להתחיל קטן, למדוד תוצאות והיקף באופן שיטתי.
עקרונות הליבה של DevSecOps
לפני צלילה לכלי וביצוע, זה עוזר להבין את העקרונות המנחים כל החלטה של דו-קבאט.עקרונות אלה אינם אקדמיים - הם מודיעים ישירות כיצד אתם מעצבים את הצינור שלכם ובוחרים אינטגרציה.
אוטומציה אוטומציה
ביקורות אבטחה ידניות איטיות מדי ולא עקביות עבור CI /CD. DevSecOps המודרנית מסתמכות על כלים אוטומטיים לסרוק קוד, תלות, מכולות, ותצורה של תשתיות.אוטומציה מבטיחה שכל שינוי נבדק באופן עקבי ותוצאות זמינות בתוך דקות, לא ימים. זה גם משחרר מומחי אבטחה להתמקד באיומים מורכבים ועיצוב מדיניות במקום בדיקות חוזרות.
אבטחה -Left Security
Shift-שמאל פירושו לבצע פעולות אבטחה מוקדם ככל האפשר בתהליך הפיתוח.הזמן הטוב ביותר למצוא פגיעה הוא בעוד הקוד עדיין נכתב, לא לאחר שהוא כבר מוזג ונארז. Shifting שמאל מקטין את עלות הניתוק ומונע קוד רע להגיע הייצור.בצנרת CI /CD, Shift-שמאל מתורגם להפעלה של ניתוח סטטי על כל ביצוע ומושך בקשות לפני מיזוג.
שיתוף פעולה בין צוותים
DevSecOps שובר את המחליפים שמפתחים נפרדים באופן מסורתי, תפעול ואבטחה.מפתחים תורמים לשיטות קוד מאובטחות, פעולות להבטיח אבטחה בזמן ריצה, מומחי אבטחה מספקים כלים ומדיניות. תקשורת סדירה, לוחות נתונים משותפים, ומקדחות תגובה משותפת לבנות תרבות שבה אבטחה היא העבודה של כולם.
מעקב מתמשך ו- Feedback
אבטחה אינה מסתיימת בפריסת.פוסט-דה-ה ניטור - כגון יישום יישום עצמי הגנה עצמית (RASP), רשת זיהוי אנומלי וניתוח יומן - מאכילה את הממצאים בחזרה לתוך הצינור.כאשר פגיעה חדשה מתגלה בספריה שכבר השתמשת, הצינור צריך אוטומטית דגל מושפע חפצים וגורם להפעלה מחדש.
אבטחה כקוד
בדיוק כפי שניתן להגדיר תשתיות וגרסה בקוד, מדיניות אבטחה, כללי ציות והגדרות מבחן צריך להיות מאוחסן בקידוד Repositories. לטפל בביטחון כקוד הופך אותו לבחינה, לבחינה, לבחינה ולחזרה על עצמו.זה גם מאפשר לצוותים ליישם את אותן זרמי עבודה של ג'ט - סניף, למשוך, לאשר - לשינויים ביטחוניים, להבטיח שקיפות וביקורתיות.
בניית דו-קפיפי CI/CD Pipeline
עם עקרונות במקום, הצעד הבא הוא לעצב ולבנות את הצינור. צינור דו-וויס-דאם בדרך כלל כולל כמה קטגוריות של בדיקות אבטחה אוטומטיות.
כלי סורק אבטחה
החלק הגלוי ביותר של DevSecOps הוא חבילת סורקי אבטחה שפועלים במהלך השלבים של הבנייה והמבחן.כלים אלה פועלים בשכבות שונות של היישום:
בדיקה אחרונה ב-Ste Application Security Testing (SAST)
כלי SAST מנתחים קוד מקור מבלי לבצע אותו, זיהוי דפוסים הקשורים לפגיעות כגון: SQLזרקה, תסריט חוצה אתר, ו-buffer overflows, כי SAST פועל מוקדם צינור - לעתים קרובות על כל ביצוע - זה מספק משוב מיידי למפתחים. פופולרי כלי SAST כוללים את FLT:0SemgrepFLT:1 (פתוח), LT:2eck 3K3x:
בדיקת אבטחה יישומים דינמיים (DAST)
כלים DAST בודקים יישומים באמצעות שליחת עומסי תשלום זדוניים והתבוננות בתגובות.הם בדרך כלל פועלים נגד סביבות עוקץ או טרום ייצור לאחר הפריסה. DAST תופס בעיות במשרה חלקית כי ניתוח סטטי לא יכול, כגון פגמים אימות ונקודות קצה לא מוגדרות. אפשרויות קוד פתוח כמו FLT:0OWASP ZAPFLT:1 יכול להיות מוקרן לתוך צינורות /CD.
ניתוח הנדסת תוכנה (SCA)
(ב) סריקות של הפרויקט שלך - הן ישירות והן מעבר - כנגד מסדי נתונים של פגיעות ידועים כגון מסד הנתונים הלאומי של הפגיעות (NVD) זה גם דגלים רשיונות אשר עלולים להתמודד עם המדיניות של הארגון שלך.
מכיל וסורק תשתיות
אם אתה משתמש ב-Docker, Kubernetes, או Terraform, הצינור שלך צריך לסרוק תמונות מכולות ותשתיות - כמו סורקים המכילות קוד כמו FLT:0TrivyofFLT:1 או FLT:2 Anchorephs ראשי תיבות של טרה-מקוד 3 (Ricials) כדי לספק סטיות בדימויים בסיסיים וחבילות מותקנות.
אכיפה אוטומטית ואכיפה מדיניות
סריקת אבטחה תופסת פרצות; רשויות מדיניות מבטיחות כי הצינור שלך עומד בדרישות ארגוניות ורגולטוריות.עם "מדיניות כקוד", אתה מגדיר כללים - לדוגמה, "כל המכולות חייבות להשתמש בדימוי בסיס חתום מרישום מהימן" או "כל נקודות קצה של API חייבות לאכוף אימות" - והצנרת באופן אוטומטי לאכוף אותם.
סיידור / CDPiline Itself
צינור DevSecOps הוא רק מאובטח כמו התשתית שלו. תוקףים יותר ויותר לכוון את מערכות CI /CD כדי להזריק קוד זדוני.השיטות הטובות ביותר לאבטחת צינורות כוללות:
- (הופנה מהדף ניהול:0) סודיות: להימנע מקשי API נוקשים, סיסמאות או תעודות בתצורת צינורות. השתמש בסודות כגון FLT:2HashiCorp VaultFLT 3 או שירותים ענן-native (מנהל סודות של AWS, Azure Key Vault) ו- inject attime.
- (FLT:0) בקרת גישה: ההרחבה 1 (ראה: ⁇ ) החל את העיקרון של זכות מינימלית לחשבונות שירות צינורות.להבטיח שרק משתמשים מורשים יכולים לשנות את השלבים, לאשר פריסות או לסביבות ייצור גישה.
- (FLT:0 Network פלמנטציה:0Network פלמנטציה: 10:1 שמור על בניית סוכנים ופריטים מחדשים במגזר רשת נפרד מהייצור. השתמש בפיירוול ובבקרות יבשתיות כדי להגביל את התנועה מבנות צמתים.
- (FLT:0)Audit logging: FLT:1ul כל פעילויות צינורות - אשר הפעילו בניין, אשר בדיקות רצו, מה יוצרו חפצים - להאכיל את הרשומות האלה למערכת אבטחה וניהול אירועים (SIEM).
רכז-ב-Step-tlementation Guide
יישום קידוד SecOps בזרימת העבודה של CI/CD שלך לא קורה בין לילה. גישה מבודקת מפחיתה את הסיכון ובנתה את אמון הצוות.
שלב 1: הערכה ובחירת כלי
החל על ידי ביקורת על צינורות CI /CD הקיימים שלך.זהה איפה בדיקות אבטחה חסרות או ידני. להעריך את ערימה הטכנולוגיה שלך: שפות תכנות, מנהלי החבילה, מתיחות מכולות, ספקי ענן. ולאחר מכן בחר כלים המשלבים בקלות עם מערכת הבנייה הנוכחית שלך (Jenkins, GitLab CI, GitHub Actions, וכו ') עדיפויות אחת או שתיים קטגוריות - לדוגמה, SAST עבור היישום הראשי שלך ו- SCA עבור אופטימיזציה עבור דרישות עבור כל דבר מבוסס על בסיס אופטימיזציה של פעילות כוזבת, במקום יישום.
שלב 2: פרויקט טייס
בחר יישום בסיכון נמוך, לא קריטי עבור שילוב DevSecOps הראשון. הוסף את סריקות האבטחה שנבחרו לצנרת ולנהל אותם במשך כמה שבועות במצב "לא חסום" - תוצאות יומני אבל עדיין לא להיכשל את הבנייה.זה מאפשר לצוות לאמת את הדיוק של הכלי, סף הכוונון, ולבנות נחמה.
שלב 3: שילוב מלא ובדיקה
ברגע שהטייס יציב, מאפשר לחסום שערים עבור פרצות קריטיות וגבוהות.עבור כל כלי, להגדיר קריטריונים ברורים של כשל (למשל, "בניין נכשל אם כל סוגיה קריטית של SCA קיים ותיקון זמין"). integrate תוצאות לתוך לוח נתונים כי מפתחים, מהנדסי אבטחה, ופעולות יכולות לראות בדרך כלל.
שלב 4: שיפור מתמשך
DevSecOps לעולם לא "done" באופן קבוע סוקר יומני סריקה כדי לחדד את הכללים, להוסיף בדיקות חדשות (למשל, DAST עבור נקודות קצה חדשות), ולשלב שיעורים מ ביקורות לאחר-הקרובות. as yourצנרת, לשקול הוספת ניטור זמן, איומים מודלים של תרגילים, ודיווחים אוטומטיים של תאימות. לטפל הצינור עצמו כמוצר: הוא, שינויים, ובקשת שיפורים מהקבוצה.
ארכיון תגיות: Breaking Down Silos
כלים בלבד אינם יכולים ליצור תרבות דו-קפוחיות, הצד האנושי הוא קריטי באותה מידה.שלושת השינויים התרבותיים החשובים ביותר:
- (FLT:0) שיתוף בעלות: FLT:1 מפתחים לא צריכים להרגיש שאבטחה היא "בעיה של מישהו אחר" למנוע מדדי אבטחה בלוחות נתונים קבוצתיים ולהכיר צוותים שמשפרים את היציבות הביטחוניות.
- (FLT:0) אימון והדרכה: FLT:1 לספק הדרכה מעשית עבור מפתחים על קוץ מאובטח, איום מודלים ושימוש בכלי אבטחה. Gamify למידה עם לכידת-the-flag (CTF) תרגילים.
- (FLT:0) ריכוזים התואמים את התוצאות: ⁇ 1) מעבר לספירת ספירות פגיעות. Measure Mean Time to Remediate (MTTR), אחוז של בנייה עם בדיקות אבטחה עבר, והפחתה במקרים שלאחר השחרור.
כאשר מפתחים רואים את האבטחה כיכולות בנויות שממהירויות משלוח (על ידי לכידת בעיות לפני שהם הופכים לבלוקים), אימוץ מאיץ באופן אורגני.
הצלחה: מפתח ו KPIs
ללא מדידה, אי אפשר לדעת אם ההשקעות של DevSecOps משלמות.חשבות מעקב אחר המדדים האלה:
- זמן להפעלה (MTTRIRLT): 1 הזמן בין גילוי פגיעוּת לבין יישום תיקון. A ירידה MTTR מציין כי הצינור מספק משוב מהיר יותר וצוותים פועלים על זה.
- צפיפות הפגיעות:0 (FLT:1) מספר פרצות לאלף שורות קוד, עבור ביצוע חדש.מדד זה עוזר להעריך אם כישורי ההנעה מאובטחים של הצוות משתפרים עם הזמן.
- שיעור חיובי:0 (FLT:1) אחוז ממצאי האבטחה שהם אזעקה כוזבת.קצב חיובי גבוה של אמון ומוביל לעייפות ערנית. השתמש במדרון זה כדי לכוון כללים ולבחור כלים טובים יותר.
- (FLT:0) כיסוי כיסוי: 0Scan: 1 אחוז צינורות ו- repositories שיש סריקות אבטחה פעיל. Aim עבור 100% כיסוי של כל יישומי הייצור.
- שיעור הבנייה:0(Blocked Building rate: FLT:1ig% של בנייה חסומה על ידי שערי אבטחה.קצב גבוה מוקדם הוא נורמלי; שיעור ירידה מתמדת מעלה כי מפתחים לומדים לכתוב קוד מאובטח מההתחלה.
לוחות דשטוש יכולים לדמיין את המדדים האלה, וספקי השבירה של הצוות צריכים לכלול סקירה של אבטחה KPI לצד ביצועים ומדדים תכונה.
אתגרים משותפים וכיצד להתגבר עליהם
אפילו יוזמות מתוכננות היטב של DevSecOps להתמודד עם המכשולים.התמכים אתגרים אלה עוזרים לך להתכונן:
- (FLT:0) ,Resistance to Change:FLT:1 Developers עשוי להציג סריקות אבטחה כמו להאט אותם.נגד זה על ידי הדגשת הזמן שנשמר מאירועים ייצור פחות, ועל ידי שילוב מהנדסי אבטחה בתכנון סיבולת.
- (FLT:0) עייפות טוול: 1 לרוץ יותר מדי סורקים רבים יכול להציף את הצינור לייצר עשרות ממצאים. עדיפויות: להתחיל עם אחד או שניים סורקים שמטפלים בסיכונים הגדולים ביותר שלך.
- (FLT:0) גבוה חיובי כוזב: (1) כללי טונינג ושימוש בסף חומרת יכול להפחית רעש.בנוסף, לאפשר למפתחים לדכא חיובי כוזב ספציפי עם תגובה והצדקה, שנסקרו באופן זמני על ידי צוות האבטחה.
- (FLT:0Speed לעומת אבטחה: 1) קיים חשש משותף כי הוספת בדיקות אבטחה יגדיל את זמני הבנייה. Mitigate זה על ידי מקבילה סריקות, באמצעות ניתוח מצטבר (אפשר רק לשנות קבצים), וסריקות תלותיות קליגה.
- (FLT:0Legacy Code: FLT:1) יישומים קיימים עשויים להיות אלפי נקודות תורפה לפני-היתר, במקום לנסות לתקן את כולם בבת אחת, להקים קו בסיס ולהתמקד לא להציג חדשים.
דוגמאות ושיעורים אמיתיים
כמה מקרים ביטחוניים בעלי פרופיל גבוה היו יכולים למנוע או להפחית את שיטות העבודה של DevSecOps.The FLT:0 (Equifax BreakveFLT:1 2017) ניצלה פגיעה ידועה ב- Apache Struts - פגיעה שהייתה לו חתומה זמין.עם כלי קוד אוטומטי ששילם את הספרייה המיושנת ומדיניות שחסמה תוך שימוש בה, הצינור היה תופס את הסיכון הארוך לפני ההתקפה של קודמו באופן דומה:
בצד החיובי, ארגונים כגון FLT:0 (EtsyverFLT) 1:1, ⁇ :2NetflixFLT 3, ו-FLT:4Capital One EvolutionFLT:5 פרסמו מחקרים מקרה על איך הם הטמיעו אבטחה לתוך CI /CD. Netflix "אבטחת אבטחה ותזמורת" פועל באופן אוטומטי ניתוח, מדיניות כמו קוד, ותוצאות קבוע של אספקת ענן אחת, לא רק לאחר ניתוח אבטחה אחת, מנגנוני אבטחה אוטומטיים, מנגנוני אבטחה גדולים, מנגנוני אבטחה ותיקון, מנגנוני אבטחה.
מסקנה: התחל קטן, בינוני חכם
יישום דו-קפוחיות בזרימת העבודה של CI/CD שלך הוא אחד הדרכים היעילות ביותר לשיפור האבטחה ללא מהירות הקרבה.על ידי העברת בדיקות אבטחה, בדיקות אוטומטיות, וטיפוח תרבות של אחריות משותפת, צוותים יכולים למצוא ולפתור נקודות תורפה לפני שהם מגיעים לייצור.הדרך אינה דורשת תשתית מלאה על פני השטח - היא מתחילה עם הכלים הנכונים, טייסת על בסיס נתונים נמוכים, סיכון מבוסס על בסיס נתונים אמיתיים.
זכור כי DevSecOps הוא מסע, לא יעד.כפי שהיישום שלך מתפתח ואיומים חדשים מופיעים, הצינור שלך חייב להתאים.המשך ניטור מדדים, מדיניות הזיכוך, להשקיע באימון קבוצתי.התוצאה היא מחזור חיים פיתוח שבו אבטחה אינה צוואר בקבוק אלא מאפשרת משלוח מהיר יותר, בטוח יותר.התחל היום עם סריקה אחת, פרויקט אחד, מדיניות אחת - ואז לבנות משם.