איסוף יומני ביקורת של CircleCI
גרסת כלי הניתוח: 2.0
הכלי הזה מנתח יומני ביקורת של CircleCI בפורמטים CSV ו-JSON, ומשנה אותם לפורמט של מודל נתונים מאוחד (UDM). הוא מטפל בשני הפורמטים, מבצע טרנספורמציות והעשרה של הנתונים וממפה את השדות שחולצו לשדות UDM המתאימים להם באובייקט event. הוא מתמקד בפעולות משתמש, בגישה למשאבים ובאירועי עדכון, מסווג אותם ומאכלס שדות רלוונטיים של UDM כמו principal, target, network ו-metadata.
לפני שמתחילים
חשוב לוודא שמתקיימות דרישות הסף הבאות:
- מופע של Google SecOps.
- גישה עם הרשאות מיוחדות ל-CircleCI.
הגדרת פידים
כדי להגדיר פיד:
- עוברים אל SIEM Settings (הגדרות SIEM) > Feeds (פידים).
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה, CircleCI Logs).
- בוחרים באפשרות Webhook בתור סוג המקור.
- בוחרים באפשרות CircleCI בתור סוג היומן.
- לוחצים על הבא.
- אופציונלי: מציינים ערכים לפרמטרים הבאים של הקלט:
- Split delimiter: התו או המחרוזת שמשמשים להפרדה בין שורות ביומן, כמו
\n. - מרחב השמות של הנכס: מרחב השמות של הנכס.
- תוויות להוספה: התווית שמוחלת על האירועים מהפיד הזה.
- Split delimiter: התו או המחרוזת שמשמשים להפרדה בין שורות ביומן, כמו
- לוחצים על הבא.
- בודקים את הגדרות הפיד במסך סיום ולוחצים על שליחה.
- לוחצים על יצירת מפתח סודי כדי ליצור מפתח סודי לאימות הפיד הזה.
- מעתיקים את המפתח הסודי ושומרים אותו. לא ניתן להציג שוב את המפתח הסודי הזה. במקרה הצורך, אפשר ליצור מחדש מפתח סודי חדש, אבל הפעולה הזו מייתרת את המפתח הסודי הקודם.
- בכרטיסייה Details (פרטים), מעתיקים את כתובת ה-URL של נקודת הקצה של הפיד מהשדה Endpoint Information (פרטי נקודת הקצה). צריך לציין את כתובת ה-URL של נקודת הקצה הזו באפליקציית הלקוח.
- לוחצים על סיום.
יצירת מפתח API ל-Webhook Feed
עוברים אל Google Cloud מסוף > Credentials (פרטי כניסה).
לוחצים על Create credentials ואז על API key.
מגבילים את הגישה של מפתח ה-API אל Google Security Operations API.
ציון כתובת ה-URL של נקודת הקצה
- באפליקציית הלקוח, מציינים את כתובת ה-URL של נקודת הקצה של HTTPS שמופיעה בפיד ה-webhook.
כדי להפעיל אימות, מציינים את מפתח ה-API ואת המפתח הסודי כחלק מהכותרת המותאמת אישית בפורמט הבא:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRETהמלצה: כדאי לציין את מפתח ה-API ככותרת במקום לציין אותו בכתובת ה-URL.
אם לקוח ה-webhook שלכם לא תומך בכותרות בהתאמה אישית, אתם יכולים לציין את מפתח ה-API ואת המפתח הסודי באמצעות פרמטרים של שאילתות בפורמט הבא:
ENDPOINT_URL?key=API_KEY&secret=SECRETמחליפים את מה שכתוב בשדות הבאים:
-
ENDPOINT_URL: כתובת ה-URL של נקודת הקצה של הפיד. -
API_KEY: מפתח ה-API לאימות ב-Google SecOps. -
SECRET: המפתח הסודי שיצרתם כדי לאמת את הפיד.
-
הגדרת webhook ב-CircleCI
- נכנסים לממשק האינטרנט של CircleCI.
- בוחרים את הפרויקט שממנו רוצים להעביר את היומנים.
- לוחצים על Project Settings (הגדרות הפרויקט).
- בוחרים באפשרות Webhooks.
- לוחצים על Add Webhook (הוספת Webhook).
מציינים ערכים לפרמטרים הבאים של הקלט:
- שם ה-Webhook: מציינים שם תיאורי (לדוגמה, Google SecOps).
- כתובת URL של נקודת קצה ל-API: מזינים את
<ENDPOINT_URL>של נקודת קצה ל-API של Google SecOps.
- אירועים: בוחרים את האירועים ב-CircleCI שצריכים להפעיל את ה-webhook (לדוגמה, בוחרים באפשרות workflow-completed כדי לשלוח נתונים אחרי סיום תהליך העבודה).
כדי ליצור את ה-webhook, לוחצים על שמירה.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| account.id | read_only_udm.about.resource.attribute.labels.value | הערך של account.id מיומן הגולמי משויך לשדה UDM read_only_udm.about.resource.attribute.labels.value, כאשר key התואם הוא account_id. |
| action | read_only_udm.metadata.product_event_type | הערך של action מיומן הגולמי מוקצה לשדה UDM read_only_udm.metadata.product_event_type. |
| actor.id | read_only_udm.principal.user.product_object_id | הערך של actor.id מיומן הגולמי משויך לשדה UDM read_only_udm.principal.user.product_object_id. |
| actor.name | read_only_udm.principal.user.userid | הקידומת github: מוסרת מהשדה actor.name ביומן הגולמי. הערך שנותר מוקצה לשדה UDM read_only_udm.principal.user.userid. אם actor.name קיים ביומן הגולמי, הערך USER_RESOURCE_UPDATE_CONTENT מוקצה ל-read_only_udm.metadata.event_type. אחרת, מוקצית ההרשאה USER_RESOURCE_ACCESS. |
| id | read_only_udm.metadata.product_log_id | הערך של id מיומן הרישום הגולמי מוקצה לשדה UDM read_only_udm.metadata.product_log_id. הכלי לניתוח מחרוזות מגדיר את read_only_udm.metadata.log_type ל-CIRCLECI. הכלי לניתוח מחרוזות מגדיר את read_only_udm.metadata.product_name ל-CIRCLECI. הכלי לניתוח מחרוזות מגדיר את read_only_udm.metadata.vendor_name ל-CIRCLECI. |
| occurred_at | read_only_udm.metadata.event_timestamp | הערך של occurred_at מיומן הגולמי מנותח כחותמת זמן ומוקצה לשדה UDM read_only_udm.metadata.event_timestamp. |
| organization.name | read_only_udm.target.administrative_domain | הקידומת github: מוסרת מהשדה organization.name ביומן הגולמי. הערך שנותר מוקצה לשדה UDM read_only_udm.target.administrative_domain. |
| payload.job.id | read_only_udm.about.resource.attribute.labels.value | הערך של payload.job.id מיומן הגולמי משויך לשדה UDM read_only_udm.about.resource.attribute.labels.value, כאשר המפתח התואם הוא job_id. |
| payload.job.job_name | read_only_udm.about.resource.attribute.labels.value | הערך של payload.job.job_name מיומן הגולמי מוקצה לשדה UDM read_only_udm.about.resource.attribute.labels.value, כאשר המפתח התואם הוא job_name. |
| payload.job.job_status | read_only_udm.about.resource.attribute.labels.value | הערך של payload.job.job_status מיומן הגולמי משויך לשדה UDM read_only_udm.about.resource.attribute.labels.value שבו key התואם הוא job_status. |
| payload.workflow.id | read_only_udm.about.resource.attribute.labels.value | הערך של payload.workflow.id מיומן הגולמי משויך לשדה UDM read_only_udm.about.resource.attribute.labels.value, כאשר המפתח התואם הוא workflow_id. |
| request.id | read_only_udm.network.session_id | הערך של request.id מיומן הרישום הגולמי מוקצה לשדה UDM read_only_udm.network.session_id. |
| scope.id | read_only_udm.about.resource.attribute.labels.value | הערך של scope.id מיומן הגולמי משויך לשדה UDM read_only_udm.about.resource.attribute.labels.value, כאשר המפתח התואם הוא scope_id. הכלי לניתוח מחרוזות מגדיר את sec_action בתור BLOCK. אם השדה success ביומן הגולמי הוא true, הערך של sec_action משתנה ל-ALLOW. הערך של sec_action מוקצה לשדה UDM read_only_udm.security_result.action. |
| target.id | read_only_udm.target.resource.product_object_id | הערך של target.id מיומן הרישום הגולמי מוקצה לשדה UDM read_only_udm.target.resource.product_object_id. |
| target.name | read_only_udm.target.resource.name | הקידומת github: הוסרה מהשדה target.name ביומן הגולמי. הערך שנותר מוקצה לשדה UDM read_only_udm.target.resource.name. הכלי לניתוח מחרוזות מגדיר את read_only_udm.target.resource.resource_type כ-STORAGE_OBJECT. |
| version | read_only_udm.target.resource.attribute.labels.value | הערך של version מיומן הגולמי מומר למחרוזת ומוקצה לשדה UDM read_only_udm.target.resource.attribute.labels.value, כאשר key התואם הוא version. |
יומן שינויים
צפייה ביומן השינויים של מנתח התוכן הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.