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

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני ביקורת של Workday ב-Google Security Operations באמצעות Google Cloud Storage. המנתח מזהה קודם את סוג האירוע הספציפי מהיומנים על סמך ניתוח דפוסים של נתוני ה-CSV. לאחר מכן, הוא מחלץ ומבנה שדות רלוונטיים בהתאם לסוג שזוהה, וממפה אותם למודל נתונים מאוחד (UDM) לצורך ניתוח אבטחה עקבי.

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

ודאו שאתם עומדים בדרישות המוקדמות הבאות:

  • מופע של Google SecOps
  • פרויקט ב-GCP עם Cloud Storage API מופעל
  • הרשאות ליצירה ולניהול של מאגרי GCS
  • הרשאות לניהול מדיניות IAM בקטגוריות GCS
  • הרשאות ליצירת פונקציות Cloud Run, נושאי Pub/Sub ומשימות Cloud Scheduler
  • גישה עם הרשאות מיוחדות ל-Workday

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

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

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

יצירת משתמש במערכת השילוב (ISU) של Workday

  1. ב-Workday, מחפשים את האפשרות Create Integration System User > OK (יצירת משתמש מערכת לשילוב) ולוחצים על OK.
  2. ממלאים את שם המשתמש (לדוגמה, audit_gcs_user).
  3. לוחצים על OK.
  4. כדי לאפס את הסיסמה, עוברים אל פעולות קשורות > אבטחה > איפוס סיסמה.
  5. כדי למנוע את פקיעת התוקף של הסיסמה, בוחרים באפשרות שמירה על כללי הסיסמה.
  6. מחפשים את Create Security Group > Integration System Security Group (Unconstrained).
  7. מזינים שם (לדוגמה, ISU_Audit_GCS) ומוסיפים את חשבון ה-ISU אל משתמשי מערכת השילוב.
  8. מחפשים את Domain Security Policies for Functional Area > System (מדיניות אבטחה של דומיין לאזור פונקציונלי > מערכת).
  9. בקטע Audit Trail (יומן ביקורת), בוחרים באפשרות Actions > Edit Permissions (פעולות > עריכת הרשאות).
  10. בקטע Get Only, מוסיפים את קבוצת ISU_Audit_GCS.
  11. לוחצים על OK > Activate Pending Security Policy Changes.

הגדרת דוח בהתאמה אישית ב-Workday

  1. ב-Workday, מחפשים את האפשרות Create Custom Report (יצירת דוח בהתאמה אישית).
  2. מזינים את פרטי ההגדרה הבאים:
    • שם: מזינים שם ייחודי (לדוגמה, Audit_Trail_BP_CSV).
    • סוג: בוחרים באפשרות מתקדם.
    • מקור נתונים: בוחרים באפשרות נתיב ביקורת – הגדרת תהליך עסקי.
  3. לוחצים על OK.
  4. אופציונלי: מוסיפים מסננים בסוג התהליך העסקי או בתאריך התחילה.
  5. עוברים לכרטיסייה פלט.
  6. בוחרים באפשרויות Enable as Web Service (הפעלה כשירות אינטרנט) ו-Optimized for Performance (אופטימיזציה לביצועים), ואז בוחרים באפשרות CSV Format (פורמט CSV).
  7. לוחצים על אישור > סיום.
  8. פותחים את הדוח ולוחצים על שיתוף > מוסיפים את ISU_Audit_GCS עם הרשאת צפייה > אישור.
  9. עוברים אל פעולות קשורות > שירות אינטרנט > הצגת כתובות URL.
  10. מעתיקים את כתובת ה-URL של קובץ ה-CSV.

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

פונקציית Cloud Run צריכה חשבון שירות עם הרשאות כתיבה לקטגוריה של GCS והרשאה להפעלה על ידי Pub/Sub.

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

  1. במסוף GCP, עוברים אל IAM & Admin > Service Accounts.
  2. לוחצים על יצירת חשבון שירות.
  3. מספקים את פרטי ההגדרה הבאים:
    • שם חשבון השירות: מזינים workday-audit-collector-sa.
    • תיאור חשבון השירות: מזינים Service account for Cloud Run function to collect Workday audit 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. לוחצים על סיום.

