איסוף יומני ביקורת של Netwrix Auditor

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני ביקורת של Netwrix Auditor ב-Google Security Operations באמצעות Google Cloud Storage V2.

‫Netwrix Auditor היא פלטפורמה שמאפשרת לנתח את התנהגות המשתמשים ולצמצם את הסיכונים, וכך לשלוט בשינויים, בהגדרות ובגישה בסביבות IT היברידיות. הפלטפורמה מספקת ניתוח אבטחה כדי לזהות חריגות בהתנהגות המשתמשים ולחקור דפוסי איומים לפני שמתרחש פרצה באבטחת מידע. הפלטפורמה כוללת ממשק API לשילוב RESTful, ומספקת תצוגה ובקרה על כל מערכות ה-IT המקומיות או מבוססות-הענן שלכם באופן מאוחד.

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

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

  • מופע של Google SecOps
  • פרויקט ב-GCP עם ממשקי ה-API של Cloud Storage,‏ Cloud Run,‏ Pub/Sub ו-Cloud Scheduler מופעלים
  • הרשאות ליצירה ולניהול של קטגוריות ב-GCS
  • הרשאות לניהול מדיניות IAM בקטגוריות GCS
  • הרשאות ליצירת שירותי Cloud Run, נושאי Pub/Sub ומשימות ב-Cloud Scheduler
  • הרשאת אדמין לשרת Netwrix Auditor
  • חשבון בדומיין Windows עם הרשאות מתאימות לגישה ל-API
  • שרת Netwrix Auditor עם Integration API מופעל (מופעל כברירת מחדל)
  • מסד נתונים של ביקורת שהוגדר ב-Netwrix Auditor
  • קישוריות לרשת מפונקציית Cloud Run לשרת Netwrix Auditor ביציאה 9699 (ברירת מחדל)

הגדרת הגישה ל-API של Netwrix Auditor

כדי לאפשר לפונקציית Cloud Run לאחזר רשומות של פעילות, צריך לוודא שה-Integration API מופעל וליצור חשבון דומיין של Windows עם התפקיד המתאים ב-Netwrix Auditor.

איך מוודאים ש-Integration API מופעל

  1. במחשב שבו מותקן Netwrix Auditor Server, מפעילים את Netwrix Auditor.
  2. עוברים אל הגדרות > שילובים.
  3. מוודאים שהאפשרות Leverage Integration API מופעלת.
  4. שימו לב למספר ה-Port (ברירת המחדל היא 9699).
  5. אם אתם צריכים לשנות את היציאה:

    1. בקטע הגדרות API, לוחצים על שינוי.
    2. מציינים מספר יציאה חדש.
    3. לוחצים על OK.

יצירת חשבון שירות לגישה ל-API

  1. בבקר הדומיין של Windows, פותחים את Active Directory Users and Computers (משתמשים ומחשבים ב-Active Directory).
  2. עוברים ליחידה הארגונית שבה רוצים ליצור את חשבון השירות.
  3. לוחצים לחיצה ימנית על היחידה הארגונית > חדש > משתמש.
  4. בשדה שם פרטי, מזינים Chronicle Integration.
  5. בשדה User logon name (שם הכניסה של המשתמש), מזינים chronicle-api (או את שם המשתמש המועדף).
  6. לוחצים על הבא.
  7. מזינים סיסמה חזקה וקובעים את הגדרות הסיסמה בהתאם למדיניות של הארגון.
  8. מבטלים את הסימון של התיבה המשתמש חייב לשנות את הסיסמה בכניסה הבאה.
  9. בוחרים באפשרות הסיסמה אף פעם לא תפוג (מומלץ לחשבונות שירות).
  10. לוחצים על הבא > סיום.

הקצאת התפקיד "בודק גלובלי"

  1. בחלון הראשי של Netwrix Auditor, עוברים אל Monitoring Plans (תוכניות מעקב).
  2. בעץ של תוכניות המעקב, בוחרים באפשרות All monitoring plans (כל תוכניות המעקב) (תיקיית הבסיס).
  3. לוחצים על הענקת הרשאה.
  4. בתיבת הדו-שיח הענקת הרשאות, לוחצים על הוספת משתמש.
  5. בתיבת הדו-שיח Select User or Group:
    1. לוחצים על עיון.
    2. בשדה Enter the object name to select (הזנת שם האובייקט לבחירה), מזינים את שם המשתמש chronicle-api.
    3. לוחצים על בדיקת שמות כדי לאמת את החשבון.
    4. לוחצים על OK.
  6. בתפריט הנפתח תפקיד, בוחרים באפשרות בודק גלובלי.
  7. לוחצים על OK.
  8. לוחצים על Save.

