איסוף יומנים של Menlo Security Isolation Platform ‏ (MSIP)

נתמך ב:

במדריך הזה מוסבר איך להטמיע יומנים של Menlo Security Isolation Platform ‏ (MSIP) ב-Google SecOps באמצעות Google Cloud Storage.

הגישה של Menlo Security מתמקדת בבידוד, ומפצלת את הגלישה באינטרנט ואת אחזור המסמכים בין המכשיר של המשתמש לבין קונטיינר וירטואלי חד-פעמי (DVC) מבודד, שנמצא מחוץ לנקודת הקצה. כל הקוד המסוכן מופעל ב-DVC המבודד, ולעולם לא מגיע לנקודת הקצה. רק נתונים של תצוגה בטוחה נשלחים לדפדפן של המשתמש. הפלטפורמה מספקת רישום מקיף ביומן של גישה לאינטרנט, אירועים שמצריכים בדיקה, אבטחת אימייל, הפרות של DLP ופעילות SMTP.

לפני שמתחילים

חשוב לוודא שמתקיימות דרישות הסף הבאות:

  • מופע של Google SecOps
  • גישה עם הרשאות ל-Menlo Security Admin Portal
  • הרשאות ליצירת אסימוני API ב-Menlo Security
  • פרויקט GCP עם ממשקי Cloud Storage,‏ Cloud Run,‏ Pub/Sub ו-Cloud Scheduler API מופעלים

הגדרת גישה ל-API של Menlo Security

כדי לאפשר לפונקציית Cloud Run לאחזר יומנים, צריך ליצור טוקן API עם הרשאה ל-Log Export API.

יצירת טוקן API

  1. נכנסים לפורטל הניהול של Menlo Security בכתובת https://admin.menlosecurity.com.
  2. עוברים אל הגדרות > אימות > טוקנים של API.
  3. לוחצים על יצירת טוקן.
  4. בשדה Token Name (שם האסימון), מזינים שם תיאורי (לדוגמה, Chronicle GCS Integration).
  5. בקטע Permissions, בוחרים באפשרות Log Export API.
  6. לוחצים על יצירה או על שמירה.
  7. מעתיקים את אסימון ה-API שנוצר ושומרים אותו במקום מאובטח.

חשוב: אסימון ה-API מוצג רק פעם אחת. אחרי שיוצרים אותו, מאחסנים אותו מיד במקום מאובטח.

הרשאות ה-API הנדרשות

  • נדרשת ההרשאה הבאה לטוקן ה-API:

    הרשאה/היקף רמת גישה מטרה
    Log Export API קריאה אחזור יומנים מ-Menlo Security API

יצירת קטגוריה של Google Cloud Storage

  1. נכנסים אל מסוף Google Cloud.
  2. בוחרים פרויקט או יוצרים פרויקט חדש.
  3. בתפריט הניווט, עוברים אל Cloud Storage > Buckets.
  4. לוחצים על Create bucket.
  5. מספקים את פרטי ההגדרה הבאים:

    הגדרה ערך
    Name your bucket (שם הקטגוריה) מזינים שם ייחודי גלובלית (לדוגמה, menlo-security-logs)
    סוג המיקום בוחרים לפי הצרכים (אזור, שני אזורים, מספר אזורים)
    Location בוחרים את המיקום (לדוגמה, us-central1).
    סוג אחסון (storage class) רגיל (מומלץ ליומנים שמתבצעת אליהם גישה לעיתים קרובות)
    בקרת גישה אחיד (מומלץ)
    כלים להגנה אופציונלי: הפעלת ניהול גרסאות של אובייקטים או מדיניות שמירת נתונים
  6. לוחצים על יצירה.

יצירת חשבון שירות לפונקציית Cloud Run