התפקידים האלה נדרשים כדי:

  • אדמין של אובייקטים באחסון: כתיבת יומנים לקטגוריית GCS
  • ‫Cloud Run Invoker: מתן הרשאה ל-Pub/Sub להפעיל את הפונקציה
  • מפעיל פונקציות של Cloud Functions: מאפשר להפעיל פונקציות

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

נותנים לחשבון השירות הרשאות כתיבה בקטגוריית GCS:

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

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

יוצרים נושא Pub/Sub ש-Cloud Scheduler יפרסם בו ופונקציית Cloud Run תירשם אליו.

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

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

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

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

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

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

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

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

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

    1. לוחצים על Variables & Secrets (משתנים וסודות).
    2. לוחצים על ‎+ Add variable לכל משתנה סביבה:
    שם המשתנה ערך לדוגמה
    GCS_BUCKET workday-audit-logs
    WD_USER audit_gcs_user
    WD_PASS your-workday-password
    WD_URL https://wd-servicesN.workday.com/ccx/service/customreport2/<tenant>/<user>/Audit_Trail_BP_CSV?format=csv
  10. בכרטיסייה Variables & Secrets, גוללים למטה אל Requests:

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

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

    • בוחרים באפשרות ברירת מחדל (מומלץ).
  13. בקטע שינוי קנה מידה של העריכה:

    • מספר המינימום של מופעים: מזינים 0.
    • מספר מקסימלי של מופעים: מזינים 100 (או משנים בהתאם לעומס הצפוי).
  14. לוחצים על יצירה.

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

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

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

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

    • הקובץ הראשון: main.py:
    import functions_framework
    from google.cloud import storage
    import os
    import urllib3
    from datetime import datetime, timezone
    import base64
    import gzip
    import io
    import uuid
    
    # Initialize HTTP client
    http = urllib3.PoolManager(
        timeout=urllib3.Timeout(connect=5.0, read=30.0),
        retries=False,
    )
    
    # Initialize Storage client
    storage_client = storage.Client()
    
    @functions_framework.cloud_event
    def main(cloud_event):
        """
        Cloud Run function triggered by Pub/Sub to fetch logs from Workday API and write to GCS.
    
        Args:
            cloud_event: CloudEvent object containing Pub/Sub message
        """
    
        # Get environment variables
        bucket_name = os.environ.get('GCS_BUCKET')
        wd_user = os.environ.get('WD_USER')
        wd_pass = os.environ.get('WD_PASS')
        wd_url = os.environ.get('WD_URL')
    
        if not all([bucket_name, wd_user, wd_pass, wd_url]):
            print('Error: Missing required environment variables')
            return
    
        try:
            # Get GCS bucket
            bucket = storage_client.bucket(bucket_name)
    
            print(f'Fetching Workday audit report from {wd_url}')
    
            # Fetch report from Workday
            data = fetch_report(wd_url, wd_user, wd_pass)
    
            # Upload to GCS
            timestamp = datetime.now(timezone.utc)
            upload(bucket, data, timestamp)
    
            print(f'Successfully uploaded Workday audit report ({len(data)} bytes raw)')
    
        except Exception as e:
            print(f'Error processing logs: {str(e)}')
            raise
    
    def fetch_report(url, username, password):
        """Fetch report from Workday using Basic Auth."""
        credentials = f"{username}:{password}"
        credentials_bytes = credentials.encode('utf-8')
        auth_header = b"Basic " + base64.b64encode(credentials_bytes)
    
        req_headers = {
            "Authorization": auth_header.decode('utf-8')
        }
    
        response = http.request('GET', url, headers=req_headers)
    
        if response.status != 200:
            raise Exception(f"Failed to fetch report: HTTP {response.status}")
    
        return response.data
    
    def upload(bucket, payload, ts):
        """Upload gzipped CSV to GCS."""
        key = f"{ts:%Y/%m/%d}/workday-audit-{uuid.uuid4()}.csv.gz"
    
        buf = io.BytesIO()
        with gzip.GzipFile(fileobj=buf, mode='w') as gz:
            gz.write(payload)
        buf.seek(0)
    
        blob = bucket.blob(key)
        blob.upload_from_file(buf, content_type='application/gzip')
    
        print(f'Uploaded to gs://{bucket.name}/{key}')
    
    • הקובץ השני: requirements.txt:
    functions-framework==3.*
    google-cloud-storage==2.*
    urllib3>=2.0.0
    
  3. לוחצים על Deploy כדי לשמור ולפרוס את הפונקציה.

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

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

