אתם יכולים להשתמש בפעולה 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 (ניתוח אבטחת קוד).
-
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. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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. - Click Create and continue.
-
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.
- Click Continue.
-
Click Done to finish creating the service account.
מידע נוסף על הרשאות אימות של 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 לתהליך העבודה כדי לאמת את פעולת האימות של IaC.
הגדרת כללי המדיניות
הגדרת מדיניות ארגונית וגלאים של Security Health Analytics. כדי להגדיר את המדיניות הזו באמצעות מצב אבטחה, צריך לבצע את המשימות שבמאמר יצירה ופריסה של מצב אבטחה.
יצירת קובץ JSON של תוכנית Terraform
יוצרים את הקוד של Terraform. הוראות מפורטות זמינות במאמר יצירת קוד Terraform.
ב-GitHub Actions, מפעילים את Terraform. לדוגמה, אם משתמשים בפעולה HashiCorp – הגדרת Terraform, מריצים את הפקודה הבאה:
- 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.