שימוש בתוסף האבטחה של Gemini CLI לביקורות על בקשות משיכה ב-GitHub

1. מבוא

Gemini CLI Security Extension הוא תוסף קוד פתוח ל-Gemini CLI שנוצר על ידי Google. התוסף מנתח קוד כדי לזהות סיכוני אבטחה ונקודות חולשה. אתם יכולים להשתמש בתוסף האבטחה עם Gemini CLI כדי לזהות בעיות אבטחה באופן מקומי, בדיוק כמו שאתם עושים עם כל תוסף ל-Gemini CLI. אפשר גם להפעיל אותו כדי לבדוק בקשות משיכה ב-GitHub. ב-Codelab הזה נסביר איך להשתמש בתוסף האבטחה במאגר GitHub.

מה תעשו

  • הגדרת אימות מאובטח מ-GitHub ל-Google Cloud
  • יצירת תהליך עבודה של GitHub Actions שקורא לתוסף האבטחה של Gemini CLI
  • הרצת בדיקת אבטחה בבקשת משיכה חדשה או קיימת באמצעות GitHub Actions

מה תלמדו

  • איך משתמשים באיחוד שירותי אימות הזהות של עומסי עבודה כדי לבצע אימות מאובטח מ-GitHub Actions ל-Google Cloud
  • היתרונות של שימוש במאגר זהויות של עומסי עבודה ובספק מאגרי זהויות של עומסי עבודה לצורך אימות, לעומת שימוש במפתח Gemini API
  • איך מריצים בדיקת אבטחה באמצעות בקשות משיכה
  • איך מפרשים את בדיקות האבטחה שמוחזרות על ידי תוסף האבטחה

מה תצטרכו

  • דפדפן אינטרנט
  • חשבון ומאגר ב-GitHub
  • פרויקט ב-Google Cloud

ה-Codelab הזה מיועד למפתחים שמכירים את תהליך העבודה של CI/CD ב-GitHub. לא נדרש ידע מוקדם ב-Gemini CLI או בתוספים ל-Gemini CLI. אם אתם רוצים ללמוד איך תוספים עובדים, כדאי לעיין ב-codelab: Getting Started with Gemini CLI Extensions.

ב-Codelab הזה תלמדו איך להגדיר את תוסף האבטחה של Gemini CLI במאגר GitHub שלכם. לא נציע קוד לפתיחת בקשת משיכה מול המאגר כדי להפעיל איתור של פרצת אבטחה.

‫2. לפני שמתחילים

יצירה או בחירה של פרויקט

  1. במסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
  2. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. איך מאמתים את החיוב
  3. פותחים את Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. לוחצים על Activate Cloud Shell בחלק העליון של מסוף Google Cloud.

תמונה של לחצן ההפעלה של Cloud Shell

  1. אחרי שמתחברים ל-Cloud Shell, בודקים שהאימות בוצע והפרויקט מוגדר למזהה הפרויקט באמצעות הפקודה הבאה:
gcloud auth list
  1. מריצים את הפקודה הבאה כדי לוודא שהפקודה gcloud מוגדרת לשימוש בפרויקט שלכם.
gcloud config list project
  1. אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project ${GOOGLE_CLOUD_PROJECT}

3. הגדרת אימות מ-GitHub ל-Google Cloud

איך זה עובד

תהליך עבודה של פעולות GitHub

איחוד שירותי אימות הזהות של עומסי עבודה היא הדרך המומלצת לבצע אימות מ-GitHub Actions ל-Google Cloud.

  1. לכל הפעלה של משימה בתהליך עבודה של פעולות GitHub, ‏ GitHub כספק זהויות חיצוני מנפיק אסימון JWT (‏JSON Web Token) חתום. האסימון הזה מכיל 'הצהרות' כמו repository, workflow ו-job_workflow_ref, שמשמשות ככרטיס זהות דיגיטלי של הרצת התהליכים הספציפית הזו. בשיעור ה-Lab הזה תיצרו תהליך עבודה של GitHub Actions עם משימה שמשתמשת בפעולה google-github-actions/run-gemini-cli, שתבקש JWT מ-GitHub ותשלח את האסימון הזה אל Security Token Service (STS) ב-Google Cloud.
  2. תגדירו מאגר זהויות של עומסי עבודה וספק ב-Google Cloud על ידי הגדרת כתובת ה-URL של מנפיק האסימונים לכתובת הרשמית של שירות האסימונים של GitHub‏ https://token.actions.githubusercontent.com והגדרת 'מיפויי מאפיינים', שבדרך כלל כוללים את שמות המאגר והענף. שירות STS של Google Cloud מאמת את ה-JWT מול הכללים של מאגר זהויות של עומסי עבודה. אם הכול תקין, כולל מיפוי המאפיינים, שירות ה-STS ממיר את אסימון GitHub לאסימון גישה מאוחד של Google Cloud לטווח קצר.
  3. עכשיו הפעולה google-github-actions/run-gemini-cli בתהליך העבודה של GitHub Actions יכולה להשתמש באסימון גישה מאוחד של Google Cloud קצר מועד כדי לבצע "התחזות" לחשבון שירות מקושר למאגר הזהויות של עומסי העבודה. לחשבון השירות המקושר צריכות להיות ההרשאות ותפקידי ה-IAM הנדרשים כדי לגשת למשאבים ולשירותים של Google Cloud.