יצירת חשבון שירות

  1. במסוף GCP, עוברים אל IAM & Admin > Service Accounts.
  2. לוחצים על יצירת חשבון שירות.
  3. מספקים את פרטי ההגדרה הבאים:
    • שם חשבון השירות: מזינים menlo-logs-collector-sa
    • תיאור חשבון השירות: מזינים Service account for Cloud Run function to collect Menlo Security logs
  4. לוחצים על יצירה והמשך.
  5. בקטע Grant this service account access to project (מתן גישה של חשבון השירות הזה לפרויקט), מוסיפים את התפקידים הבאים:
    1. לוחצים על בחירת תפקיד.
    2. מחפשים את Storage Object Admin ולוחצים עליו.
    3. לוחצים על + הוספת תפקיד נוסף.
    4. מחפשים את האפשרות Cloud Run Invoker (הפעלת שירותים ב-Cloud Run) ולוחצים עליה.
    5. לוחצים על + הוספת תפקיד נוסף.
    6. מחפשים את האפשרות Cloud Functions Invoker (הפעלת פונקציות של Cloud Functions) ולוחצים עליה.
  6. לוחצים על Continue.
  7. לוחצים על סיום.

מתן הרשאות IAM בקטגוריית GCS

  1. עוברים אל Cloud Storage > Buckets (קטגוריות).
  2. לוחצים על שם הקטגוריה (menlo-security-logs).
  3. עוברים לכרטיסייה Permissions.
  4. לוחצים על הענקת גישה.
  5. מספקים את פרטי ההגדרה הבאים:
    • הוספת ישויות מורשות: מזינים את כתובת האימייל בחשבון של חשבון השירות (menlo-logs-collector-sa@PROJECT_ID.iam.gserviceaccount.com)
    • הקצאת תפקידים: בוחרים באפשרות אדמין של אובייקטים באחסון.
  6. לוחצים על Save.

יצירת נושא Pub/Sub

  1. במסוף GCP, עוברים אל Pub/Sub > Topics.
  2. לוחצים על יצירת נושא.
  3. מספקים את פרטי ההגדרה הבאים:
    • מזהה הנושא: מזינים menlo-logs-trigger
    • השארת ההגדרות האחרות כברירת מחדל
  4. לוחצים על יצירה.

יצירת פונקציית Cloud Run לאיסוף יומנים

  1. במסוף GCP, עוברים אל Cloud Run.
  2. לוחצים על יצירת שירות.
  3. בוחרים באפשרות Function (שימוש בעורך ישיר ליצירת פונקציה).
  4. בקטע Configure (הגדרה), מזינים את פרטי ההגדרה הבאים:

    הגדרה ערך
    שם השירות menlo-logs-collector
    אזור בוחרים אזור שתואם ל-GCS Bucket (לדוגמה, us-central1)
    זמן ריצה בוחרים באפשרות Python 3.12 ואילך.
  5. בקטע טריגר (אופציונלי):

    1. לוחצים על + הוספת טריגר.
    2. בוחרים באפשרות Cloud Pub/Sub.
    3. בקטע Select a Cloud Pub/Sub topic, בוחרים באפשרות menlo-logs-trigger.
    4. לוחצים על Save.
  6. בקטע Authentication:

    1. בוחרים באפשרות דרישת אימות.
    2. בודקים את ניהול זהויות והרשאות גישה (IAM).
  7. גוללים למטה ומרחיבים את Containers, Networking, Security (מאגרי תגים, רשתות, אבטחה).

  8. עוברים לכרטיסייה אבטחה:

    • חשבון שירות: בוחרים באפשרות menlo-logs-collector-sa
  9. עוברים לכרטיסייה מאגרי תגים:

    1. לוחצים על Variables & Secrets (משתנים וסודות).
    2. לוחצים על + הוספת משתנה לכל משתנה סביבתי:
    שם המשתנה ערך לדוגמה תיאור
    GCS_BUCKET menlo-security-logs שם קטגוריית GCS
    GCS_PREFIX menlo-logs קידומת לקובצי יומן
    STATE_KEY menlo-logs/state.json נתיב קובץ תמונת מצב
    MENLO_API_TOKEN your-menlo-api-token טוקן API של Menlo Security
    MENLO_API_HOST logs.menlosecurity.com Menlo Security API host
    MENLO_LOG_TYPES web,audit,email,dlp סוגי יומנים מופרדים בפסיקים
    LOOKBACK_HOURS 1 תקופת המבט לאחור הראשונית
  10. בקטע Variables & Secrets, גוללים למטה אל Requests:

    • זמן קצוב לתפוגת בקשה: מזינים 600 שניות (10 דקות)
  11. עוברים לכרטיסייה הגדרות:

    • בקטע Resources (מקורות מידע):
      • זיכרון: בוחרים באפשרות 512MiB או יותר
      • ‫CPU: בוחרים באפשרות 1
  12. בקטע שינוי קנה מידה של העריכה:

    • מספר מינימלי של מופעים: מזינים 0
    • מספר מקרים מקסימלי: מזינים 100
  13. לוחצים על יצירה.

  14. ממתינים ליצירת השירות (1-2 דקות).

  15. אחרי שיוצרים את השירות, עורך הקוד המוטבע נפתח באופן אוטומטי.