תיעוד פרטי הכניסה ל-API

כדי להגדיר את משתני הסביבה של פונקציית Cloud Run, צריך לרשום את המידע הבא:

  • שם משתמש: חשבון הדומיין בפורמט DOMAIN\username (לדוגמה, ENTERPRISE\chronicle-api)
  • סיסמה: הסיסמה של חשבון השירות
  • שם המארח: שם הדומיין שמוגדר במלואו (FQDN) או כתובת ה-IP של שרת Netwrix Auditor (לדוגמה, auditor.enterprise.local או 172.28.6.15)
  • יציאה: היציאה של Integration API (ברירת המחדל היא 9699)

אימות ההרשאות

כדי לוודא שיש לחשבון את ההרשאות הנדרשות:

  1. ב-Netwrix Auditor, עוברים אל תוכניות מעקב.
  2. לוחצים על כל תוכניות המעקב.
  3. לוחצים על הענקת גישה.
  4. מוודאים שחשבון chronicle-api מופיע עם התפקיד Global reviewer (בודק גלובלי).
  5. אם החשבון לא מופיע, פועלים לפי השלבים שלמעלה בקטע הקצאת תפקיד של בודק/ת גלובלי/ת.

בדיקת הגישה ל-API

  • לפני שממשיכים בתהליך השילוב, בודקים את פרטי הכניסה:

    # Replace with your actual values
    NETWRIX_HOST="auditor.enterprise.local"
    NETWRIX_PORT="9699"
    NETWRIX_USER="ENTERPRISE\\chronicle-api"
    NETWRIX_PASS="your-password"
    
    # Test API access (retrieve first batch of activity records)
    curl -k --ntlm -u "${NETWRIX_USER}:${NETWRIX_PASS}" \
        "https://${NETWRIX_HOST}:${NETWRIX_PORT}/netwrix/api/v1/activity_records/enum" \
        -H "Content-Type: application/json" \
        -H "Accept: application/json"
    

תגובה מוצלחת מחזירה אובייקט JSON שמכיל מערך של רשומות פעילות ו-ContinuationMark עבור חלוקה לעמודים.

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

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

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

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

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

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

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

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

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

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