היתרונות של שימוש באיחוד שירותי אימות הזהות של עומסי עבודה לעומת שימוש במפתח Gemini API

אפשר לאמת קריאות ל-Gemini CLI שמקורן ב-GitHub Actions באמצעות מפתח Gemini API. לשם כך צריך ליצור סוד חדש ב-GitHub Actions בשם GEMINI_API_KEY עם ערך המפתח המתאים. עם זאת, לא מומלץ לעשות זאת מסיבות האבטחה הבאות:

  • למפתחות Gemini API יכולות להיות הרשאות רחבות מהקישורים המתאימים שלהם לתפקידי IAM. אם פרטי הכניסה נחשפים, הם מאפשרים גישה למגוון רחב של משאבים ושירותים של Google Cloud. איחוד שירותי אימות הזהות של עומסי עבודה משתמש בחשבונות שירות ובאסימוני גישה לטווח קצר, מה שמחזק משמעותית את תהליך האימות.
  • גם מפתחות Gemini API קשה לנהל בקנה מידה נרחב. זיהוי תהליכי העבודה שמשתמשים במפתח חשוף לוקח זמן. גם סיבוב המפתחות באופן ידני לוקח זמן. מצד שני, אתם יכולים לחפש, לערוך ולמחוק בקלות מאגרי זהויות של עומסי עבודה וספקים שמשויכים למאגר שלכם במסוף Cloud.
  • כשמשתמשים במפתחות Gemini API, צריך תמיד לוודא שלא חושפים אותם בטעות ביומני גישה או ביומני ניפוי באגים. עם איחוד שירותי אימות הזהות של עומסי עבודה, אתם לא מאחסנים סודות של תהליכי עבודה של GitHub Actions, אלא משתנים, שהם פחות רגישים.

הגדרת GitHub Actions ו-Google Cloud

  1. ב-Cloud Shell, מתחברים לחשבון GitHub.
gh auth login
  1. יוצרים קובץ חדש setup_workload_identity.sh ומעתיקים את סקריפט ההגדרה ממאגר google-github-actions/run-gemini-cli ומדביקים אותו.
  2. הופכים את הסקריפט לקובץ הפעלה.
chmod +x setup_workload_identity.sh
  1. מריצים את הסקריפט.
./setup_workload_identity.sh --repo {OWNER/REPO} --project {GOOGLE_CLOUD_PROJECT}

4. יצירת תהליך עבודה של GitHub Actions

  1. בודקים מאגר ב-GitHub שנמצא בבעלותכם.
git clone {YOUR_REPO}
cd {YOUR REPO}
  1. כדי ליצור תהליך עבודה של GitHub Actions שקורא לפקודה דרך שורת הפקודות /security:analyze-github-pr, מעתיקים סקריפט לדוגמה של תהליך עבודה yml ממאגר /gemini-cli-extensions/security.
git checkout -b workflow
mkdir .github/ && cd .github/
mkdir workflows/ && cd workflows/
curl -L https://raw.githubusercontent.com/gemini-cli-extensions/security/refs/heads/main/.github/workflows/gemini-review.yml -o gemini-review.yml
  1. מעלים את תהליך העבודה של GitHub Actions למקור המרוחק ב-GitHub.
git add .github/workflows/gemini-review.yml
git commit -m "add new gha workflow"
git push --set-upstream origin workflow

5. הפעלת תהליך עבודה של ניתוח אבטחה בבקשות חדשות ובקשות קיימות למשיכת שינויים

מתחילים בקשת מיזוג חדשה במאגר ב-GitHub או מפרסמים תגובה חדשה "@gemini-cli /review" בתור בעלי המאגר או תורמים לו. הפעולה הזו תתחיל בדיקת אבטחה של בקשת משיכת הקוד. תוסף האבטחה של Gemini CLI מתהליך העבודה של GitHub Actions שהתחייבתם אליו במאגר שלכם יתייג כל ממצא אבטחה שהוא ימצא לפי קטגוריות חומרה מ'קריטית', 'גבוהה', 'בינונית' ועד 'נמוכה'.

דוגמה לבדיקת אבטחה בבקשת מיזוג חדשה ודוגמה לבדיקת אבטחה בבקשת מיזוג קיימת.

6. מידע נוסף

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

  • /security:scan-deps מצליב בין התלויות של הפרויקט לבין OSV.dev.

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

7. מזל טוב

הגדרתם בהצלחה את מאגר GitHub לשימוש בתוסף האבטחה של Gemini CLI כדי לנתח בקשות למשיכת קוד (PR) ולזהות סיכוני אבטחה ונקודות חולשה.