‫Cloud Scheduler מפרסם הודעות בנושא Pub/Sub במרווחי זמן קבועים, וכך מפעיל את הפונקציה של Cloud Run.

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

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

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

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

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

בדיקת המשימה המתוזמנת

  1. במסוף Cloud Scheduler, מוצאים את המשימה.
  2. כדי להפעיל את הטריגר באופן ידני, לוחצים על הפעלה מאולצת.
  3. מחכים כמה שניות ועוברים אל Cloud Run > Services > workday-audit-collector > Logs.
  4. מוודאים שהפונקציה בוצעה בהצלחה.
  5. בודקים את דלי ה-GCS כדי לוודא שהיומנים נכתבו.

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

‫Google SecOps משתמש בחשבון שירות ייחודי כדי לקרוא נתונים מהקטגוריה של GCS. צריך להעניק לחשבון השירות הזה גישה לדלי.

קבלת כתובת האימייל בחשבון השירות

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

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

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

לחשבון השירות של Google SecOps צריך להיות התפקיד צפייה באובייקט אחסון בקטגוריה של GCS.

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

הגדרה של פיד ב-Google SecOps להטמעה של יומני ביקורת של Workday

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

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

      gs://workday-audit-logs/
      
      • מחליפים את workday-audit-logs בשם הקטגוריה שלכם ב-GCS.
    • אפשרות למחיקת המקור: בוחרים את אפשרות המחיקה לפי ההעדפה שלכם:

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

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

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

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

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

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
חשבון metadata.event_type אם השדה 'חשבון' לא ריק, השדה 'metadata.event_type' מוגדר לערך 'USER_RESOURCE_UPDATE_CONTENT'.
חשבון principal.user.primaryId מזהה המשתמש נשלף מהשדה "Account" באמצעות תבנית grok וממופה ל-principal.user.primaryId.
חשבון principal.user.primaryName השם המוצג של המשתמש מחולץ מהשדה 'חשבון' באמצעות תבנית grok וממופה ל-'principal.user.primaryName'.
ActivityCategory metadata.event_type אם הערך בשדה ActivityCategory הוא READ, הערך בשדה metadata.event_type הוא RESOURCE_READ. אם הערך הוא WRITE, הוא מוגדר כ-RESOURCE_WRITTEN.
ActivityCategory metadata.product_event_type מופה ישירות מהשדה ActivityCategory.
AffectedGroups target.user.group_identifiers מופה ישירות מהשדה AffectedGroups.
אזור target.resource.attribute.labels.area.value ממופה ישירות מהשדה "אזור".
AuthType extensions.auth.auth_details ממופה ישירות מהשדה AuthType.
AuthType extensions.auth.type המיפוי מתבצע מהשדה AuthType לסוגי אימות שונים שמוגדרים ב-UDM על סמך ערכים ספציפיים.
CFIPdeConexion src.domain.name אם השדה CFIPdeConexion לא מכיל כתובת IP תקינה, הוא ממופה ל-src.domain.name.
CFIPdeConexion target.ip אם השדה CFIPdeConexion הוא כתובת IP תקינה, הוא ממופה אל target.ip.
ChangedRelationship metadata.description ממופה ישירות מהשדה ChangedRelationship.
ClassOfInstance target.resource.attribute.labels.class_instance.value מופה ישירות מהשדה ClassOfInstance.
column18 about.labels.utub.value ממופה ישירות מהשדה column18.
CreatedBy principal.user.userid מזהה המשתמש מחולץ מהשדה CreatedBy באמצעות תבנית grok וממופה ל-principal.user.userid.
CreatedBy principal.user.user_display_name השם המוצג של המשתמש נשלף מהשדה CreatedBy באמצעות תבנית Grok וממופה ל-principal.user.user_display_name.
דומיין about.domain.name מופה ישירות מהשדה 'דומיין'.
EffectiveDate @timestamp הערך מנותח ל-‎@timestamp אחרי המרה לפורמט yyyy-MM-dd HH:mm:ss.SSSZ.
EntryMoment @timestamp מנותח ל-"@timestamp" אחרי המרה לפורמט "ISO8601".
EventType security_result.description ממופה ישירות מהשדה EventType.
טופס target.resource.name ממופה ישירות מהשדה "טופס".
InstancesAdded about.resource.attribute.labels.instances_added.value מופה ישירות מהשדה InstancesAdded.
InstancesAdded target.user.attribute.roles.instances_added.name ממופה ישירות מהשדה InstancesAdded.
InstancesRemoved about.resource.attribute.labels.instances_removed.value ממופה ישירות מהשדה InstancesRemoved.
InstancesRemoved target.user.attribute.roles.instances_removed.name ממופה ישירות מהשדה InstancesRemoved.
IntegrationEvent target.resource.attribute.labels.integration_event.value ממופה ישירות מהשדה IntegrationEvent.
IntegrationStatus security_result.action_details מופה ישירות מהשדה IntegrationStatus.
IntegrationSystem target.resource.name מופה ישירות מהשדה IntegrationSystem.
קניין רוחני (IP) src.domain.name אם השדה 'IP' לא מכיל כתובת IP תקינה, הוא ממופה ל-'src.domain.name'.
קניין רוחני (IP) src.ip אם השדה 'IP' הוא כתובת IP תקינה, הוא ממופה ל-'src.ip'.
IsDeviceManaged additional.fields.additional1.value.string_value אם הערך בשדה IsDeviceManaged הוא N, הערך שמוגדר הוא Successful. אחרת, הערך הוא 'התרחשה כניסה שנכשלה'.
IsDeviceManaged additional.fields.additional2.value.string_value אם הערך בשדה IsDeviceManaged הוא N, הערך שמוגדר הוא Successful. אחרת, הערך הוא Invalid Credentials (פרטי כניסה לא תקינים).
IsDeviceManaged additional.fields.additional3.value.string_value אם הערך בשדה IsDeviceManaged הוא N, הערך מוגדר כ-Successful. אחרת, הערך הוא Account Locked (החשבון נעול).
IsDeviceManaged security_result.action_details ממופה ישירות מהשדה IsDeviceManaged.
OutputFiles about.file.full_path ממופה ישירות מהשדה OutputFiles.
אדם principal.user.primaryId אם השדה Person מתחיל ב-INT, מזהה המשתמש מחולץ באמצעות תבנית grok וממופה ל-principal.user.primaryId.
אדם principal.user.primaryName אם השדה 'Person' מתחיל ב-'INT', שם התצוגה של המשתמש מחולץ באמצעות תבנית grok וממופה ל-'principal.user.primaryName'.
אדם principal.user.user_display_name אם השדה 'Person' לא מתחיל ב-'INT', הוא ממופה ישירות ל-'principal.user.user_display_name'.
אדם metadata.event_type אם השדה 'Person' לא ריק, השדה 'metadata.event_type' מוגדר כ-'USER_RESOURCE_UPDATE_CONTENT'.
ProcessedTransaction target.resource.attribute.creation_time הערך מנותח ל-target.resource.attribute.creation_time אחרי המרה לפורמט dd/MM/yyyy HH:mm:ss,SSS (ZZZ),‏ dd/MM/yyyy, HH:mm:ss,SSS (ZZZ) או MM/dd/yyyy, HH:mm:ss.SSS A ZZZ.
ProgramBy principal.user.userid מופה ישירות מהשדה ProgramBy.
RecurrenceEndDate principal.resource.attribute.last_update_time הערך מנותח ל-principal.resource.attribute.last_update_time אחרי המרה לפורמט yyyy-MM-dd.
RecurrenceStartDate principal.resource.attribute.creation_time מנותח ל-"principal.resource.attribute.creation_time" אחרי המרה לפורמט "yyyy-MM-dd".
RequestName metadata.description מופה ישירות מהשדה RequestName.
ResponseMessage security_result.summary מופה ישירות מהשדה ResponseMessage.
RestrictedToEnvironment security_result.about.hostname ממופה ישירות מהשדה "RestrictedToEnvironment".
RevokedSecurity security_result.outcomes.outcomes.value מופה ישירות מהשדה RevokedSecurity.
RunFrequency principal.resource.attribute.labels.run_frequency.value ממופה ישירות מהשדה RunFrequency.
ScheduledProcess principal.resource.name מופה ישירות מהשדה ScheduledProcess.
SecuredTaskExecuted target.resource.name מופה ישירות מהשדה SecuredTaskExecuted.
SecureTaskExecuted metadata.event_type אם השדה SecureTaskExecuted מכיל את הערך Create, השדה metadata.event_type מוגדר לערך USER_RESOURCE_CREATION.
SecureTaskExecuted target.resource.name ממופה ישירות מהשדה "SecureTaskExecuted".
SentTime @timestamp הערך מנותח ל-‎"@timestamp"‎ אחרי המרה לפורמט ISO8601.
SessionId network.session_id מופה ישירות מהשדה SessionId.
ShareBy target.user.userid מופה ישירות מהשדה ShareBy.
SignOffTime additional.fields.additional4.value.string_value ערך השדה AuthFailMessage ממוקם במערך additional.fields עם המפתח Enterprise Interface Builder.
SignOffTime metadata.description ממופה ישירות מהשדה AuthFailMessage.
SignOffTime metadata.event_type אם השדה SignOffTime ריק, השדה metadata.event_type מוגדר כ-USER_LOGIN. אחרת, הערך שמוגדר הוא USER_LOGOUT.
SignOffTime principal.user.attribute.last_update_time הערך מנותח ל-principal.user.attribute.last_update_time אחרי המרה לפורמט ISO8601.
SignOnIp src.domain.name אם השדה SignOnIp לא מכיל כתובת IP תקינה, הוא ממופה ל-src.domain.name.
SignOnIp src.ip אם השדה SignOnIp הוא כתובת IP תקינה, הוא ממופה ל-src.ip.
סטטוס metadata.product_event_type מופה ישירות מהשדה 'סטטוס'.
SystemAccount principal.user.email_addresses כתובת האימייל נשלפת מהשדה SystemAccount באמצעות תבנית grok וממופה ל-principal.user.email_addresses.
SystemAccount principal.user.primaryId מזהה המשתמש מחולץ מהשדה SystemAccount באמצעות תבנית grok וממופה אל principal.user.primaryId.
SystemAccount principal.user.primaryName השם המוצג של המשתמש מחולץ מהשדה SystemAccount באמצעות תבנית grok וממופה ל-principal.user.primaryName.
SystemAccount src.user.userid מזהה המשתמש המשני נשלף מהשדה SystemAccount באמצעות תבנית grok וממופה ל-src.user.userid.
SystemAccount src.user.user_display_name השם המוצג המשני של המשתמש מחולץ מהשדה SystemAccount באמצעות תבנית grok וממופה אל src.user.user_display_name.
SystemAccount target.user.userid מזהה המשתמש של היעד מחולץ מהשדה SystemAccount באמצעות תבנית grok וממופה אל target.user.userid.
יעד target.user.user_display_name מופה ישירות מהשדה 'יעד'.
תבנית about.resource.name מופה ישירות מהשדה 'תבנית'.
דייר (tenant) target.asset.hostname מופה ישירות מהשדה Tenant (דייר).
TlsVersion network.tls.version ממופה ישירות מהשדה "TlsVersion".
עסקה security_result.action_details מופה ישירות מהשדה 'עסקה'.
TransactionType security_result.summary מופה ישירות מהשדה TransactionType.
TypeForm target.resource.resource_subtype מופה ישירות מהשדה TypeForm.
UserAgent network.http.parsed_user_agent הניתוח בוצע מהשדה UserAgent באמצעות המסנן useragent.
UserAgent network.http.user_agent מופה ישירות מהשדה UserAgent.
WorkdayAccount target.user.user_display_name השם המוצג של המשתמש מחולץ מהשדה WorkdayAccount באמצעות תבנית grok וממופה אל target.user.user_display_name.
WorkdayAccount target.user.userid מזהה המשתמש מחולץ מהשדה WorkdayAccount באמצעות תבנית grok וממופה אל target.user.userid.
additional.fields.additional1.key ההגדרה היא FailedSignOn.
additional.fields.additional2.key צריך להגדיר את הערך "InvalidCredentials".
additional.fields.additional3.key הערך שמוגדר הוא AccountLocked.
additional.fields.additional4.key מגדירים את האפשרות "Enterprise Interface Builder".
metadata.event_type מוגדר בהתחלה כ-"GENERIC_EVENT" ואז מתעדכן על סמך הלוגיקה שכוללת שדות אחרים.
metadata.event_type הערך שמוגדר הוא USER_CHANGE_PERMISSIONS לסוגים ספציפיים של אירועים.
metadata.event_type מוגדר כ-"RESOURCE_WRITTEN" לסוגי אירועים ספציפיים.
metadata.log_type הערך מוטמע בקוד כ-WORKDAY_AUDIT.
metadata.product_name הערך מוטמע בקוד כ-"Enterprise Interface Builder".
metadata.vendor_name הערך מוטמע בקוד כ-Workday.
principal.asset.category מגדירים את הערך Phone (טלפון) אם השדה DeviceType (סוג המכשיר) הוא Phone (טלפון).
principal.resource.resource_type הערך TASK מקודד באופן קשיח אם השדה ScheduledProcess לא ריק.
security_result.action הערך צריך להיות ALLOW או FAIL בהתאם לערכים בשדות FailedSignOn,‏ IsDeviceManaged,‏ InvalidCredentials ו-AccountLocked.
security_result.summary ההגדרה היא "הצליח" או הודעות שגיאה ספציפיות שמבוססות על הערכים של השדות FailedSignOn,‏ IsDeviceManaged,‏ InvalidCredentials ו-AccountLocked.
target.resource.resource_type מוגדר כ-TASK (משימה) עבור סוגים ספציפיים של אירועים.
target.resource.resource_type מוגדר כ-DATASET אם השדה TypeForm לא ריק.
הודעה principal.user.email_addresses הפונקציה מחלצת את כתובת האימייל מהשדה message באמצעות תבנית grok וממזגת אותה עם principal.user.email_addresses אם נמצאה התאמה לתבנית ספציפית.
הודעה src.user.userid השדה נמחק אם השדה "event.idm.read_only_udm.principal.user.userid" תואם ל-"user_target" שחולץ מהשדה "message".
הודעה src.user.user_display_name מנקה את השדה אם השדה event.idm.read_only_udm.principal.user.userid תואם לערך user_target שחולץ מהשדה message.
הודעה target.user.userid מחלץ את מזהה המשתמש מהשדה "message" באמצעות תבנית grok וממפה אותו ל-"target.user.userid" אם יש התאמה לתבנית ספציפית.
column11 SecurityGroupModified מופה מיומן השינויים
SecurityGroupModified security_result.about.group.group_display_name מופה מיומן השינויים
ChangedRelationship target.user.attribute.roles.name מופה מיומן השינויים

יומן שינויים

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

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