שילוב אימות 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 (ניתוח אבטחת קוד).

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

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

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

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

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

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

מידע נוסף על הרשאות אימות של 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 (אימות ב-Google Cloud) לתהליך העבודה כדי לאמת את פעולת האימות של IaC.

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

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

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

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

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

    - 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, צריך לפתור את כל ההפרות שקיימות בו.

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