איסוף יומנים של 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.
כדי להפעיל את מרחב השמות ההיררכי, לוחצים על חץ ההרחבה כדי להרחיב את הקטע אופטימיזציה לעומסי עבודה שמתמקדים בקבצים ובעיבוד נתונים, ואז בוחרים באפשרות הפעלת מרחב שמות היררכי בדלי הזה.
כדי להוסיף תווית של מאגר, לוחצים על החץ להרחבה כדי להרחיב את הקטע תוויות.
לוחצים על הוספת תווית ומציינים מפתח וערך לתווית.
בקטע 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 encryption ובוחרים Data encryption method.
לוחצים על יצירה.
הגדרת ייצוא יומנים ב-Cloud Run
- בדף Google Cloud Welcome (ברוכים הבאים), לוחצים על הסמל של Cloud Run.
- בסרגל החיפוש שלמעלה, מחפשים Logging ולוחצים על Enter.
- ב-Log Explorer, מסננים את היומנים על ידי בחירה באפשרות Cloud Run ב-Log Name ולוחצים על Apply.
- בתפריט, לוחצים על פעולות נוספות > יצירת יעד.
- מציינים את ההגדרות הבאות:
- פרטי יעד: מזינים שם ותיאור.
- לוחצים על הבא.
- יעד Sink: בוחרים באפשרות קטגוריה של Cloud Storage.
- קטגוריה של Cloud Storage: בוחרים את הקטגוריה שיצרתם קודם או יוצרים קטגוריה חדשה.
- לוחצים על הבא.
- בחירת יומנים שיכללו ב-Sink: יומן ברירת מחדל מאוכלס כשבוחרים באפשרות ב-קטגוריה של Cloud Storage.
- לוחצים על הבא.
- אופציונלי: Choose Logs to filter out of Sink (בחירת יומנים לסינון מ-Sink): בוחרים את היומנים שלא רוצים להעביר ל-Sink.
- לוחצים על Create Sink.
הגדרת פידים
כדי להגדיר פיד, מבצעים את השלבים הבאים:
- עוברים אל SIEM Settings > Feeds.
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה Feed name (שם הפיד), מזינים שם לפיד, למשל Cloud Run Logs (יומני Cloud Run).
- בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
- בוחרים באפשרות GCP Cloud Run בתור סוג היומן.
- לוחצים על קבלת חשבון שירות בתור חשבון השירות של 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.