איסוף יומנים של Cloud Run
במדריך הזה מוסבר איך לייצא יומנים של Cloud Run ל-Google Security Operations באמצעות Cloud Storage. הכלי לניתוח מחלץ שדות מיומני JSON ומשנה אותם למודל נתונים מאוחד (UDM). הוא מטפל בפורמטים שונים של יומנים, כולל נתוני בקשות HTTP ויומני ביקורת של המערכת, ממפה שדות רלוונטיים ל-UDM וגם מעשיר את הנתונים באמצעות תוויות ומטא-נתונים שספציפיים ל-Cloud Run.
לפני שמתחילים
חשוב לוודא שמתקיימות דרישות הסף הבאות:
- מופע של Google SecOps.
- Cloud Run מוגדר ופעיל בסביבת Google Cloud .
- גישה עם הרשאות ל- Google Cloud.
יצירת קטגוריה של Google Cloud Storage
- נכנסים למסוףGoogle Cloud .
נכנסים לדף Cloud Storage Buckets.
לוחצים על Create.
ממלאים את פרטי הקטגוריה בדף Create a bucket. אחרי כל אחד מהשלבים הבאים, לוחצים על המשך כדי לעבור לשלב הבא:
בקטע Get started (תחילת העבודה), מבצעים את הפעולות הבאות:
- מזינים שם ייחודי שעומד בדרישות לשמות של קטגוריות, לדוגמה cloudrun-logs.
כדי להפעיל את מרחב השמות ההיררכי, לוחצים על החץ להרחבה כדי להרחיב את הקטע Optimize for file oriented and data-intensive workloads (אופטימיזציה לעומסי עבודה שמתמקדים בקבצים ובנתונים), ואז בוחרים באפשרות Enable Hierarchical namespace on this bucket (הפעלת מרחב שמות היררכי בדלי הזה).
כדי להוסיף תווית של מאגר, לוחצים על החץ להרחבה כדי להרחיב את הקטע תוויות.
לוחצים על הוספת תווית ומציינים מפתח וערך לתווית.
בקטע Choose where to store your data, מבצעים את הפעולות הבאות:
- בוחרים סוג מיקום.
בתפריט של סוג המיקום, בוחרים מיקום שבו נתוני האובייקטים בקטגוריה יאוחסנו באופן קבוע.
כדי להגדיר שכפול בין מאגרי מידע, מרחיבים את הקטע הגדרת שכפול בין מאגרי מידע.
בקטע Choose a storage class for your data, בוחרים default storage class לקטגוריה, או בוחרים ב-Autoclass לניהול אוטומטי של סוג האחסון (storage class) של נתוני הקטגוריה.
בקטע Choose how to control access to objects, בוחרים באפשרות not כדי לא לאכוף public access prevention, ובוחרים access control model לאובייקטים של הקטגוריה.
בקטע Choose how to protect object data:
- בוחרים באחת מהאפשרויות בקטע Data protection (הגנה על נתונים) שרוצים להגדיר לקטגוריה.
- כדי לבחור איך להצפין את נתוני האובייקט, לוחצים על החץ להרחבה של Data encryption ובוחרים Data encryption method.
לוחצים על יצירה.
הגדרת ייצוא יומנים ב-Cloud Run
- בדף Google Cloud Welcome, לוחצים על הסמל Cloud Run.
- בשורת החיפוש שבחלק העליון של המסך, מחפשים את Logging ולוחצים על Enter.
- ב-Log Explorer, מסננים את היומנים על ידי בחירה באפשרות Cloud Run ב-Log Name ולוחצים על Apply.
- בתפריט, לוחצים על More Actions > Create Sink (פעולות נוספות > יצירת יעד).
- מזינים את ההגדרות הבאות:
- Sink Details: מזינים שם ותיאור.
- לוחצים על הבא.
- יעד Sink: בוחרים באפשרות קטגוריה של Cloud Storage.
- Cloud Storage Bucket (קטגוריה של Cloud Storage): בוחרים את הקטגוריה שיצרתם קודם או יוצרים קטגוריה חדשה.
- לוחצים על הבא.
- Choose Logs to include in Sink: יומן ברירת מחדל מאוכלס כשבוחרים אפשרות בקטגוריה של Cloud Storage.
- לוחצים על הבא.
- אופציונלי: בחירת יומנים לסינון מחוץ ל-Sink: בוחרים את היומנים שלא רוצים להעביר ל-Sink.
- לוחצים על Create Sink.
הגדרת פידים
כדי להגדיר פיד:
- עוברים אל SIEM Settings (הגדרות SIEM) > Feeds (פידים).
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה Feed name (שם הפיד), מזינים שם לפיד, למשל Cloud Run Logs (יומני Cloud Run).
- בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
- בוחרים באפשרות GCP Cloud Run בתור Log type (סוג היומן).
- לוחצים על קבלת חשבון שירות בתור חשבון השירות של Chronicle.
- לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
- כתובת URI של קטגוריית אחסון: Google Cloud כתובת ה-URL של קטגוריית האחסון בפורמט
gs://my-bucket/<value>/. כתובת ה-URL צריכה להסתיים בקו נטוי (/). אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה בהתאם להעדפות.
גיל הקובץ המקסימלי: כולל קבצים ששונו במספר הימים האחרונים. ברירת המחדל היא 180 ימים.
- כתובת URI של קטגוריית אחסון: Google Cloud כתובת ה-URL של קטגוריית האחסון בפורמט
לוחצים על הבא.
בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
httpRequest.latency |
target.resource.attribute.labels.[] |
הערך של httpRequest.latency מהיומן הגולמי משמש כערך של תווית עם המפתח http_request_latency בתוך target.resource.attribute.labels. |
httpRequest.protocol |
network.application_protocol |
אם httpRequest.protocol מכיל HTTP, השדה UDM מוגדר ל-HTTP. |
httpRequest.remoteIp |
principal.asset.ip |
נעשה שימוש בערך של httpRequest.remoteIp מיומן הגולמי. |
httpRequest.remoteIp |
principal.ip |
נעשה שימוש בערך של httpRequest.remoteIp מיומן הגולמי. |
httpRequest.requestMethod |
network.http.method |
נעשה שימוש בערך של httpRequest.requestMethod מיומן הגולמי. |
httpRequest.requestSize |
network.sent_bytes |
הערך של httpRequest.requestSize מיומן הגולמי מומר למספר שלם לא חתום ומשמש לחישוב. |
httpRequest.requestUrl |
target.url |
נעשה שימוש בערך של httpRequest.requestUrl מיומן הגולמי. |
httpRequest.responseSize |
network.received_bytes |
הערך של httpRequest.responseSize מיומן הגולמי מומר למספר שלם לא חתום ומשמש לחישוב. |
httpRequest.serverIp |
target.asset.ip |
נעשה שימוש בערך של httpRequest.serverIp מיומן הגולמי. |
httpRequest.serverIp |
target.ip |
המערכת משתמשת בערך של httpRequest.serverIp מהיומן הגולמי. |
httpRequest.status |
network.http.response_code |
הערך של httpRequest.status מהיומן הגולמי מומר למספר שלם ונעשה בו שימוש. |
httpRequest.userAgent |
network.http.parsed_user_agent |
הערך של httpRequest.userAgent מיומן הגולמי מנותח כמחרוזת של סוכן משתמש. |
httpRequest.userAgent |
network.http.user_agent |
נעשה שימוש בערך של httpRequest.userAgent מיומן הגולמי. |
insertId |
metadata.product_log_id |
המערכת משתמשת בערך של insertId מהיומן הגולמי. |
labels.instanceId |
additional.fields.[] |
הערך של labels.instanceId משמש כערך של תווית עם מפתח instanceId בתוך additional.fields. |
labels.run.googleapis.com_execution_name |
additional.fields.[] |
הערך של labels.run.googleapis.com_execution_name משמש כערך של תווית עם מפתח execution_name בתוך additional.fields. |
labels.run.googleapis.com_task_attempt |
additional.fields.[] |
הערך של labels.run.googleapis.com_task_attempt משמש כערך של תווית עם המפתח task_attempt בתוך additional.fields. |
labels.run.googleapis.com_task_index |
additional.fields.[] |
הערך של labels.run.googleapis.com_task_index משמש כערך של תווית עם המפתח task_index בתוך additional.fields. |
logName |
metadata.product_event_type |
נעשה שימוש בערך של logName מיומן הגולמי. |
resource.labels.configuration_name |
target.resource.attribute.labels.[] |
הערך של resource.labels.configuration_name משמש כערך של תווית עם מפתח configuration_name בתוך target.resource.attribute.labels. |
resource.labels.job_name |
additional.fields.[] |
הערך של resource.labels.job_name משמש כערך של תווית עם מפתח job_name בתוך additional.fields. |
resource.labels.location |
target.location.name |
נעשה שימוש בערך של resource.labels.location מיומן הגולמי. |
resource.labels.project_id |
target.resource.attribute.labels.[] |
הערך של resource.labels.project_id משמש כערך של תווית עם מפתח project_id בתוך target.resource.attribute.labels. |
resource.labels.revision_name |
target.resource.attribute.labels.[] |
הערך של resource.labels.revision_name משמש כערך של תווית עם מפתח revision_name בתוך target.resource.attribute.labels. |
resource.labels.service_name |
target.resource.attribute.labels.[] |
הערך של resource.labels.service_name משמש כערך של תווית עם מפתח service_name בתוך target.resource.attribute.labels. |
resource.type |
target.resource.resource_subtype |
נעשה שימוש בערך של resource.type מיומן הגולמי. |
severity |
security_result.severity |
אם הערך של severity תואם לערך של Info (לא תלוי באותיות רישיות), השדה UDM מוגדר לערך INFORMATIONAL. |
textPayload |
additional.fields.[] |
הערך של textPayload משמש כערך של תווית עם מפתח Textpayload בתוך additional.fields. |
timestamp |
metadata.event_timestamp |
הערך של timestamp מהיומן הגולמי מנותח כחותמת זמן. |
timestamp |
timestamp |
הערך של timestamp מהיומן הגולמי מנותח כחותמת זמן. נקבע על ידי הלוגיקה של כלי הניתוח על סמך נוכחות של שדות מסוימים. ברירת המחדל היא GENERIC_EVENT. אם has_principal_ip, has_target_ip ו-httpRequest.protocol תואמים ל-HTTP, הערך מוגדר ל-NETWORK_HTTP. הוזן קוד קשיח ל-GCP_RUN. מקודד בתוך הקוד ל-GCP_RUN. מקודד בתוך הקוד ל-Google Cloud Platform. הוזן קוד קשיח ל-GOOGLE_CLOUD_PLATFORM. |
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.