שילוב אימות IaC עם GitHub Actions

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

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

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

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

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

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

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

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

יוצרים חשבון שירות שאפשר להשתמש בו בפעולה Analyze Code Security (ניתוח אבטחת קוד).

  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.

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

מגדירים אימות

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

  2. מקבלים את כתובת ה-URL של אסימון המזהה של איחוד שירותי אימות הזהות של עומסי עבודה. לדוגמה, https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID.

    כמה נקודות שכדאי לחשוב עליהן:

    • PROJECT_NUMBER הוא מספר הפרויקט של פרויקטGoogle Cloud שבו הגדרתם את איחוד הזהויות של עומסי העבודה.
    • POOL_ID הוא שם המאגר.
    • PROVIDER_ID הוא השם של ספק הזהויות.
  3. מוסיפים את הפעולה Authenticate to Google Cloud לתהליך העבודה כדי לאמת את פעולת האימות של IaC.

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

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

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

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

  2. ב-GitHub Actions, מפעילים את Terraform. לדוגמה, אם משתמשים בפעולה HashiCorp – הגדרת Terraform, מריצים את הפקודה הבאה:

    - name: Terraform Init
      id: init
      run: terraform init
    
  3. יוצרים קובץ תוכנית של Terraform:

    - name: Create Terraform Plan
      id: plan
      run: terraform plan -out=TF_PLAN_FILE
    

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

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

    - name: Convert Terraform Plan to JSON
      id: convert
      run: terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
    

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

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

  1. במאגר GitHub, עוברים לזרימת העבודה.
  2. פותחים את הכלי לעריכת תהליכי עבודה.
  3. בסרגל הצד של GitHub Marketplace, מחפשים את Analyze Code Security.
  4. בקטע התקנה, מעתיקים את התחביר.
  5. מדביקים את התחביר כשלב חדש בתהליך העבודה.
  6. מחליפים את הערכים הבאים:

    • workload_identity_provider עם הקישור לכתובת ה-URL של טוקן המזהה של איחוד שירותי אימות הזהות של עומסי עבודה.
    • service_account מחליפים בכתובת האימייל של חשבון השירות שיצרתם לפעולה.
    • organization_id במזהה הארגון. Google Cloud
    • scan_file_ref בנתיב לקובץ התוכנית של Terraform בפורמט JSON.
    • failure_criteria עם קריטריון סף הכשל שקובע מתי הפעולה נכשלת. קריטריון הסף מבוסס על מספר הבעיות ברמות החומרה הקריטית, הגבוהה, הבינונית והנמוכה שמתגלות בסריקת האימות של IaC. ‫failure_criteria מציין כמה בעיות מכל רמת חומרה מותרות ואיך הבעיות מצטברות (AND או OR). לדוגמה, אם רוצים שהפעולה תיכשל אם היא נתקלת בבעיה קריטית אחת או בבעיה אחת ברמת חומרה גבוהה, צריך להגדיר את failure_criteria ל-Critical:1,High:1,Operator:OR. ברירת המחדל היא Critical:1,High:1,Medium:1,Low:1,Operator:OR, כלומר אם הסריקה של IaC לאימות נתקלת בבעיה כלשהי, הפעולה חייבת להיכשל.

עכשיו אפשר להריץ את תהליך העבודה כדי לאמת את קובץ התוכנית של Terraform. כדי להריץ את תהליך העבודה באופן ידני, אפשר לעיין במאמר בנושא הרצה ידנית של תהליך עבודה.

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

  1. במאגר GitHub, לוחצים על Actions (פעולות) ובוחרים את זרימת העבודה.

  2. לוחצים על ההרצה האחרונה של תהליך העבודה.

    בקטע Artifacts (ארטיפקטים), דוח ההפרה (ias-scan-sarif.json) זמין בקובץ ZIP. הדוח כולל את השדות הבאים:

    • שדה rules שמתאר אילו מדיניות הופרו על ידי תוכנית Terraform. כל כלל כולל ruleID שאפשר להתאים לתוצאות שמופיעות בדוח.
    • שדה results שמתאר את השינויים המוצעים בנכס שמפירים כלל ספציפי.
  3. לפני שמחילים את הקוד, צריך לפתור את כל ההפרות בקוד של Terraform.

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