הוספת קוד פונקציה

  1. מזינים main בשדה Entry point.
  2. בעורך הקוד המוטבע, יוצרים שני קבצים:

    • main.py:
    import functions_framework
    from google.cloud import storage
    import os
    import json
    import urllib3
    import time
    import uuid
    from datetime import datetime, timezone, timedelta
    
    http = urllib3.PoolManager(
      timeout=urllib3.Timeout(connect=5.0, read=60.0),
      retries=False,
    )
    
    storage_client = storage.Client()
    
    GCS_BUCKET = os.environ.get('GCS_BUCKET')
    GCS_PREFIX = os.environ.get('GCS_PREFIX', 'menlo-logs')
    STATE_KEY = os.environ.get('STATE_KEY', 'menlo-logs/state.json')
    API_TOKEN = os.environ.get('MENLO_API_TOKEN')
    API_HOST = os.environ.get('MENLO_API_HOST', 'logs.menlosecurity.com')
    LOG_TYPES = os.environ.get('MENLO_LOG_TYPES', 'web').split(',')
    LOOKBACK_HOURS = int(os.environ.get('LOOKBACK_HOURS', '1'))
    
    @functions_framework.cloud_event
    def main(cloud_event):
      if not all([GCS_BUCKET, API_TOKEN, API_HOST]):
        print('Error: Missing required environment variables')
        return
    
      try:
        bucket = storage_client.bucket(GCS_BUCKET)
        state = load_state(bucket)
        now = datetime.now(timezone.utc).replace(microsecond=0)
    
        if isinstance(state, dict) and state.get('last_event_time'):
          try:
            last_val = state['last_event_time']
            if last_val.endswith('Z'):
              last_val = last_val[:-1] + '+00:00'
            last_time = datetime.fromisoformat(last_val)
            last_time = last_time - timedelta(minutes=2)
          except Exception as e:
            print(f"Warning: Could not parse last_event_time: {e}")
            last_time = now - timedelta(hours=LOOKBACK_HOURS)
        else:
          last_time = now - timedelta(hours=LOOKBACK_HOURS)
    
        print(f"Fetching logs from {last_time.isoformat()} to {now.isoformat()}")
    
        total = 0
        newest_time = None
    
        for log_type in LOG_TYPES:
          log_type = log_type.strip()
          print(f"Fetching {log_type} logs...")
          events = fetch_logs(log_type, API_TOKEN, API_HOST, last_time, now)
    
          if events:
            object_key = f"{GCS_PREFIX}/{now:%Y/%m/%d}/menlo-{log_type}-{uuid.uuid4()}.ndjson"
            blob = bucket.blob(object_key)
    
            ndjson = '\n'.join(
              [json.dumps(ev, ensure_ascii=False) for ev in events]
            ) + '\n'
            blob.upload_from_string(ndjson, content_type='application/x-ndjson')
    
            print(f"Uploaded {len(events)} {log_type} events to gs://{GCS_BUCKET}/{object_key}")
            total += len(events)
    
            for ev in events:
              ev_time = ev.get('timestamp') or ev.get('time') or ev.get('created_at')
              if ev_time and (newest_time is None or str(ev_time) > str(newest_time)):
                newest_time = str(ev_time)
          else:
            print(f"No {log_type} events found")
    
        save_state(bucket, newest_time if newest_time else now.isoformat())
        print(f"Successfully processed {total} total events")
    
      except Exception as e:
        print(f'Error processing logs: {str(e)}')
        raise
    
    def fetch_logs(log_type, token, api_host, start, end):
      url = f"https://{api_host}/api/v1/logs/{log_type}"
      headers = {
        'Authorization': f'Token {token}',
        'Accept': 'application/json',
      }
      params = {
        'start': start.strftime('%Y-%m-%dT%H:%M:%SZ'),
        'end': end.strftime('%Y-%m-%dT%H:%M:%SZ'),
      }
      query = '&'.join(f'{k}={v}' for k, v in params.items())
      full_url = f'{url}?{query}'
    
      all_events = []
      backoff = 1.0
    
      while full_url:
        response = http.request('GET', full_url, headers=headers)
    
        if response.status == 429:
          retry_after = int(response.headers.get('Retry-After', str(int(backoff))))
          print(f"Rate limited. Waiting {retry_after}s...")
          time.sleep(retry_after)
          backoff = min(backoff * 2, 60.0)
          continue
    
        if response.status != 200:
          print(f"API error {response.status}: {response.data.decode('utf-8')}")
          break
    
        backoff = 1.0
        data = json.loads(response.data.decode('utf-8'))
        events = data if isinstance(data, list) else data.get('events', data.get('data', []))
        all_events.extend(events)
    
        full_url = data.get('next') if isinstance(data, dict) else None
    
      print(f"Total {log_type} events fetched: {len(all_events)}")
      return all_events
    
    def load_state(bucket):
      try:
        blob = bucket.blob(STATE_KEY)
        if blob.exists():
          return json.loads(blob.download_as_text())
      except Exception as e:
        print(f"Warning: Could not load state: {e}")
      return {}
    
    def save_state(bucket, last_event_time_iso):
      try:
        state = {
          'last_event_time': last_event_time_iso,
          'last_run': datetime.now(timezone.utc).isoformat()
        }
        blob = bucket.blob(STATE_KEY)
        blob.upload_from_string(
          json.dumps(state, indent=2),
          content_type='application/json'
        )
        print(f"Saved state: last_event_time={last_event_time_iso}")
      except Exception as e:
        print(f"Warning: Could not save state: {e}")
    
    • requirements.txt:
    functions-framework==3.*
    google-cloud-storage==2.*
    urllib3>=2.0.0
    
  3. לוחצים על Deploy כדי לשמור ולפרוס את הפונקציה.

  4. ממתינים לסיום הפריסה (2-3 דקות).

