יחידה 10 / 11

ניהול אבטחה וסודות: DevSecOps ובינה מלאכותית

רווחים:

  • יכולת להבין DevSecOps וכללי הזהב של ניהול סודות (לא מזין קוד, נשמר בכספת, מוזרק בזמן ריצה, מוחזר, פחות הרשאות)
  • יכולת להשתמש בבינה מלאכותית לתעדוף פלטי סריקת אבטחה (SCA, SAST, תמונה, IaC, סודי) וקוד ביקורת למטרות הגנה
  • בידיעה שהשלב הראשון בהדלפה סודית הוא ביטול/היפוך ושימוש בבינה מלאכותית רק במערכות מורשות, למטרות הגנה, במגבלות חוקיות

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

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

כללי הזהב של ניהול סודות

  1. סוד אף פעם לא נכנס לקוד המקור. לא Dockerfile, לא YAML, לא סקריפט, לא Git. לאחר הכניסה ל-Git, הסוד נמשך בעבר.
  2. סודות נשמרים בכספת מרכזית. HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager - סודות אלה מאחסנים מוצפנים, שולטים בגישה ועוקבים אחריהם.
  3. זה מוזרק בזמן הניתוח. האפליקציה מאחזרת את הסוד מהכספת או משתנה הסביבה תוך כדי ריצה, לא מהדיסק.
  4. זה מסתובב באופן קבוע. ככל שחייו של סוד ארוכים יותר, כך גדל הסיכון לדליפה. סיבוב אוטומטי הוא אידיאלי.
  5. סמכות מינימלית. רק השירות שזקוק לו יכול לגשת לכל סוד.
טיפ: אמצעי הנגד היעיל ביותר הוא לשים סורק סודי (כמו git-secrets, gitleaks, trufflehog) בצנרת: הוא עוצר את ה-commit אם בטעות מנסים לבצע סוד. זה עוצר את הדליפה במקור. AI עוזר לכתוב את שילוב הצינור של הדפדפנים האלה.

צעד אחר צעד: תגובה לדליפה סודית

אם סוד דלף, אל תיבהל, הסדר חשוב:

  1. בטל וסובב מיד. בטל את התוקף של מפתח דלף, צור אחד חדש. רק למחוק אותו זה לא מספיק - זה נשאר בעבר.
  2. העריכו את ההשפעה. לאן המפתח הזה ניגש? האם נעשה בו שימוש לרעה? בדוק את היומנים.
  3. כבה את המקור. איך זה דלף? נקה קוד, היסטוריה; אבל זכרו: הביטול בא לפני הפינוי.
  4. לִמְנוֹעַ. הוסף את הדפדפן הסודי לצינור כדי שהוא לא יחזור על עצמו.
שימו לב: ההימור היקר ביותר הוא לא להחזיר סוד שדלף רק כי "אף אחד לא ראה אותו". מפתח שנפל למאגר ציבורי נסרק על ידי בוטים תוך שניות. כאשר יש ספק, סובב - עלות הסיבוב נמוכה, עלות הדליפה היא קטסטרופלית.

סוגי סריקות אבטחה

DevSecOps משתמש במספר שכבות של סריקה; ה-AI מועיל לפרש את הפלט של כל אחד מהם:

  • SCA (Software Composition Analysis): מאתר נקודות תורפה ידועות (CVE) בתלות הקוד הפתוח שבה אתה משתמש.
  • SAST (בדיקות אבטחת יישומים סטטיות): סורק קוד מקור לאיתור נקודות תורפה מבלי להפעיל אותו.
  • DAST (בדיקת אבטחת יישומים דינמית): בודק את האפליקציה הפועלת באופן חיצוני.
  • סריקת תמונה: מאתר נקודות תורפה בתמונת המכולה (טריווי, docker scout).
  • סריקת IaC: מוצא הגדרות שגויות ב- Terraform/manifests (tfsec, checkov).
זהירות: סורק זורק מאות ממצאים; אי אפשר לתקן את כולם בו זמנית. השתמש ב-AI כדי לתעדף ממצאים: אילו באמת ניתנים לניצול, אשר ברורים בתיאוריה אך בלתי נגישים בפועל? אבל אמת את סדר העדיפויות הסופי עם ההקשר שלך.

טבלת שכבות רסטר

שכבה

מה זה סורק?

