איסוף יומנים של 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. כדי להפעיל את מרחב השמות ההיררכי, לוחצים על חץ ההרחבה כדי להרחיב את הקטע אופטימיזציה לעומסי עבודה שמתמקדים בקבצים ובעיבוד נתונים, ואז בוחרים באפשרות הפעלת מרחב שמות היררכי בדלי הזה.

      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. בוחרים באחת מהאפשרויות בקטע הגנה על נתונים שרוצים להגדיר לקטגוריה.
      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. בתפריט, לוחצים על פעולות נוספות > יצירת יעד.
  5. מציינים את ההגדרות הבאות:
    1. פרטי יעד: מזינים שם ותיאור.
    2. לוחצים על הבא.
    3. יעד Sink: בוחרים באפשרות קטגוריה של Cloud Storage.
    4. קטגוריה של Cloud Storage: בוחרים את הקטגוריה שיצרתם קודם או יוצרים קטגוריה חדשה.
    5. לוחצים על הבא.
    6. בחירת יומנים שיכללו ב-Sink: יומן ברירת מחדל מאוכלס כשבוחרים באפשרות ב-קטגוריה של Cloud Storage.
    7. לוחצים על הבא.
    8. אופציונלי: Choose Logs to filter out of Sink (בחירת יומנים לסינון מ-Sink): בוחרים את היומנים שלא רוצים להעביר ל-Sink.
  6. לוחצים על Create Sink.

הגדרת פידים

כדי להגדיר פיד, מבצעים את השלבים הבאים:

  1. עוברים אל SIEM Settings > Feeds.
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה Feed name (שם הפיד), מזינים שם לפיד, למשל Cloud Run Logs (יומני Cloud Run).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות GCP Cloud Run בתור סוג היומן.
  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.