יצירת משימה ב-Cloud Scheduler

  1. במסוף GCP, עוברים אל Cloud Scheduler.
  2. לוחצים על Create Job (יצירת משימה).
  3. מספקים את פרטי ההגדרה הבאים:

    הגדרה ערך
    שם menlo-logs-collector-hourly
    אזור בחירה באותו אזור כמו פונקציית Cloud Run
    תדירות ‫0 * * * * (כל שעה, בדיוק בשעה)
    אזור זמן בחירת אזור זמן (מומלץ לבחור UTC)
    סוג הטירגוט Pub/Sub
    נושא בחירת menlo-logs-trigger
    גוף ההודעה ‫{} (אובייקט JSON ריק)
  4. לוחצים על יצירה.

בדיקת השילוב

  1. במסוף Cloud Scheduler, מאתרים את המשימה (menlo-logs-collector-hourly).
  2. לוחצים על הפעלת המשימה בכוח כדי להפעיל את המשימה באופן ידני.
  3. מחכים כמה שניות.
  4. עוברים אל Cloud Run > Services.
  5. לוחצים על menlo-logs-collector.
  6. לוחצים על הכרטיסייה Logs (יומנים).
  7. מוודאים שהפונקציה בוצעה בהצלחה. מחפשים:

    Fetching logs from YYYY-MM-DDTHH:MM:SS+00:00 to YYYY-MM-DDTHH:MM:SS+00:00
    Fetching web logs...
    Total web events fetched: X
    Uploaded X web events to gs://menlo-security-logs/menlo-logs/YYYY/MM/DD/menlo-web-UUID.ndjson
    Successfully processed X total events
    
  8. עוברים אל Cloud Storage > Buckets (קטגוריות).

  9. לוחצים על menlo-security-logs.

  10. עוברים לתיקייה menlo-logs/.

  11. בודקים שנוצרו קובצי .ndjson חדשים עם התאריך הנוכחי.

