מדריך למשתמש ב-CLI של Google SecOps

נתמך ב:

‫Google Security Operations SDK מספק ממשק שורת פקודה (CLI) מקיף שמאפשר אינטראקציה קלה עם מוצרי Google SecOps מהטרמינל. ממשק secops CLI החדש מחליף את ממשק chronicle_cli הקודם, ומציע פונקציונליות משופרת וחוויית משתמש טובה יותר.

סקירה כללית

ממשק ה-CLI‏ secops מאפשר גישה אל:

  • חיפוש וניתוח של אירועים ב-UDM
  • ניהול פידים, מעבירים ומנתחים
  • יצירה וניהול של כללי זיהוי
  • טיפול בהתראות ובבקשות תמיכה
  • ניהול רשימות הפניות וטבלאות הנתונים
  • ייצוא נתונים ל-BigQuery ול-Google Cloud Storage
  • שאילתות ל-Gemini AI לקבלת תובנות אבטחה
  • ועוד הרבה דברים

הפקודות של Google SecOps CLI משתמשות בתחביר הבא:

$ secops COMMAND [SUBCOMMAND] [OPTIONS]

לדוגמה, כדי לחפש אירועים:

$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24

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

לפני שמתקינים את Google SecOps CLI, צריך לוודא שיש לכם:

  • ‫Python 3.8 ואילך מותקן בסביבה. מידע נוסף זמין במאמר בנושא התקנת Python.
  • מכונת Google SecOps עם הרשאות גישה מתאימות.
  • פרטי אימות (חשבון שירות או Application Default Credentials).

התקנה

מתקינים את SecOps SDK שכולל את ה-CLI:

pip install secops

מאמתים את ההתקנה:

$ secops --help

אימות

ממשק ה-CLI תומך בכמה שיטות אימות:

# Set up ADC with gcloud
gcloud auth application-default login

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

ממקמים את קובץ ה-JSON של חשבון השירות במיקום מאובטח ומפנים אליו בפקודות:

$ secops search --service-account "/path/to/service-account.json" --customer-id "your-instance-id" --project-id "your-project-id" --query "metadata.event_type = \"USER_LOGIN\""

הגדרות אישיות

שמירת הגדרות נפוצות כדי להימנע מחזרה על פקודות:

שמירת ההגדרה

# Save instance and authentication settings
$ secops config set --customer-id "your-instance-id" --project-id "your-project-id" --region "us"

# Save service account path (optional)
$ secops config set --service-account "/path/to/service-account.json" --customer-id "your-instance-id" --project-id "your-project-id"

# Set default time window
$ secops config set --time-window 48

צפייה בהגדרה

$ secops config view

ניקוי ההגדרות

$ secops config clear

אזורים

ממשק ה-CLI תומך בכל האזורים של Google SecOps. אפשר להגדיר את האזור באמצעות:

  • הדגל --region עם כל פקודה
  • קובץ התצורה באמצעות secops config set --region REGION

האזורים הנתמכים כוללים:

  • US (ברירת מחדל)
  • EUROPE
  • ASIA-SOUTHEAST1
  • ASIA-SOUTH1
  • AUSTRALIA-SOUTHEAST1
  • EUROPE-WEST2, EUROPE-WEST3, EUROPE-WEST6, EUROPE-WEST9, EUROPE-WEST12
  • ועוד

פקודות ליבה

חיפוש אירועים

חיפוש אירועי UDM באמצעות תחביר של שאילתות:

# Search with UDM query
$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24 --max-events 100

# Search using natural language
$ secops search --nl-query "show me failed login attempts" --time-window 24

# Export results as CSV
$ secops search --query "metadata.event_type = \"USER_LOGIN\" AND security_result.action = \"BLOCK\"" \
    --fields "metadata.event_timestamp,principal.user.userid,principal.ip" \
    --time-window 24 --csv

פרטי הישות

לקבל מידע מפורט על כתובות IP, דומיינים או גיבובים של קבצים:

$ secops entity --value "8.8.8.8" --time-window 24
$ secops entity --value "example.com" --time-window 24
$ secops entity --value "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" --time-window 24

נתונים סטטיסטיים

