מדריך למשתמש ב-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"
ניהול של שרתי דואר להעברה
העברת נתונים משמשת להעברת יומנים עם הגדרות ספציפיות:
יצירת כתובת להעברת דואר
# 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.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
- ניהול לוחות בקרה
- בדיקה ואימות של כללים
- טבלאות נתונים ורשימות הפניה
- ניהול בקשות התמיכה
- ועוד הרבה דברים