הפונקציה Cloud Run תופעל על ידי הודעות Pub/Sub מ-Cloud Scheduler כדי לאחזר רשומות פעילות מ-Netwrix Auditor Integration API ולכתוב אותן ל-GCS.

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

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

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

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

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

    • חשבון שירות: בוחרים באפשרות netwrix-audit-collector-sa
  9. עוברים לכרטיסייה Containers:

    1. לוחצים על Variables & Secrets (משתנים וסודות).
    2. לוחצים על ‎+ Add variable לכל משתנה סביבה:
    שם המשתנה ערך לדוגמה תיאור
    GCS_BUCKET netwrix-auditor-logs שם קטגוריית GCS
    GCS_PREFIX netwrix-audit קידומת לקובצי יומן
    STATE_KEY netwrix-audit/state.json נתיב קובץ תמונת המצב
    NETWRIX_HOST auditor.enterprise.local ה-FQDN או כתובת ה-IP של Netwrix Auditor Server
    NETWRIX_PORT 9699 יציאת API לשילוב
    NETWRIX_USER ENTERPRISE\chronicle-api חשבון דומיין בפורמט DOMAIN\username
    NETWRIX_PASS your-password סיסמה של חשבון שירות
    MAX_RECORDS 10000 מספר הרשומות המקסימלי בכל הפעלה
    LOOKBACK_HOURS 24 תקופת המבט לאחור הראשונית
  10. בקטע Variables & Secrets, גוללים למטה אל Requests:

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

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

    • Minimum number of instances: מזינים 0
    • Maximum number of instances: מזינים 100
  13. לוחצים על יצירה.

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

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

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

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

    • main.py:
    import functions_framework
    from google.cloud import storage
    import json
    import os
    import requests
    from requests_ntlm import HttpNtlmAuth
    from datetime import datetime, timezone, timedelta
    import time
    import urllib3
    
    # Suppress insecure HTTPS warnings for self-signed certificates
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    
    # Initialize Storage client
    storage_client = storage.Client()
    
    # Environment variables
    GCS_BUCKET = os.environ.get('GCS_BUCKET')
    GCS_PREFIX = os.environ.get('GCS_PREFIX', 'netwrix-audit')
    STATE_KEY = os.environ.get('STATE_KEY', 'netwrix-audit/state.json')
    NETWRIX_HOST = os.environ.get('NETWRIX_HOST')
    NETWRIX_PORT = os.environ.get('NETWRIX_PORT', '9699')
    NETWRIX_USER = os.environ.get('NETWRIX_USER')
    NETWRIX_PASS = os.environ.get('NETWRIX_PASS')
    MAX_RECORDS = int(os.environ.get('MAX_RECORDS', '10000'))
    LOOKBACK_HOURS = int(os.environ.get('LOOKBACK_HOURS', '24'))
    
    def parse_datetime(value):
      """Parse ISO datetime string to datetime object."""
      if value.endswith("Z"):
        value = value[:-1] + "+00:00"
      return datetime.fromisoformat(value)
    
    @functions_framework.cloud_event
    def main(cloud_event):
      """
      Cloud Run function triggered by Pub/Sub to fetch Netwrix Auditor
      activity records and write to GCS.
    
      Args:
        cloud_event: CloudEvent object containing Pub/Sub message
      """
    
      if not all([GCS_BUCKET, NETWRIX_HOST, NETWRIX_USER, NETWRIX_PASS]):
        print('Error: Missing required environment variables')
        return
    
      try:
        bucket = storage_client.bucket(GCS_BUCKET)
        state = load_state(bucket)
        now = datetime.now(timezone.utc)
    
        if isinstance(state, dict) and state.get('last_event_time'):
          try:
            last_time = parse_datetime(state['last_event_time'])
            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 activity records from {last_time.isoformat()} "
            f"to {now.isoformat()}")
    
        records, newest_event_time = fetch_activity_records(
          last_time, now
        )
    
        if not records:
          print("No new activity records found.")
          save_state(bucket, now.isoformat())
          return
    
        timestamp = now.strftime('%Y%m%d_%H%M%S')
        object_key = (
          f"{GCS_PREFIX}/netwrix_audit_{timestamp}.ndjson"
        )
        blob = bucket.blob(object_key)
    
        ndjson = '\n'.join(
          [json.dumps(r, ensure_ascii=False, default=str)
          for r in records]
        ) + '\n'
        blob.upload_from_string(
          ndjson, content_type='application/x-ndjson'
        )
    
        print(f"Wrote {len(records)} records to "
            f"gs://{GCS_BUCKET}/{object_key}")
    
        if newest_event_time:
          save_state(bucket, newest_event_time)
        else:
          save_state(bucket, now.isoformat())
    
        print(f"Successfully processed {len(records)} records")
    
      except Exception as e:
        print(f'Error processing activity records: {str(e)}')
        raise
    
    def load_state(bucket):
      """Load state from GCS."""
      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):
      """Save the last event timestamp to GCS state file."""
      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}")
    
    def fetch_activity_records(start_time, end_time):
      """
      Fetch activity records from Netwrix Auditor Integration API
      using the enum endpoint with continuation mark pagination.
    
      The API returns up to 1000 records per request. Subsequent
      requests include the ContinuationMark from the previous
      response to retrieve the next batch.
    
      Args:
        start_time: Start time for filtering records
        end_time: End time for filtering records
    
      Returns:
        Tuple of (records list, newest_event_time ISO string)
      """
      base_url = (
        f"https://{NETWRIX_HOST}:{NETWRIX_PORT}"
        f"/netwrix/api/v1/activity_records/enum"
      )
      auth = HttpNtlmAuth(NETWRIX_USER, NETWRIX_PASS)
      session = requests.Session()
      session.auth = auth
      session.verify = False
      session.headers.update({
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'User-Agent': 'GoogleSecOps-NetwrixCollector/1.0'
      })
    
      all_records = []
      newest_time = None
      continuation_mark = None
      page_num = 0
      backoff = 1.0
    
      while True:
        page_num += 1
    
        if len(all_records) >= MAX_RECORDS:
          print(f"Reached max_records limit ({MAX_RECORDS})")
          break
    
        try:
          if continuation_mark:
            response = session.post(
              base_url,
              json={"ContinuationMark": continuation_mark},
              timeout=(10, 60)
            )
          else:
            response = session.get(
              base_url,
              timeout=(10, 60)
            )
    
          if response.status_code == 429:
            retry_after = int(
              response.headers.get(
                'Retry-After', str(int(backoff))
              )
            )
            print(f"Rate limited (429). Retrying after "
                f"{retry_after}s...")
            time.sleep(retry_after)
            backoff = min(backoff * 2, 30.0)
            continue
    
          backoff = 1.0
    
          if response.status_code != 200:
            print(f"HTTP Error: {response.status_code}")
            print(f"Response body: {response.text}")
            return all_records, newest_time
    
          data = response.json()
    
          page_results = data.get('ActivityRecordList', [])
          continuation_mark = data.get('ContinuationMark')
    
          if not page_results:
            print("No more activity records (empty page)")
            break
    
          # Filter records by time window
          filtered = []
          for record in page_results:
            when = record.get('When')
            if when:
              try:
                record_time = parse_datetime(when)
                if start_time <= record_time <= end_time:
                  filtered.append(record)
                if (newest_time is None or
                    record_time >
                    parse_datetime(newest_time)):
                  newest_time = when
              except Exception as e:
                print(f"Warning: Could not parse "
                    f"record time: {e}")
                filtered.append(record)
            else:
              filtered.append(record)
    
          print(f"Page {page_num}: Retrieved "
              f"{len(page_results)} records, "
              f"{len(filtered)} within time window")
          all_records.extend(filtered)
    
          if not continuation_mark:
            print("No more pages (no ContinuationMark)")
            break
    
        except requests.exceptions.Timeout:
          print(f"Request timeout on page {page_num}")
          return all_records, newest_time
        except Exception as e:
          print(f"Error fetching activity records: {e}")
          return all_records, newest_time
    
      print(f"Retrieved {len(all_records)} total records "
          f"from {page_num} pages")
      return all_records, newest_time
    
    • requirements.txt:
    functions-framework==3.*
    google-cloud-storage==2.*
    requests>=2.31.0
    requests-ntlm>=1.2.0
    
  3. לוחצים על Deploy כדי לשמור ולפרוס את הפונקציה.

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

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

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

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