רכב לדוגמא

מתי

SCA

פרצות תלות (CVE)

דפנדבוט, סניק

כל בנייה

SAST

פרצות קוד מקור

Semgrep, CodeQL

כל יחסי ציבור

סריקת תמונה

פגיעויות של מיכל

טריווי, צופית

לאחר בנייה

סריקת IaC

תצורה שגויה

tfsec, checkov

Terraform PR

סריקה סודית

סודות דלפו

gitleaks

כל התחייבות

שלושה מיני תיקים

מקרה 1 - 300 CVEs, 12 סיכונים אמיתיים. סריקת תמונה דיווחה על 300 פגיעויות; הצוות היה משותק. תן את פלט הסריקה ל-AI ושאל "אילו מהם ניתן לנצל מרחוק והאם ניתן להגיע אליהם?" הם תעדיפו את זה. AI הדגישה 12 ממצאים מסוכנים אמיתיים. הצוות הראשון סגר אותם; את השאר הוא שכר על בסיס מתוכנן. תעדוף על פני פאניקה.

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

מקרה 3 - סריקת IaC תפסה דלי פתוח. סריקת IaC בסיוע בינה מלאכותית תפסה דלי אחסון בקוד Terraform בעל הרשאת "קריאה ציבורית" מבלי לעבור לדרבן. היזם פתח אותו "לבדיקה" ושכח לסגור אותו. צינור עצר את ההתחייבות; פתוח אף פעם לא הצליח להגיע. זו בדיוק הנקודה בהחלקה שמאלה.

ארבע תבניות הניתנות להעתקה

1) תעדוף פלט סריקה:

תעדוף את פלט סריקת האבטחה למטה. עבור כל ממצא: (1) האם ניתן לנצל אותו באמת (מרוחק/לא מאומת?), (2) האם הוא נגיש בהקשר שלנו, (3) מאמץ לתיקון, (4) עדיפות מומלצת (קריטית/גבוהה/בינונית/נמוכה). הדגש את 5 הדחופים ביותר. דבר ברור; מציין שאני צריך לאמת כל עדיפות עם ההקשר שלי. פלט: [סריקה]

2) עיצוב ניהול סודי:

הצע גישת ניהול סודות עבור [APPLICATION/INFRstructure]: איזו כספת, כיצד להחדיר סודות בזמן ריצה, כיצד להפוך רוטציה לאוטומטית, כיצד לאכוף הרשאות מינימליות? תאר זרימה קונקרטית שלעולם לא מטביעה את הסוד בקוד.

3) חיפוש נקודות תורפה בקוד (הגנה):

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

4) תוכנית תגובה לדליפה סודית:

ייתכן ש-[סוג סודי] חדר בטעות ל-[LOCATION]. תן לי צו התערבות צעד אחר צעד: מה עלי לעשות קודם (ביטול/החזרה), איך להעריך את ההשפעה, איך למנוע הישנות? הסבירו גם למה רק מחיקה לא מספיקה.

הנחיה חלשה / הנחיה חזקה

חלש: "איך אני פורץ למערכת הזו/מנצל את הפגיעות הזו?"

בקשה זו היא גם לא אתית וגם מחוץ לגבולות הפלטפורמה הזו. זה לא חוקי להשתמש בבינה מלאכותית להתקפה.

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

הבדל: הבקשה השנייה היא למטרות הגנתיות, בגבולות הסמכות ולגיבוש. זהו השימוש הנכון ב-AI ב-DevSecOps.

טעויות נפוצות

  • הטמעת הסוד בקוד/היסטוריה. הפגיעות הנפוצה והמתמשכת ביותר.
  • לא מחזיר את הסוד שדלף. "אף אחד לא ראה את זה" הוא ההימור היקר ביותר.
  • לראות את כל ממצאי ההקרנה כשווים. להיות משותק על ידי סדר עדיפויות או החמצת סיכון אמיתי.
  • משאירים את האבטחה עד הסוף. הפער בפרוד יקר פי כמה מהפער בצנרת.
  • עקיפת סמכות מינימלית. סוד/תפקיד שיש לו גישה להכל הופך דליפה בודדת לאסון.
  • מנסה להשתמש ב-AI להתקפה. לא חוקי ומחוץ לפלטפורמה.

לסיכום

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

משימת יישום

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

רשימת בדיקה

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