ביצוע ניתוחים סטטיסטיים של הנתונים:

$ secops stats --query "metadata.event_type = \"NETWORK_CONNECTION\"
match:
  target.hostname
outcome:
  \$count = count(metadata.id)
order:
  \$count desc" --time-window 24

ניהול פידים

ניהול פידים של העברת נתונים ב-Google SecOps:

הצגת רשימה של פידים

$ secops feed list

יצירת פיד

# Create an HTTP feed
$ secops feed create \
    --display-name "My HTTP Feed" \
    --details '{"logType":"projects/your-project-id/locations/us/instances/your-instance-id/logTypes/WINEVTLOG","feedSourceType":"HTTP","httpSettings":{"uri":"https://example.com/feed","sourceType":"FILES"}}'

עדכון הפיד

$ secops feed update --id "feed-123" --display-name "Updated Feed Name"

הפעלה/השבתה של הפיד

$ secops feed enable --id "feed-123"
$ secops feed disable --id "feed-123"

מחיקת פיד

$ secops feed delete --id "feed-123"

ניהול מנתחים

מנתחי נתונים מעבדים ומנרמלים נתוני יומן גולמיים לפורמט UDM:

הצגת רשימה של מנתחי נתונים

$ secops parser list
$ secops parser list --log-type "WINDOWS"

קבלת פרטים על כלי הניתוח

$ secops parser get --log-type "WINDOWS" --id "pa_12345"

יצירת כלי ניתוח

# Create from file
$ secops parser create --log-type "CUSTOM_LOG" --parser-code-file "/path/to/parser.conf"

# Create from string
$ secops parser create --log-type "CUSTOM_LOG" --parser-code "filter { mutate { add_field => { \"test\" => \"value\" } } }"

מנתח בדיקה

בודקים מנתח מול יומני דוגמה לפני הפריסה:

# Test with inline logs
$ secops parser run \
    --log-type OKTA \
    --parser-code-file "./parser.conf" \
    --log '{"message": "Test log 1"}' \
    --log '{"message": "Test log 2"}'

# Test with logs from file
$ secops parser run \
    --log-type WINDOWS \
    --parser-code-file "./parser.conf" \
    --logs-file "./sample_logs.txt"

הפעלה/השבתה של מנתח

$ secops parser activate --log-type "WINDOWS" --id "pa_12345"
$ secops parser deactivate --log-type "WINDOWS" --id "pa_12345"

מחיקת כלי הניתוח

$ secops parser delete --log-type "WINDOWS" --id "pa_12345"

ניהול תוספים של מנתח

תוספי ניתוח מרחיבים את מנתחי הנתונים הקיימים בלי להחליף אותם:

הצגת רשימה של תוספים

$ secops parser-extension list --log-type OKTA

יצירת תוסף

$ secops parser-extension create --log-type OKTA \
    --log /path/to/sample.log \
    --parser-config-file /path/to/parser-config.conf

הפעלת התוסף

$ secops parser-extension activate --log-type OKTA --id "1234567890"

ניהול של שרתי דואר להעברה

העברת נתונים משמשת להעברת יומנים עם הגדרות ספציפיות:

יצירת כתובת להעברת דואר

# Basic forwarder
$ secops forwarder create --display-name "my-custom-forwarder"

# With metadata and settings
$ secops forwarder create --display-name "prod-forwarder" \
    --metadata '{"environment":"prod","team":"security"}' \
    --upload-compression true \
    --http-settings '{"port":80,"host":"example.com"}'

הצגת רשימה של כתובות להעברה

$ secops forwarder list --page-size 100

קבלת מעביר

$ secops forwarder get --id "1234567890"

עדכון כלי ההעברה

$ secops forwarder update --id "1234567890" --display-name "updated-name"

מחיקת כתובת להעברת דואר

$ secops forwarder delete --id "1234567890"

תהליכי עבודה לגישה לנתונים ב-BigQuery

‫Google Security Operations תומך בגישה בשירות עצמי לנתונים של Google Security Operations (גם SIEM וגם SOAR) ב-BigQuery. אפשר להשתמש בממשק של Google Security Operations כדי להעניק תפקידים של ניהול זהויות והרשאות גישה (IAM) שנותנים את ההרשאות הבאות לכתובת אימייל של משתמש:

  • roles/bigquery.dataViewer
  • roles/bigquery.jobUser
  • roles/storage.objectViewer