אפשרויות לתדירות התזמון

בוחרים את התדירות בהתאם לנפח היומן ולדרישות לגבי זמן האחזור:

תדירות ביטוי Cron תרחיש לדוגמה
כל 5 דקות */5 * * * * נפח גבוה, זמן אחזור נמוך
כל 15 דקות */15 * * * * נפח חיפושים בינוני
כל שעה 0 * * * * רגיל (מומלץ)
כל 6 שעות 0 */6 * * * נפח נמוך, עיבוד באצווה
יומי 0 0 * * * איסוף נתונים היסטוריים

בדיקת השילוב

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

    Fetching activity records from YYYY-MM-DDTHH:MM:SS+00:00 to YYYY-MM-DDTHH:MM:SS+00:00
    Page 1: Retrieved X records, X within time window
    Wrote X records to gs://netwrix-auditor-logs/netwrix-audit/netwrix_audit_YYYYMMDD_HHMMSS.ndjson
    Successfully processed X records
    
  8. נכנסים לדף Cloud Storage > Buckets.

  9. לוחצים על netwrix-auditor-logs.

  10. עוברים לתיקייה netwrix-audit/.

  11. מוודאים שנוצר קובץ .ndjson חדש עם חותמת הזמן הנוכחית.

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

  • ‫HTTP 401: מוודאים שמשתני הסביבה NETWRIX_USER ו-NETWRIX_PASS נכונים ושהם בפורמט DOMAIN\username
  • ‫HTTP 403: מוודאים שלחשבון השירות יש את התפקיד Global reviewer (בודק גלובלי) ב-Netwrix Auditor
  • ‫HTTP 429: הגבלת קצב של יצירת בקשות – הפונקציה תנסה שוב באופן אוטומטי עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff)
  • זמן קצוב לתפוגה של החיבור: בודקים את הקישוריות לרשת מ-Cloud Run לשרת Netwrix Auditor ביציאה 9691. אם השרת מקומי, צריך לוודא שהוגדר מחבר VPC או Cloud VPN
  • משתני סביבה חסרים: מוודאים שכל המשתנים הנדרשים מוגדרים בפונקציית Cloud Run.

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

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. לוחצים על הגדרת פיד יחיד.
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, Netwrix Auditor Activity Records).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות Netwrix בתור סוג היומן.
  7. לוחצים על Get Service Account (קבלת חשבון שירות).
  8. תוצג כתובת אימייל ייחודית של חשבון שירות. לדוגמה:

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

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

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

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

      gs://netwrix-auditor-logs/netwrix-audit/
      
    • אפשרות מחיקת המקור: בוחרים את אפשרות המחיקה המועדפת:
      • Never: אף פעם לא למחוק קבצים אחרי העברות (מומלץ לבדיקה).
      • מחיקת קבצים שהועברו: הקבצים נמחקים אחרי שההעברה מסתיימת.
      • מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת.
    • הגיל המקסימלי של הקובץ: כולל קבצים ששונו במספר הימים האחרון (ברירת המחדל היא 180 ימים)
    • מרחב השמות של הנכס: מרחב השמות של הנכס
    • תוויות הטמעה: התווית שתתווסף לאירועים מהפיד הזה
  12. לוחצים על הבא.

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

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

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

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
קוד אופרציה about.labels תוויות שמשויכות למידע על עצמי
כתוביות about.resource.attribute.labels תוויות מאפיינים של המשאב בקטע 'מידע'
משימה additional.fields שדות נוספים שמכילים מידע נוסף על האירוע
מה additional.fields
הודעה additional.fields
תיאור additional.fields
נוסף additional.fields
הוסר additional.fields
service_type additional.fields
פרטים additional.fields
extensions.auth.type extensions.auth.type סוג האימות שבו נעשה שימוש
EventReceivedTime metadata.collected_timestamp חותמת הזמן שבה המערכת אספה את האירוע
הודעה metadata.description תיאור האירוע
event_type metadata.event_type סוג האירוע
EventType metadata.product_event_type סוג אירוע ספציפי למוצר
EventID metadata.product_log_id מזהה יומן ספציפי למוצר
SourceModuleType observer.application האפליקציה שזיהתה את האירוע
שם המארח principal.asset.hostname שם המארח של הנכס שמשויך לחשבון המשתמש
כאשר: principal.asset.hostname
תחנת עבודה principal.asset.hostname
device_name principal.asset.hostname
תחנת עבודה principal.hostname שם המארח של החשבון הראשי
device_name principal.hostname
ProcessID principal.process.pid מזהה התהליך של הישות המורשית
שם principal.resource.name השם של המשאב שמשויך לחשבון המשתמש
מי principal.user.user_display_name השם המוצג של המשתמש
SourceName security_result.about.resource.attribute.labels תוויות של מאפייני משאבים בקטע 'מידע על' בתוצאת אבטחה
פעולה security_result.action פעולה שבוצעה בתוצאת האבטחה
action_details security_result.action_details פרטי הפעולה בתוצאת האבטחה
backup_name security_result.description תיאור של תוצאת האבטחה
service_failed security_result.description
מילות מפתח security_result.detection_fields שדות שמשמשים לזיהוי בתוצאת האבטחה
RecordNumber security_result.detection_fields
session_ID security_result.detection_fields
allow_connection_with_desktop security_result.detection_fields
service_account security_result.detection_fields
חוּמרה security_result.severity רמת החומרה של תוצאת האבטחה
SeverityValue security_result.severity
סיכום security_result.summary סיכום תוצאות האבטחה
application_name target.application האפליקציה ביעד
שם המארח target.asset.hostname שם המארח של הנכס שמשויך ליעד
כאשר: target.asset.hostname
file_path target.file.full_path הנתיב המלא של קובץ היעד
גודל target.file.size גודל קובץ היעד
שם המארח target.hostname שם המארח של היעד
כאשר: target.hostname
סוג target.resource.attribute.labels תוויות מאפיינים למשאב היעד
SourceModuleName target.resource.name שם משאב היעד
DataSource metadata.product_name שם המוצר שיצר את האירוע
metadata.vendor_name metadata.vendor_name שם הספק

יומן שינויים

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

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