מהי סריקת קוד?

הושלמה

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

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

ביחידה זו, תלמד אודות CodeQL, שלוש האפשרויות להגדרת סריקת קוד וכיצד להוסיף את זרימת העבודה של CodeQL למאגר שלך.

אודות סריקת קוד באמצעות CodeQL

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

  • השתמש בהגדרת ברירת המחדל כדי לקבוע במהירות את התצורה של ניתוח CodeQL לסריקת קוד במאגר שלך. ברירת המחדל להגדרה מטפלת בבחירת השפות לניתוח, חבילת שאילתות להפעלה ואירועים שמפעילים סריקות עם האפשרות לקבוע באופן ידני את התצורה של השפות וחבילות השאילתות. אפשרות הגדרה זו מפעילה סריקת קוד כפעולה GitHub.
  • השתמש בהגדרה מתקדמת כדי להוסיף את זרימת העבודה של CodeQL ישירות למאגר שלך. הוספת זרימת העבודה CodeQL ישירות למאגר שלך יוצרת קובץ זרימת עבודה הניתן להתאמה אישית, המשתמש בפעולה github/codeql-action כדי להפעיל את ה- CLI של CodeQL כפעולה GitHub.
  • הפעל את ה- CLI של CodeQL ישירות במערכת CI חיצונית והעלה את התוצאות ל- GitHub.

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

CodeQL תומך הן בשפות הידור והן בשפות מפורשות, והוא יכול למצוא פגיעויות ושגיאות בקוד הכתוב בשפות הנתמכות הבאות:

  • C או C++‎
  • C#‎
  • הלך
  • ג'אווה/קוטלין
  • JavaScript/TypeScript
  • פיתון
  • Ruby
  • סוויפט

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

הפוך את CodeQL לזמין במאגר באמצעות הגדרת ברירת המחדל

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

בצע שלבים אלה כדי להגדיר סריקת קוד באמצעות זרימת העבודה של פעולות CodeQL GitHub:

  1. ב GitHub.com, נווט אל הדף הראשי של המאגר.

  2. תחת שם המאגר שלך, בחר אבטחה.

    צילום מסך של כרטיסיית האבטחה.

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

    צילום מסך של לחצן הגדרת סריקת קוד.

  4. ברשימה הנפתחת הגדרה , בחר ברירת מחדל.

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

    המפעילים on:pull_request ו- on:push הם ברירת המחדל לסריקת קוד, וכל אחד מהם שימושי למטרות שונות. תקבל מידע נוסף על גורמים מפעילים אלה ביחידה 'קביעת תצורה של סריקת קוד '.

  6. בחר הפוך את CodeQL לזמין כשתהיה מוכן להפעיל סריקת קוד.

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

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

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

אודות חיוב עבור פעולות

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