מאמרי עזרה על 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 תומך בכמה שיטות אימות:
שימוש ב-Application Default Credentials (מומלץ)
# 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(ברירת מחדל)EUROPEASIA-SOUTHEAST1ASIA-SOUTH1AUSTRALIA-SOUTHEAST1EUROPE-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"
ניהול של תוכנת Forwarder
העברת נתונים משמשת להעברת יומנים עם הגדרות ספציפיות:
יצירת כתובת להעברת דואר
# 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
קבלת תוכנת Forwarder
$ 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. אתם יכולים להשתמש ב-CLI של Google Security Operations כדי להעניק תפקידים בניהול זהויות והרשאות גישה (IAM) שנותנים את ההרשאות הבאות לכתובת אימייל של משתמש:
roles/bigquery.dataViewerroles/bigquery.jobUserroles/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פתרון בעיות
בעיות נפוצות
שגיאות אימות
אם נתקלים בשגיאות אימות:
- אימות פרטי הכניסה
- בודקים שלחשבון השירות יש את ההרשאות הנדרשות
- מוודאים ש-ADC מוגדר בצורה נכונה:
gcloud auth application-default login
שגיאות באזור
אם מופיעות שגיאות שקשורות לאזור:
- אימות האזור הנתמך
- בדיקה שהמופע נמצא באזור שצוין
- שימוש בדגל
--regionאו הגדרה שלו בהגדרות
הגבלת הקצב של יצירת הבקשות
לבעיות שקשורות להגבלת קצב של יצירת בקשות:
- הפחתת התדירות של קריאות ל-API
- שימוש בעימוד לקבוצות גדולות של תוצאות
- הטמעה של השהיה מעריכית לפני ניסיון חוזר (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
- ניהול לוחות בקרה
- בדיקה ואימות של כללים
- טבלאות נתונים ורשימות הפניה
- ניהול בקשות התמיכה
- ועוד הרבה דברים