אתם יכולים להשתמש בפעולה 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 'יצירת חשבונות שירות'
(
-
במסוף Google Cloud , נכנסים לדף יצירת חשבון שירות.
כניסה לדף Create service account - בוחרים את הפרויקט הרצוי.
-
כותבים שם בשדה Service account name. המסוף Google Cloud ממלא את השדה מזהה חשבון שירות בהתאם לשם הזה.
כותבים תיאור בשדה Service account description. לדוגמה:
Service account for quickstart. - לוחצים על Create and continue.
-
מקצים לחשבון השירות את התפקיד מאמת של שינוי בגישת האבטחה.
כדי להקצות את התפקיד, בוחרים את התפקיד Security Posture Shift-Left Validator מהרשימה Select a role.
- לוחצים על Continue.
-
לוחצים על Done כדי לסיים ליצור את חשבון השירות.
roles/iam.serviceAccountCreator) ואת התפקיד 'אדמין IAM בפרויקט'
(roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים
מידע נוסף על הרשאות אימות של IaC זמין במאמר IAM להפעלות ברמת הארגון.
מגדירים אימות
מגדירים את איחוד שירותי אימות הזהות של עומסי עבודה באמצעות ספק הזהויות של GitHub. הוראות מפורטות זמינות במאמר איחוד שירותי אימות הזהות של עומסי עבודה.
מקבלים את כתובת ה-URL של אסימון המזהה של איחוד שירותי אימות הזהות של עומסי עבודה. לדוגמה,
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID.כמה נקודות שכדאי לחשוב עליהן:
-
PROJECT_NUMBERהוא מספר הפרויקט שלGoogle Cloud הפרויקט שבו הגדרתם את איחוד הזהויות של עומסי העבודה. -
POOL_IDהוא שם המאגר. -
PROVIDER_IDהוא השם של ספק הזהויות.
-
מוסיפים את הפעולה Authenticate to Google Cloud (אימות ב-Google Cloud) לתהליך העבודה כדי לאמת את פעולת האימות של IaC.
הגדרת כללי המדיניות
הגדרת מדיניות ארגונית וגלאים של Security Health Analytics. כדי להגדיר את המדיניות הזו באמצעות מצב אבטחה, צריך לבצע את המשימות שבמאמר יצירה ופריסה של מצב אבטחה.
יצירת קובץ JSON של תוכנית Terraform
יוצרים את הקוד של Terraform. הוראות מפורטות זמינות במאמר יצירת קוד Terraform.
ב-GitHub Actions, מפעילים את Terraform. לדוגמה, אם משתמשים ב-HashiCorp - Setup Terraform action, מריצים את הפקודה הבאה:
- name: Terraform Init id: init run: terraform initיוצרים קובץ תוכנית של Terraform:
- name: Create Terraform Plan id: plan run: terraform plan -out=TF_PLAN_FILEמחליפים את
TF_PLAN_FILEבשם של קובץ תוכנית Terraform. לדוגמה,myplan.tfplan.ממירים את קובץ התוכנית לפורמט 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
- במאגר GitHub, עוברים אל זרימת העבודה.
- פותחים את הכלי לעריכת תהליכי עבודה.
- בסרגל הצד של GitHub Marketplace, מחפשים את Analyze Code Security.
- בקטע התקנה, מעתיקים את התחביר.
- מדביקים את התחביר כשלב חדש בתהליך העבודה.
מחליפים את הערכים הבאים:
-
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
במאגר GitHub, לוחצים על Actions (פעולות) ובוחרים את זרימת העבודה.
לוחצים על ההרצה האחרונה של תהליך העבודה.
בקטע Artifacts (פריטים), דוח ההפרה (
ias-scan-sarif.json) זמין בקובץ ZIP. הדוח כולל את השדות הבאים:- שדה
rulesשמתאר אילו כללי מדיניות הופרו על ידי תוכנית Terraform. כל כלל כוללruleIDשאפשר להתאים לתוצאות שמופיעות בדוח. - שדה
resultsשמתאר את השינויים המוצעים בנכס שמפירים כלל ספציפי.
- שדה
לפני שמחילים את קוד Terraform, צריך לפתור את כל ההפרות שקיימות בו.
המאמרים הבאים
- אפשר לראות את קוד המקור של הפעולה analyze-code-security-scc ב-GitHub.