כתובת האימייל צריכה להיות כתובת אימייל של משתמש ב-Google Accounts and ID Administration ‏ (GAIA) של לקוח Google SecOps.

מידע נוסף על התפקידים האלה מופיע במאמר ייצוא נתוני טבלה.

פקודות

פקודה bigquery

הפקודה bigquery מקבלת את הארגומנט provide_access.

תחביר לשימוש:

$ chronicle_cli bigquery ARGUMENT [OPTIONS]

ארגומנטים

ארגומנט אחד (provide_access)

מוצגת בקשה להזין כתובת אימייל של משתמש. כתובת האימייל צריכה להיות כתובת אימייל של משתמש ב-Google Accounts and ID Administration (GAIA) שהוא לקוח של Google SecOps Security. המשתמש יקבל את תפקידי ה-IAM הנדרשים כדי לבצע את הפעולות הבאות:

  • קריאת נתונים ומטא-נתונים מטבלאות BigQuery‏ (roles/bigquery.dataViewer)
  • הרצת שאילתות על נתוני טבלה ב-BigQuery‏ (roles/bigquery.jobUser)
  • קריאת נתונים בקטגוריות של Cloud Storage‏(roles/storage.objectViewer)
דוגמאות לשימוש
$ chronicle_cli bigquery provide_access
$ Enter email: xyz@gmail.com
תשובה על הצלחה
Providing BigQuery access...
Access provided to email: xyz@gmail.com
Providing BigQuery access...
Error while providing access:
Response code: 400

אפשרויות

עזרה (-h / ‎--help)

אפשר להשתמש באפשרות -h או --help כדי לראות את השימוש או התיאור של כל פקודה או אפשרות.

פתרון בעיות

בקטע הזה מוצג הפלט שמופיע במסוף בהתאם לסוגים שונים של קודי תגובה שמתקבלים מתגובת ה-API.

provide_access קודי תגובה של ארגומנטים

קוד תגובה פלט של המסוף
400 כתובת האימייל לא קיימת.
כל קוד תגובה אחר שגיאה באחזור הפיד. קוד תגובה: {status code} שגיאה: {error message}

הטמעת נתונים של יומנים

הטמעת יומנים ב-Google SecOps:

הטמעת יומנים גולמיים

# From file
$ secops log ingest --type "OKTA" --file "/path/to/okta_logs.json"

# With labels
$ secops log ingest --type "WINDOWS" --file "/path/to/logs.xml" \
    --labels "environment=production,team=security"

# Inline message
$ secops log ingest --type "WINDOWS" --message "{\"event\": \"data\"}"

הטמעת אירועים ב-UDM

$ secops log ingest-udm --file "/path/to/udm_event.json"

הצגת רשימה של סוגי יומנים

$ secops log types
$ secops log types --search "windows"

יצירת מיפוי UDM

$ secops log generate-udm-mapping \
    --log-format "JSON" \
    --log '{"id":"123","user":"test_user","source_ip":"192.168.1.10"}'

ניהול כללים

ניהול כללי הזיהוי:

רשימת הכללים

$ secops rule list --page-size 50

כלל חדש

$ secops rule create --file "/path/to/rule.yaral"

עדכון הכלל

$ secops rule update --id "ru_12345" --file "/path/to/updated_rule.yaral"

הפעלה/השבתה של כלל

$ secops rule enable --id "ru_12345" --enabled true
$ secops rule enable --id "ru_12345" --enabled false

בדיקת הכלל

בדיקת כלל מול נתונים היסטוריים:

# Test for last 24 hours
$ secops rule test --file "/path/to/rule.yaral" --time-window 24

# Test with specific time range
$ secops rule test --file "/path/to/rule.yaral" \
    --start-time "2023-07-01T00:00:00Z" \
    --end-time "2023-07-02T00:00:00Z" \
    --max-results 1000

אימות הכלל

$ secops rule validate --file "/path/to/rule.yaral"

מחק את הכלל