אם מופיעות שגיאות ביומנים:

  • HTTP 401: צריך לוודא שמשתנה הסביבה MENLO_API_TOKEN נכון
  • ‫HTTP 403: מוודאים שלטוקן ה-API יש הרשאה ל-Log Export API
  • ‫HTTP 429: הגבלת קצב – הפונקציה תנסה שוב באופן אוטומטי עם השהיה לפני ניסיון חוזר (backoff)
  • משתני סביבה חסרים: מוודאים שכל המשתנים הנדרשים מוגדרים בהגדרות של פונקציית Cloud Run

אחזור חשבון השירות של Google SecOps

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. לוחצים על Configure a single feed (הגדרת פיד יחיד).
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, Menlo Security MSIP Logs).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות Menlo Security בתור סוג היומן.
  7. לוחצים על קבלת חשבון שירות. תוצג כתובת האימייל בחשבון שירות ייחודי, לדוגמה:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. מעתיקים את כתובת האימייל הזו לשימוש בשלב הבא.

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

  10. מציינים ערכים לפרמטרים הבאים של הקלט:

    • כתובת ה-URL של קטגוריית האחסון: מזינים את ה-URI של קטגוריית GCS עם נתיב הקידומת:

      gs://menlo-security-logs/menlo-logs/
      
    • אפשרות למחיקת המקור: בוחרים את אפשרות המחיקה לפי ההעדפה שלכם:

      • אף פעם: לא נמחקים קבצים אחרי ההעברה (מומלץ לבדיקות).
      • מחיקת קבצים שהועברו: הקבצים נמחקים אחרי שההעברה מסתיימת.
      • מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת בהצלחה.

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

      • מרחב השמות של הנכס: מרחב השמות של הנכס

      • תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה

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

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

הענקת הרשאות IAM לחשבון השירות של Google SecOps

  1. עוברים אל Cloud Storage > Buckets (קטגוריות).
  2. לוחצים על menlo-security-logs.
  3. עוברים לכרטיסייה Permissions.
  4. לוחצים על הענקת גישה.
  5. מספקים את פרטי ההגדרה הבאים:
    • Add principals (הוספת ישויות מורשות): מדביקים את כתובת האימייל בחשבון של חשבון השירות של Google SecOps
    • הקצאת תפקידים: בוחרים באפשרות צפייה באובייקטים באחסון.
  6. לוחצים על Save.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
