ראיון ISMG – אבטחת יישומים, האצת DevOps עם קוד נקי
זה חודש המודעות לאבטחת סייבר! כדי להתניע את העניינים, אנחנו מסתכלים אחורה על השיחה שניהל מייסד ומנכ"ל משותף של Sonar, אוליבייה גאודין, עם טום פילד מקבוצת מידע אבטחת מדיה ב-Black Hat USA השנה. השניים שוחחו על Clean Code, מה זה ולמה זה חשוב לאבטחה, כמו גם על ההכרזה האחרונה על SAST עמוק יותר.
טום: שלום לך, אני טום פילד. אני סגן נשיא בכיר למאמר מערכת ב- Information Security Media Group שמדבר על Clean Code. זו הזכות שלי לקבל את פני לאולפן אוליבייה גאודין, הוא המייסד והמנכ"ל המשותף של Sonar.
אוליבייה: תודה רבה.
מה הכוונה ב"קוד נקי"?
טום: אז, נתחיל עם המונח הזה, קוד נקי. כשאתה אומר "קוד נקי", למה בדיוק אתה מתכוון?
אוליבייה: אוקיי, אז מה שאנחנו מתכוונים הוא קוד שאינו מלוכלך.
טום: הייתי אומר שזה מסדר את זה.
אוליבייה: ואיך אנחנו מגדירים את זה, אנחנו מגדירים את זה בכך שקוד נקי צריך להיות עקבי, כלומר, אם אתה רוצה שצוות המפתחים שלך יוכל לנהל בפועל קוד, להחזיק בו באופן קולקטיבי, לא לבזבז זמן וכו'. ., אתה צריך קצת עקביות. אז אנחנו מדברים על קונסטרוקציות בסגנון, הקוד שלך צריך להיות אידיומטי וכו'. הוא חייב להיות מכוון, כל מה שאתה מכיר – מבלי להיכנס יותר מדי לפרטים – כל משאב שלא משתחרר, כל קלט משתמש שאינו מחוטא, כל אמירה סותרת היא לא משהו שהתכוונת, אז אנחנו מנסים לתפוס את זה כדי להראות לך את זה. הקוד צריך להיות ניתן להתאמה, כלומר, אתה צריך להיות מסוגל לשנות אותו. בהגדרה, כולם מצפים שהתוכנה תשתנה. אחרת, אתה צריך לקרוא לזה משהו אחר. וגם, הקוד צריך להיות אחראי. לא אמורים להיות סודות מקודדים בקוד, אסור לגנוב קוד מאחרים וכו'. אז זו באמת ההגדרה של Clean Code: עקבי, מכוון, מסתגל ואחראי.
מה בסיכון ללא קוד נקי
טום: ואנחנו יודעים שזה לא אוניברסלי בימינו. זה מונח מצוין אבל הוא לא רחב. זה לא מאומץ בצורה רחבה כמו שצריך. דבר איתי על מה הסיכון כשאין לך Clean Code.
אוליבייה: כן, אז הכל קשור, אם אתה חושב על תוכנה, אני מתכוון, קוד הוא הנכס העיקרי של תוכנה. מלבד קוד, יש לך חלקים שהם סחורה חד פעמית, אבל הקוד הוא הנכס החשוב ביותר בתוכנה שלך. אם הקוד שלך לא נקי, למעשה לא יהיה לך נכס, תהיה לך התחייבות. הולך להיות לך משהו שקשה לשנות שלוקח הרבה זמן, שבכל פעם שאתה משנה, הוא נשבר. מה שצוותי האבטחה לא מרוצים ממנו, צוותי התשתית לא מרוצים ממנו. אז בעצם, אנחנו מדברים על פרודוקטיביות, מהירות, סיכון ושבריריות של היישום שלך – כל כך הרבה השלכות.
גישת ה- "Clean as You Code"
טום: דבר איתי על גישת Clean as You Code שלך ועל היתרונות שניתן למצוא מכך.
אוליבייה: כן, אז התחלנו את סונאר לפני 15 שנה – שלושה מייסדים, שלושה מהנדסי תוכנה – זה היה נושא חיינו וזה היה מאז. ומה שהבנו מהר מאוד זה שיש לנו גישה ל-Clean Code שלא עבדה. אפילו בתור שלושה בחורים במוסך, לא הצלחנו באמת להגיע ליעדים שלנו והתחלנו לתהות מה לא בסדר בגישה שלנו, והתחלנו לתהות אם יש עסק, יש כאן תחום שאנחנו צריכים להמשיך ולחקור. . ובאיזשהו שלב, הבנו שהדרך שבה אנחנו מסתכלים על הבעיה אינה נכונה.
אוליבייה: הסתכלנו על הפעלת ניתוח, קבלת כמה דוחות, ואז הבנו איך לתקן את זה. וכשאתה עושה את זה, אתה משאיר הרבה מקום להיכשל בפועל, וזה מה שקרה לנו. בכל שחרור שעשינו, היו לנו יעדים מסוימים, שהיו סבירים, שאפתניים, אבל עדיין ניתנים להשגה, ולא הצלחנו להגיע אליהם. היינו צריכים לעסות את המספרים או סוג של עבודה כדי ליצור את המספרים, והרגשנו שאם אנחנו לא יכולים לעשות את זה, אף אחד לא יכול לעשות את זה. אז התחלנו לחשוב מה אנחנו עושים כאן, האם אנחנו באמת מסתכלים על הבעיה הנכונה? והבנו שאנחנו לא. מה שעשינו, ומה שהרבה חברות עדיין עושות, זה שאתה מסתכל על מצב הקוד שלך ביחד ומנסה לשפר את המצב הכללי. וזו בעיה. אני הולך לעשות השוואה – אם יש לך נזילת מים בבית, מה אתה עושה קודם?
טום: למצוא אותו?
אוליבייה: כן.
טום: ותפסיק עם זה.
אוליבייה: כן, ואז אתה, אתה תנגב את הרצפה, נכון? לא היית מפסיק לנגב את הרצפה אם לא תיקנת את הנזילה, נכון? מאוד הגיוני, כן. כשאתה מדבר על קוד, זה אותו דבר. כלומר, אתה מסתכל על המדינה. יש מים שכבר נמצאים על הרצפה, ומיד אתה אומר "אוי אלוהים, אנחנו צריכים לתקן את זה, אנחנו צריכים לתקן את זה, אנחנו צריכים לתקן את זה." ואתה מעורב בזה, ומה שקרה במקביל הוא שעדיין יש לך 2,000 מפתחים שממשיכים לדחוף דברים. אז פעם התחלנו להבין את זה, וכשאני אומר ככה, ברור מאוד.
טום: כן.
אוליבייה: לקח לנו כאן כנראה שנה וחצי להבין את זה, ואז זה נהיה סופר פשוט. הדבר החשוב ביותר שעלינו לעשות הוא לתקן את הנזילה. מה שאומר בעצם, לוודא שבכל פעם שמפתחים משנים קוד או מוסיפים קוד, הקוד הזה יהיה נקי. וכשאתה עושה זאת, פתאום, הקוד החדש – מה שאנו מכנים הקוד החדש – נקי. אבל יש לזה גם יתרון גדול, שהוא, בגלל שאנחנו ממשיכים לשנות תוכנה, אנחנו למעשה מתקינים את העבר. ולזה אנחנו קוראים Clean as you Code. כלומר, זוהי דרך פשוטה מאוד שיטתית אך רבת עוצמה לתיקון קוד בכל היישום שלך. אתה מחזיר את החוב הטכני מדור קודם עם זה.
אופטימיזציה של זרימת העבודה של DevOps עם קוד נקי
טום: אז ספר לי כיצד ניתן לבצע אופטימיזציה של זרימות העבודה של DevOps.
אוליבייה: אז, ההגדרה שלי ל-DevOps היא, זה סט של כלים על תהליכים שיאפשרו פיתוח, לייצר קוד באופן ליניארי. ומה שקורה הוא שאם לא תעשה Clean Code, אתה תהיה מסוגל לעשות את זה פעם, פעמיים, אתה תהיה מסוגל לעשות איטרציה אחת, שתי איטרציות, שלוש איטרציות. אבל בשלב מסוים, כאשר תרצה להוסיף תכונות, אתה הולך להיות תקוע עם החוב הטכני שלך. כלומר, אתה רוצה לשנות משהו אבל זה שובר משהו אחר, קשה לקרוא אותו, אנשים כבר לא ממש מבינים את הקוד. אז בעצם, אם יש לך, אם אתה מספק Clean Code – הגישה המועדפת היא Clean as You Code, היעילה ביותר – תוכל לקבל אספקה מתמשכת בת קיימא.
טום: כן, יש להניח שגם את הפרודוקטיביות של המפתחים ואת המהירות והמשלוח ניתן לשפר.
אוליבייה: בהחלט. יש שני יתרונות גדולים – האחד הוא באמת מה שאני קורא לתפוקה, כלומר אתה יכול לעשות יותר עם אותו מספר אנשים או שאתה יכול לעשות את אותו הדבר עם פחות אנשים. וניהול הסיכונים שלך, כלומר, אתה לא רוצה שכאשר אתה שולח את האפליקציה שלך לייצור, היא קורסת או שהיא יכולה להיפרץ. בעצם, אלו שני היתרונות הגדולים.
מבט מעמיק יותר לתוך SAST
טום: אז, עכשיו הודעת הודעה מראש על כובע שחור. אתה יכול לספר לי קצת מהפרטים בבקשה?
אוליבייה: בטח. אז מה שהכרזנו הוא ששחררנו את מה שאנחנו מכנים deeper SAST, שהיא גרסה עמוקה שמעמיקה כשמבצעים ניתוח אבטחה. אז, אם אתה חושב על, עולם אבטחת היישומים כיום, יש לך באמת שני חלקים. האחד הוא שאתה מנתח קוד. ואז החלק השני הוא שאתה משחק איתו, אני מתכוון איתך, אתה מקיים אינטראקציה עם האפליקציה בזמן ריצה. אז אנחנו מתמקדים בהגדרה בראשון. ובזה, בעולם הזה של ניתוח קוד, יש שוב שני חלקים. אחת מהן היא להסתכל על הקוד שלך, אז אתה בעצם עושה ניתוח סטטי כדי להבין היכן הכנסת נקודות תורפה. בצד השני יש מה שנקרא ניהול תלות SCA, OSA וכו'.
אוליבייה: ובעיני, אחד הדברים שתמיד היו מאוד מוזרים הוא ששני החלקים הם קוד, אבל אנחנו מסתכלים עליהם אחרת. מצד אחד, אנו מנתחים. בצד השני, אנחנו פשוט יוצרים מסדי נתונים שעומדים להתייחס לפרצות. למה אנחנו עושים את זה? אני חושב שמבחינה היסטורית, זה נובע מבעיות בביצועים טכנולוגיים וכו' אבל אין סיבה אמיתית לעשות את זה יותר. אנו מאמינים שעלינו לנתח את שני החלקים כקוד כי, בסופו של יום, הספריות הן רק הרחבה של הקוד שלך – זהו קוד שאתה לא כותב מחדש, אתה משתמש מחדש בעצם. אז זה מה שאנחנו עושים עכשיו, אנחנו מנתחים את כל הקוד בבת אחת ונוכל למצוא נקודות תורפה שלא ניתן היה למצוא קודם לכן.
הבידול של סונאר
טום: עכשיו אוליבייה, השיחות שניהלתם במשך שנים הן שיחות שמנהיגי אבטחה רבים מנהלים זה עתה. זהו שוק שבו אבטחת תוכנה מאומצת כעת. בשוק הזה, איך Sonar מבדיל את עצמו משאר המתחרים?
אוליבייה: אם היית ב-Black Hat והסתובבת באולם האקספו, אתה תגלה שההודעות מאוד דומות בכל הדוכנים. אבל אם אתה לוקח צעד קטן אחורה ואתה חושב קצת יותר על איך אנשים מעורבים, זה למעשה בולט מאוד בהודעות. רוב הספקים, הם למעשה מצהירים שהם ידידותיים למפתחים, הם מצהירים שהם זזים שמאלה, והם מצהירים שלפעמים הם עוזרים להעמיד מפתחים לשירות צוות האבטחה. ואני חושב שזה באמת מה שהם עושים, כלומר רוב הספקים, הם למעשה נכנסים לפעולה כאשר האבטחה נבדקת. ומכיוון שיש כל כך הרבה חיכוכים, הם מבינים – חיכוך מבחינת, זה מגיע מאוחר מדי והמפתחים גם דוחפים לאחור בתיקון דברים – הם מנסים להיכנס יותר לחלק הפיתוח. נקטנו בגישה הפוכה לחלוטין, כלומר, אנחנו באים מהפיתוח. כלומר, אנו משרתים מפתחים. וכתופעת לוואי נחמדה מאוד, למעשה יש לה השפעה גדולה על האבטחה. אז זה בעצם מועיל לצוות האבטחה. אז מבחינתי, זה ההבדל הגדול ביותר וכפי שעשינו את זה מאז ומעולם, היינו צריכים להיות מסוגלים לרצות מפתחים. כלומר, המוצר שלנו הוא סופר מהיר, סופר משולב היטב, ויש לו מעט מאוד תוצאות שווא, כי אתה יודע מה? מפתחים, הם לא אוהבים תוצאות שווא. כשהם רואים חיובי כוזב אחד ואחר כך עוד אחד, ואחר כך שלישי, הנושא הבא – שעומד לבוא – יהיה כמו, "אני אפילו לא מסתכל על זה, זה חיובי שגוי."
טום: טוב מאוד. תעריך את הזמן שלך, תעריך את התובנה שלך. תודה רבה לך.
אוליבייה: תודה רבה.
טום: הנושא היה קוד נקי. אתה יכול להסתכל על החולצה – קוד טוב יותר. העונג שלי הוא לדבר עם אוליבייה גאודין, מייסד ומנכ"ל משותף של Sonar. עבור קבוצת מדיה אבטחת מידע, אני טום פילד. תודה לך על הזמן והתשומת לב שלך היום.