$ secops rule delete --id "ru_12345"

ניהול התראות

קבלת התראות וניהול שלהן:

$ secops alert --time-window 24 --max-alerts 50
$ secops alert --snapshot-query "feedback_summary.status != \"CLOSED\"" --time-window 24

ניהול בקשות תמיכה

אחזור פרטי בקשת התמיכה:

$ secops case --ids "case-123,case-456"

טבלאות נתונים

טבלאות נתונים הן אוספים של נתונים מובְנים שמשמשים בכללי זיהוי:

יצירת טבלת נתונים

$ secops data-table create \
    --name "suspicious_ips" \
    --description "Known suspicious IP addresses" \
    --header '{"ip_address":"CIDR","description":"STRING","severity":"STRING"}'

הוספת שורות

$ secops data-table add-rows \
    --name "suspicious_ips" \
    --rows '[["192.168.1.100","Scanning activity","Medium"]]'

הצגת רשימה של שורות

$ secops data-table list-rows --name "suspicious_ips"

מחיקת טבלת נתונים

$ secops data-table delete --name "suspicious_ips"

רשימות של קובצי עזר

רשימות הפניה הן רשימות פשוטות של ערכים לכללי זיהוי:

יצירת רשימת מקורות מידע

$ secops reference-list create \
    --name "admin_accounts" \
    --description "Administrative accounts" \
    --entries "admin,administrator,root,superuser"

עדכון רשימת ההפניות

$ secops reference-list update \
    --name "admin_accounts" \
    --entries "admin,administrator,root,superuser,sysadmin"

הצגת רשימת סימוכין

$ secops reference-list list

ייצוא נתונים

ייצוא נתונים לניתוח:

יצירת ייצוא

# Export specific log type
$ secops export create \
    --gcs-bucket "projects/my-project/buckets/my-bucket" \
    --log-type "WINDOWS" \
    --time-window 24

# Export all logs
$ secops export create \
    --gcs-bucket "projects/my-project/buckets/my-bucket" \
    --all-logs \
    --time-window 168

בדיקת סטטוס הייצוא

$ secops export status --id "export-123"

ביטול הייצוא

$ secops export cancel --id "export-123"

רשימת סוגי היומנים שזמינים לייצוא

$ secops export log-types --time-window 24

שילוב של Gemini AI

שאילתות ל-Gemini AI לקבלת תובנות אבטחה:

# Ask about security concepts
$ secops gemini --query "What is Windows event ID 4625?"

# Generate detection rules
$ secops gemini --query "Write a rule to detect PowerShell downloading files"

# Get vulnerability information
$ secops gemini --query "Tell me about CVE-2021-44228"

כדי להשתמש ב-Gemini:

$ secops gemini --opt-in

ניהול מרכז השליטה

ניהול לוחות בקרה מקוריים:

יצירת לוח בקרה

$ secops dashboard create \
    --display-name "Security Overview" \
    --description "Security monitoring dashboard" \
    --access-type PRIVATE

הצגת רשימה של מרכזי בקרה

$ secops dashboard list --page-size 10

עדכון לוח הבקרה

$ secops dashboard update --id dashboard-id \
    --display-name "Updated Security Dashboard" \
    --description "Updated security monitoring dashboard"

ייצוא/ייבוא של מרכז בקרה

# Export
$ secops dashboard export --dashboard-names 'projects/your-project-id/locations/us/instances/your-instance-id/nativeDashboard/xxxxxxx'

# Import
$ secops dashboard import --dashboard-data-file dashboard_data.json

הוספת תרשים למרכז הבקרה

$ secops dashboard add-chart --dashboard-id dashboard-id \
    --display-name "DNS Query Chart" \
    --description "Shows DNS query patterns" \
    --query-file dns_query.txt \
    --chart_layout '{"startX": 0, "spanX": 12, "startY": 0, "spanY": 8}'

מחיקת לוח הבקרה

$ secops dashboard delete --id dashboard-id

דוגמאות מתקדמות

השלמת תהליך העבודה של הניתוח

אחזור, בדיקה ופריסה של מנתח:

# List parsers
$ secops parser list --log-type "OKTA" > okta_parsers.json

