שילוב של אימות 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. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the Security Posture Shift-Left Validator role to the service account.

      To grant the role, find the Select a role list, then select Security Posture Shift-Left Validator.

    7. Click Continue.
    8. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  2. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click 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. אם רוצים שה-build ייכשל אם יגיע לספירת הבעיות מרמת חומרה כלשהי, בוחרים באפשרות OR. לדוגמה, אם רוצים שה-build ייכשל אם תהיה בעיה קריטית אחת או בעיה אחת ברמת חומרה גבוהה, מגדירים את הערך המצטבר ל-OR.

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

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

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

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

הצגת דוח ההפרות של IaC

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

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

    • אם התוסף פעל, דוח ההפרה (GoogleAnalyzeCodeSecurity_ViolationSummary.html)

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

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

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