customer_name intermediary.hostname מגדירים אם customer_name לא IP
customer_name intermediary.ip הערך מחולץ מ-customer_name אם מדובר בכתובת IP, או מכתובות ה-IP של xff_ip
xff_ip intermediary.ip
event_data.event_time metadata.event_timestamp ניתוח באמצעות grok ומסנן תאריכים
request_type metadata.event_type לוגיקה של משפט תנאי שמבוססת על השדות האלה
has_principal metadata.event_type
has_top_url metadata.event_type
has_dest metadata.event_type
log_type metadata.log_type הערך הועתק ישירות
event_data.name metadata.product_event_type הערך הועתק ישירות
reqId metadata.product_log_id הערך הועתק ישירות
event_data.version metadata.product_version הערך הועתק ישירות
event_data.protocol network.application_protocol ממופה באמצעות רשימת פרוטוקולים מוגדרת מראש
request_type network.http.method הערך הועתק ישירות
מפנה network.http.referral_url הערך הועתק ישירות
response_code network.http.response_code הומר למספר שלם
event_data.user-agent network.http.user_agent הערך הועתק ישירות
full_session_id network.session_id הערך הועתק ישירות
browser_and_version principal.application הערך הועתק ישירות
event_data.x-client-ip principal.asset.ip הערך מ-event_data.x-client-ip אם הוא לא ריק, אחרת src_ip
src_ip principal.asset.ip
קבוצות principal.group.product_object_id הערך הועתק ישירות
event_data.x-client-ip principal.ip הערך מ-event_data.x-client-ip אם הוא לא ריק, אחרת src_ip
src_ip principal.ip
אזור principal.location.country_or_region הערך מהאזור אם הוא לא ריק, אחרת egress_country
egress_country principal.location.country_or_region
region_name principal.location.name הערך הועתק ישירות
egress_ip principal.nat_ip הערך הועתק ישירות
event_data.userid principal.user.email_addresses מיזוג אם יש התאמה לביטוי הרגולרי של כתובת אימייל
event_data.userid principal.user.userid הערך הועתק ישירות
event_data.domain security_result.about.administrative_domain הערך הועתק ישירות
event_data.url security_result.about.url הערך הועתק ישירות
event_data.pe_action security_result.action ממופה ל-ALLOW,‏ BLOCK או ALLOW_WITH_MODIFICATION
event_data.categories security_result.category_details מוזגו מ-event_data.categories (חילוץ או ישיר) ומ-casb_cat_name
casb_cat_name security_result.category_details
event_data.risk_score security_result.confidence_details הערך הועתק ישירות
content-type security_result.detection_fields מיזוג משדות שונים של תוויות
מוצר security_result.detection_fields
איומים security_result.detection_fields
virusDetails security_result.detection_fields
sandboxResult security_result.detection_fields
fullScanResult security_result.detection_fields
tab_id security_result.detection_fields
pe_reason security_result.detection_fields
ua_type security_result.detection_fields
email_isolation_state security_result.detection_fields
document_url security_result.detection_fields
archive_path security_result.detection_fields
casb_app_name security_result.detection_fields
casb_fun_name security_result.detection_fields
casb_org_name security_result.detection_fields
casb_profile_id security_result.detection_fields
casb_profile_name security_result.detection_fields
casb_profile_type security_result.detection_fields
casb_risk_score security_result.detection_fields
connId security_result.detection_fields
origin_country security_result.detection_fields
egress_country security_result.detection_fields
is_casb_ddl security_result.detection_fields
is_iframe security_result.detection_fields
parent_file_id security_result.detection_fields
parent_filename security_result.detection_fields
parent_sha256 security_result.detection_fields
parent_tid security_result.detection_fields
root_file_id security_result.detection_fields
root_filename security_result.detection_fields
root_sha256 security_result.detection_fields
casb_risk_score security_result.risk_score הומר לצף
casb_profile_id security_result.rule_id הערך הועתק ישירות
pe_rulename security_result.rule_name הערך הועתק ישירות
casb_profile_name security_result.rule_set הערך הועתק ישירות
casb_profile_type security_result.rule_type הערך הועתק ישירות
event_data.severity security_result.severity_details הערך הועתק ישירות
magicName security_result.summary המחרוזת המחוברת היא "%{magicName} is %{threats}."
איומים security_result.summary
threat_types security_result.threat_name הערך הועתק ישירות
origin_ip src.ip הערך הועתק ישירות
origin_country src.location.country_or_region הערך הועתק ישירות
event_data.dst target.asset.ip חילוץ מ-event_data.dst או מ-dst באמצעות תבנית IP של grok
dst target.asset.ip
filename target.file.full_path הערך הועתק ישירות
mimeType target.file.mime_type הערך הועתק ישירות
sha256 target.file.sha256 הערך הועתק ישירות
file_size target.file.size בוצעה המרה ל-float ואז ל-uinteger
event_data.dst target.ip חילוץ מ-event_data.dst או מ-dst באמצעות תבנית IP של grok
dst target.ip
top_url target.url חילוץ באמצעות תבנית grok של URI
metadata.product_name metadata.product_name ההגדרה היא MENLO SECURITY
metadata.vendor_name metadata.vendor_name ההגדרה היא MENLO SECURITY
region event.idm.read_only_udm.principal.location.country_or_region מופה מיומן השינויים
region_name event.idm.read_only_udm.principal.location.name מופה מיומן השינויים
src_ip event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
groups event.idm.read_only_udm.principal.group.product_object_id מופה מיומן השינויים
content-type event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
product event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
mimeType event.idm.read_only_udm.target.file.mime_type מופה מיומן השינויים

יומן שינויים

צפייה ביומן השינויים של מנתח התוכן הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.