# Get parser details
PARSER_ID=$(cat okta_parsers.json | jq -r '.[0].name' | awk -F'/' '{print $NF}')
$ secops parser get --log-type "OKTA" --id "$PARSER_ID" > parser_details.json

# Extract parser code
cat parser_details.json | jq -r '.cbn' | base64 -d > okta_parser.conf

# Test parser
$ secops parser run \
    --log-type "OKTA" \
    --parser-code-file "okta_parser.conf" \
    --logs-file "sample_logs.txt" > parser_result.json

# Activate if successful
$ secops parser activate --log-type "OKTA" --id "$PARSER_ID"

תהליך העבודה של חיפוש וייצוא

חיפוש אירועים וייצוא התוצאות:

# Search for failed logins
$ secops search \
    --query "metadata.event_type = \"USER_LOGIN\" AND security_result.action = \"BLOCK\"" \
    --fields "metadata.event_timestamp,principal.user.userid,principal.ip" \
    --time-window 24 \
    --csv > failed_logins.csv

# Get entity details for suspicious IPs
cat failed_logins.csv | awk -F',' '{print $3}' | sort -u | while read ip; do
    secops entity --value "$ip" --time-window 72
done

בדיקה ופריסה של כללים

יצירה, בדיקה ופריסה של כלל זיהוי:

# Create rule file
cat > suspicious_activity.yaral << 'EOF'
rule suspicious_powershell {
    meta:
        description = "Detects suspicious PowerShell activity"
        severity = "Medium"
    events:
        $e.metadata.event_type = "PROCESS_LAUNCH"
        $e.principal.process.file.full_path = /powershell\.exe/i nocase
        $e.principal.process.command_line = /download|invoke-expression|hidden/i nocase
    condition:
        $e
}
EOF

# Validate rule
$ secops rule validate --file suspicious_activity.yaral

# Test against historical data
$ secops rule test --file suspicious_activity.yaral --time-window 168

# Create and enable if tests pass
$ secops rule create --file suspicious_activity.yaral
$ secops rule enable --id "ru_generated_id" --enabled true

פתרון בעיות

בעיות נפוצות

שגיאות אימות

אם נתקלים בשגיאות אימות:

  1. אימות התוקף של פרטי הכניסה
  2. בודקים שלחשבון השירות יש את ההרשאות הנדרשות
  3. מוודאים ש-ADC מוגדר בצורה נכונה: gcloud auth application-default login

שגיאות אזור

אם מופיעות שגיאות שקשורות לאזור:

  1. אימות האזור הנתמך
  2. בדיקה שהמופע נמצא באזור שצוין
  3. שימוש בדגל --region או הגדרה שלו בהגדרות

הגבלת הקצב של יצירת הבקשות

לבעיות שקשורות להגבלת קצב של יצירת בקשות:

  1. הפחתת התדירות של קריאות ל-API
  2. שימוש במספור דפים לקבוצות גדולות של תוצאות
  3. הטמעה של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) לביצוע ניסיונות חוזרים

קבלת עזרה

כדי לראות עזרה לגבי פקודה מסוימת:

$ secops --help
$ secops search --help
$ secops rule create --help

העברה מ-chronicle_cli

אם אתם עוברים מ-chronicle_cli מדור קודם, הנה מיפוי של פקודות נפוצות:

chronicle_cli SecOps
chronicle_cli feeds create secops feed create
chronicle_cli feeds list secops feed list
chronicle_cli feeds update secops feed update
chronicle_cli feeds delete secops feed delete
chronicle_cli parsers list secops parser list
chronicle_cli parsers create secops parser create
chronicle_cli parsers activate secops parser activate
chronicle_cli forwarders create secops forwarder create
chronicle_cli forwarders list secops forwarder list

ממשק ה-CLI החדש secops מציע הרבה תכונות נוספות שלא זמינות ב-chronicle_cli, כולל:

  • חיפוש בשפה טבעית
  • שילוב של Gemini AI
  • ניהול לוחות בקרה
  • בדיקה ואימות של כללים
  • טבלאות נתונים ורשימות הפניה
  • ניהול בקשות התמיכה
  • ועוד הרבה דברים

משאבים נוספים