שילוב של אימות IaC עם Jenkins

אתם יכולים להשתמש בפלאגין Google Analyze Code Security ל-Jenkins כדי לאמת את התשתית כקוד (IaC) שמהווה חלק מפרויקט Jenkins שלכם. אימות של IaC מאפשר לכם לקבוע אם הגדרות המשאבים של Terraform מפרות את מדיניות הארגון הקיימת ואת כללי הזיהוי של Security Health Analytics שחלים על המשאבים שלכם. Google Cloud

מידע נוסף על אימות IaC זמין במאמר בנושא אימות IaC בהתאם למדיניות של ארגון Google Cloud .

אימות IaC פועל רק עם פרויקטים של Jenkins freestyle.

לפני שמתחילים

כדי להתחיל באימות IaC באמצעות Jenkins, צריך להשלים את המשימות הבאות.

הפעלת רמת Premium או רמת Enterprise של Security Command Center

מוודאים שמהדורות Premium או Enterprise של Security Command Center מופעלות ברמת הארגון.

הפעלת Security Command Center מפעילה את ממשקי ה-API‏ securityposture.googleapis.com וsecuritycentermanagement.googleapis.com.

יצירה של חשבון שירות

יוצרים חשבון שירות שאפשר להשתמש בו בתוסף Google Analyze Code Security ל-Jenkins.

    יוצרים חשבון שירות:

    1. מוודאים שיש לכם את תפקיד ה-IAM ‏Create Service Accounts ‏(roles/iam.serviceAccountCreator) ואת תפקיד ה-IAM ‏Project Admin ‏(roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים
    2. במסוף Google Cloud , נכנסים לדף יצירת חשבון שירות.

      כניסה לדף Create service account
    3. בוחרים את הפרויקט הרצוי.
    4. כותבים שם בשדה Service account name. המסוף Google Cloud ממלא את השדה מזהה חשבון שירות בהתאם לשם הזה.

      כותבים תיאור בשדה Service account description. לדוגמה: Service account for quickstart.

    5. לוחצים על Create and continue.
    6. מקצים לחשבון השירות את התפקיד מאמת של שינוי בגישת האבטחה.

      כדי להקצות את התפקיד, בוחרים את התפקיד Security Posture Shift-Left Validator מהרשימה Select a role.

    7. לוחצים על Continue.
    8. לוחצים על Done כדי לסיים ליצור את חשבון השירות.

      חשוב לא לסגור את חלון הדפדפן, כי תשתמשו בו גם בשלב הבא.

    יוצרים מַפְתח לחשבון השירות:

    1. במסוף Cloud, לוחצים על כתובת האימייל של חשבון השירות שיצרתם. Google Cloud
    2. לוחצים על Keys.
    3. לוחצים על Add key ואז על Create new key.
    4. לוחצים על Create. למחשב שלכם תתבצע הורדה של קובץ JSON עם המפתח.
    5. לוחצים על Close.

מידע נוסף על הרשאות אימות של IaC זמין במאמר IAM להפעלות ברמת הארגון.

הגדרת כללי המדיניות

הגדרת מדיניות ארגונית וגלאים של Security Health Analytics. כדי להגדיר את המדיניות הזו באמצעות מצב אבטחה, צריך לבצע את המשימות שבמאמר יצירה ופריסה של מצב אבטחה.

התקנה והגדרה של הפלאגין

  1. במסוף Jenkins, לוחצים על Manage Jenkins > Manage Plugins.
  2. בכרטיסייה זמין, מחפשים את google-analyze-code-security.
  3. משלימים את שלבי ההתקנה.
  4. לוחצים על Manage Jenkins (ניהול Jenkins) > Configure System (הגדרת המערכת).
  5. בקטע Google Analyze Code Security, לוחצים על Add credential (הוספת פרטי כניסה).
  6. בקטע Organization ID (מזהה הארגון), מזינים את מזהה הארגון של Google Cloud הארגון שכולל את משאבי Terraform שרוצים ליצור או לשנות.
  7. בקטע Security Command Center Credential, מוסיפים את המפתח של חשבון השירות.
  8. בודקים את החיבור כדי לאמת את פרטי הכניסה של חשבון השירות.
  9. לוחצים על Save.

יצירת קובץ JSON של תוכנית Terraform

  1. יוצרים את הקוד של Terraform. הוראות מפורטות מופיעות במאמר יצירת קוד Terraform.

  2. מתקינים את הפלאגין Terraform ל-Jenkins.

  3. במסוף Jenkins, בפרויקט Jenkins freestyle, עוברים לדף Configuration.

  4. לוחצים על Source Code Management (ניהול קוד מקור).

  5. בשדה Repository URL (כתובת ה-URL של המאגר), מזינים את כתובת ה-URL של קוד Terraform שיצרתם.

  6. לוחצים על Build steps (יצירת שלבים).

  7. מוסיפים את השלבים הבאים:

    1. מאתחלים את Terraform:

      terraform init
      
    2. יוצרים קובץ תוכנית של Terraform.

      terraform plan -out=TF_PLAN_FILE
      

      מחליפים את TF_PLAN_FILE בשם של קובץ תוכנית Terraform. לדוגמה, myplan.tfplan.

    3. ממירים את קובץ התוכנית לפורמט JSON:

      terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
      

      מחליפים את TF_PLAN_JSON_FILE בשם של קובץ התוכנית של Terraform בפורמט JSON. לדוגמה, mytfplan.json.

הוספת הפלאגין לפרויקט Jenkins

  1. במסוף Jenkins, בפרויקט Jenkins freestyle, עוברים לדף Configuration.
  2. בקטע Build Steps (שלבי בנייה), לוחצים על Add build step (הוספת שלב בנייה) > Perform Code Scan during Build (ביצוע סריקת קוד במהלך הבנייה).
  3. מזינים את מזהה הארגון.
  4. מזינים את הנתיב לקובץ התוכנית של Terraform בפורמט JSON.
  5. אופציונלי: מגדירים את הקריטריונים לכישלון הבנייה. קריטריוני הכשל מבוססים על מספר הבעיות ברמות החומרה השונות (קריטית, גבוהה, בינונית ונמוכה) שמתגלות בסריקת האימות של IaC. אתם יכולים לציין כמה בעיות מכל רמת חומרה מותרות ואיך הבעיות מצטברות (באמצעות AND או OR).

    1. לוחצים על Fail on Asset Violation (הפעולה נכשלה בגלל הפרת כללי השימוש בנכס).

    2. אם רוצים שה-build ייכשל רק אם יגיעו למספר הבעיות מכל רמות החומרה, בוחרים באפשרות AND. אם רוצים שהבנייה תיכשל אם יגיעו למספר הבעיות מכל רמת חומרה, בוחרים באפשרות OR. לדוגמה, אם רוצים שהבנייה תיכשל אם תזוהה בעיה קריטית אחת או בעיה אחת ברמת חומרה גבוהה, מגדירים את הערך המצטבר ל-OR.

    3. מציינים את מספר הבעיות ברמות החומרה השונות שרוצים לאפשר לפני שה-build נכשל.

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

  6. לוחצים על Save.

עכשיו אפשר להריץ את ה-build כדי לאמת את קובץ התוכנית של Terraform.

עיון בדוח ההפרות של IaC

  1. במסוף Jenkins, לוחצים על תהליך העבודה האחרון של ה-build.

  2. לוחצים על סטטוס. קובצי ה-HTML הבאים זמינים כארטיפקטים של בנייה:

    • אם הפלאגין פעל, דוח ההפרה (GoogleAnalyzeCodeSecurity_ViolationSummary.html)

    ההפרות בדוח מקובצות לפי רמת החומרה. בקטע 'הפרה' מתואר הכלל שלא עמד בדרישות ומזהה הנכס מתוכנית Terraform שהפר את הכלל.

    • אם ה-build נכשל, דוח סיכום שגיאות
  3. לפני שמחילים את קוד Terraform, צריך לפתור את כל ההפרות שקיימות בו.

המאמרים הבאים