איסוף יומנים של 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

  1. נכנסים למסוףGoogle Cloud .
  2. נכנסים לדף Cloud Storage Buckets.

    כניסה לדף Buckets

  3. לוחצים על Create.

  4. ממלאים את פרטי הקטגוריה בדף Create a bucket. אחרי כל אחד מהשלבים הבאים, לוחצים על המשך כדי לעבור לשלב הבא:

    1. בקטע Get started (תחילת העבודה), מבצעים את הפעולות הבאות:

      1. מזינים שם ייחודי שעומד בדרישות לשמות של קטגוריות, לדוגמה cloudrun-logs.
      2. כדי להפעיל את מרחב השמות ההיררכי, לוחצים על החץ להרחבה כדי להרחיב את הקטע Optimize for file oriented and data-intensive workloads (אופטימיזציה לעומסי עבודה שמתמקדים בקבצים ובנתונים), ואז בוחרים באפשרות Enable Hierarchical namespace on this bucket (הפעלת מרחב שמות היררכי בדלי הזה).

      3. כדי להוסיף תווית של מאגר, לוחצים על החץ להרחבה כדי להרחיב את הקטע תוויות.

      4. לוחצים על הוספת תווית ומציינים מפתח וערך לתווית.

    2. בקטע Choose where to store your data, מבצעים את הפעולות הבאות:

      1. בוחרים סוג מיקום.
      2. בתפריט של סוג המיקום, בוחרים מיקום שבו נתוני האובייקטים בקטגוריה יאוחסנו באופן קבוע.

      3. כדי להגדיר שכפול בין מאגרי מידע, מרחיבים את הקטע הגדרת שכפול בין מאגרי מידע.

    3. בקטע Choose a storage class for your data, בוחרים default storage class לקטגוריה, או בוחרים ב-Autoclass לניהול אוטומטי של סוג האחסון (storage class) של נתוני הקטגוריה.

    4. בקטע Choose how to control access to objects, בוחרים באפשרות not כדי לא לאכוף public access prevention, ובוחרים access control model לאובייקטים של הקטגוריה.

    5. בקטע Choose how to protect object data:

      1. בוחרים באחת מהאפשרויות בקטע Data protection (הגנה על נתונים) שרוצים להגדיר לקטגוריה.
      2. כדי לבחור איך להצפין את נתוני האובייקט, לוחצים על החץ להרחבה של Data encryption ובוחרים Data encryption method.
  5. לוחצים על יצירה.

הגדרת ייצוא יומנים ב-Cloud Run

  1. בדף Google Cloud Welcome, לוחצים על הסמל Cloud Run.
  2. בשורת החיפוש שבחלק העליון של המסך, מחפשים את Logging ולוחצים על Enter.
  3. ב-Log Explorer, מסננים את היומנים על ידי בחירה באפשרות Cloud Run ב-Log Name ולוחצים על Apply.
  4. בתפריט, לוחצים על More Actions > Create Sink (פעולות נוספות > יצירת יעד).
  5. מזינים את ההגדרות הבאות:
    1. Sink Details: מזינים שם ותיאור.
    2. לוחצים על הבא.
    3. יעד Sink: בוחרים באפשרות קטגוריה של Cloud Storage.
    4. Cloud Storage Bucket (קטגוריה של Cloud Storage): בוחרים את הקטגוריה שיצרתם קודם או יוצרים קטגוריה חדשה.
    5. לוחצים על הבא.
    6. Choose Logs to include in Sink: יומן ברירת מחדל מאוכלס כשבוחרים אפשרות בקטגוריה של Cloud Storage.
    7. לוחצים על הבא.
    8. אופציונלי: בחירת יומנים לסינון מחוץ ל-Sink: בוחרים את היומנים שלא רוצים להעביר ל-Sink.
  6. לוחצים על Create Sink.

הגדרת פידים

כדי להגדיר פיד:

  1. עוברים אל SIEM Settings (הגדרות SIEM) > Feeds (פידים).
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה Feed name (שם הפיד), מזינים שם לפיד, למשל Cloud Run Logs (יומני Cloud Run).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות GCP Cloud Run בתור Log type (סוג היומן).
  7. לוחצים על קבלת חשבון שירות בתור חשבון השירות של Chronicle.
  8. לוחצים על הבא.
  9. מציינים ערכים לפרמטרים הבאים של הקלט:

    • כתובת URI של קטגוריית אחסון: Google Cloud כתובת ה-URL של קטגוריית האחסון בפורמט gs://my-bucket/<value>/. כתובת ה-URL צריכה להסתיים בקו נטוי (/).
    • אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה בהתאם להעדפות.

    • גיל הקובץ המקסימלי: כולל קבצים ששונו במספר הימים האחרונים. ברירת המחדל היא 180 ימים.

  10. לוחצים על הבא.

  11. בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.

טבלת מיפוי 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.