Google SecOps CLI-Nutzerhandbuch
Das Google Security Operations SDK bietet eine umfassende Befehlszeile (Command-Line Interface, CLI), mit der Sie ganz einfach über Ihr Terminal mit Google SecOps-Produkten interagieren können. Die neue secops-Befehlszeile ersetzt die alte chronicle_cli und bietet erweiterte Funktionen und eine verbesserte Nutzerfreundlichkeit.
Übersicht
Die secops-Befehlszeile bietet Zugriff auf:
- UDM-Ereignisse suchen und analysieren
- Feeds, Weiterleitungen und Parser verwalten
- Erkennungsregeln erstellen und verwalten
- Umgang mit Benachrichtigungen und Anfragen
- Referenzlisten und Datentabellen verwalten
- Daten nach BigQuery und Google Cloud Storage exportieren
- Gemini AI nach Sicherheitsinformationen fragen
- Und vieles mehr
Google SecOps CLI-Befehle verwenden die folgende Syntax:
$ secops COMMAND [SUBCOMMAND] [OPTIONS]
So suchen Sie beispielsweise nach Veranstaltungen:
$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24
Hinweis
Bevor Sie die Google SecOps CLI installieren, müssen folgende Voraussetzungen erfüllt sein:
- Python 3.8 oder höher ist in Ihrer Umgebung installiert. Weitere Informationen finden Sie unter Python installieren.
- Eine Google SecOps-Instanz mit den entsprechenden Zugriffsberechtigungen.
- Authentifizierungsanmeldedaten (Dienstkonto oder Standardanmeldedaten für Anwendungen)
Installation
Installieren Sie das SecOps SDK, das die CLI enthält:
pip install secops
Installation prüfen:
$ secops --help
Authentifizierung
Die CLI unterstützt mehrere Authentifizierungsmethoden:
Standardanmeldedaten für Anwendungen verwenden (empfohlen)
# Set up ADC with gcloud gcloud auth application-default login
Dienstkonto verwenden
Speichern Sie die JSON-Datei Ihres Dienstkontos an einem sicheren Ort und verweisen Sie in Befehlen darauf:
$ 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\""
Konfiguration
Häufig verwendete Einstellungen speichern, um Wiederholungen in Befehlen zu vermeiden:
Konfiguration speichern
# 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
Konfiguration ansehen
$ secops config view
Konfiguration löschen
$ secops config clear
Regionen
Die CLI unterstützt alle Google SecOps-Regionen. Sie können die Region mit folgenden Methoden festlegen:
- Das Flag
--regionmit einem beliebigen Befehl - Konfigurationsdatei mit
secops config set --region REGION
Unterstützte Regionen:
US(Standard)EUROPEASIA-SOUTHEAST1ASIA-SOUTH1AUSTRALIA-SOUTHEAST1EUROPE-WEST2:EUROPE-WEST3,EUROPE-WEST6,EUROPE-WEST9,EUROPE-WEST12- Und weitere Funktionen
Wichtige Befehle
Ereignisse suchen
Mit der folgenden Abfragesyntax können Sie nach UDM-Ereignissen suchen:
# 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 --csvInformationen zur juristischen Person
Detaillierte Informationen zu IP-Adressen, Domains oder Datei-Hashes abrufen:
$ 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
Statistiken
Statistische Analysen für Ihre Daten ausführen:
$ secops stats --query "metadata.event_type = \"NETWORK_CONNECTION\" match: target.hostname outcome: \$count = count(metadata.id) order: \$count desc" --time-window 24
Feedverwaltung
Datenaufnahmefeeds in Google SecOps verwalten:
Feeds auflisten
$ secops feed list
Feed erstellen
# 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"}}'Feed aktualisieren
$ secops feed update --id "feed-123" --display-name "Updated Feed Name"
Feed aktivieren/deaktivieren
$ secops feed enable --id "feed-123" $ secops feed disable --id "feed-123"
Feed löschen
$ secops feed delete --id "feed-123"
Parserverwaltung
Parser verarbeiten und normalisieren Logrohdaten im UDM-Format:
Parser auflisten
$ secops parser list $ secops parser list --log-type "WINDOWS"
Parserdetails abrufen
$ secops parser get --log-type "WINDOWS" --id "pa_12345"
Parser erstellen
# 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\" } } }"Testparser
Parser vor der Bereitstellung mit Beispiellogs testen:
# 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"Parser aktivieren/deaktivieren
$ secops parser activate --log-type "WINDOWS" --id "pa_12345" $ secops parser deactivate --log-type "WINDOWS" --id "pa_12345"
Parser löschen
$ secops parser delete --log-type "WINDOWS" --id "pa_12345"
Verwaltung von Parser-Erweiterungen
Parser-Erweiterungen erweitern vorhandene Parser, ohne sie zu ersetzen:
Erweiterungen auflisten
$ secops parser-extension list --log-type OKTA
Erweiterung erstellen
$ secops parser-extension create --log-type OKTA \
--log /path/to/sample.log \
--parser-config-file /path/to/parser-config.confErweiterung aktivieren
$ secops parser-extension activate --log-type OKTA --id "1234567890"
Forwarder-Verwaltung
Forwarder werden verwendet, um Logs mit bestimmten Konfigurationen zu erfassen:
Forwarder erstellen
# 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"}'Weiterleitungen auflisten
$ secops forwarder list --page-size 100
Forwarder abrufen
$ secops forwarder get --id "1234567890"
Forwarder aktualisieren
$ secops forwarder update --id "1234567890" --display-name "updated-name"
Forwarder löschen
$ secops forwarder delete --id "1234567890"
Workflows für den BigQuery-Datenzugriff
Google Security Operations unterstützt den Self-Service-Zugriff auf Google Security Operations-Daten (sowohl SIEM als auch SOAR) in BigQuery. Mit der Google Security Operations CLI können Sie Identity and Access Management (IAM)-Rollen zuweisen, die einer Nutzer-E-Mail-Adresse die folgenden Berechtigungen gewähren:
roles/bigquery.dataViewerroles/bigquery.jobUserroles/storage.objectViewer
Die E-Mail-Adresse muss die GAIA-E-Mail-Adresse (Google Accounts and ID Administration) eines Google SecOps-Kunden sein.
Weitere Informationen zu diesen Rollen finden Sie unter Tabellendaten exportieren.
Befehle
Befehl bigquery
Der Befehl bigquery verwendet das Argument provide_access.
Verwendungssyntax:
$ chronicle_cli bigquery ARGUMENT [OPTIONS]
Argumente
provide_access-Argument
Sie werden aufgefordert, die E‑Mail-Adresse eines Nutzers einzugeben. Die E-Mail-Adresse muss die GAIA-E-Mail-Adresse (Google Accounts and ID Administration) eines Google SecOps Security-Kunden sein. Der Nutzer erhält die erforderlichen IAM-Rollen für folgende Aktionen:
- Daten und Metadaten aus BigQuery-Tabellen lesen (
roles/bigquery.dataViewer) - Abfragen für BigQuery-Tabellendaten ausführen (
roles/bigquery.jobUser) - Daten in Cloud Storage-Buckets lesen(
roles/storage.objectViewer)
Verwendungsbeispiel
$ chronicle_cli bigquery provide_access
$ Enter email: xyz@gmail.com
Erfolgsantwort
Providing BigQuery access...
Access provided to email: xyz@gmail.com
Providing BigQuery access...
Error while providing access:
Response code: 400
Optionen
Hilfe (-h / --help)
Mit der Option -h oder --help können Sie die Verwendung oder Beschreibung eines beliebigen Befehls oder einer beliebigen Option aufrufen.
Fehlerbehebung
In diesem Abschnitt wird die Ausgabe angezeigt, die in der Konsole für verschiedene Arten von Antwortcodes aus der API-Antwort zu sehen ist.
provide_access Argument-Antwortcodes
| Antwortcode | Konsolenausgabe |
| 400 | Die E‑Mail-Adresse ist nicht vorhanden. |
| Alle anderen Antwortcodes | Fehler beim Abrufen des Feeds.
Antwortcode: {status code}
Fehler: {error message}
|
Log-Aufnahme
Protokolle in Google SecOps aufnehmen:
Rohdatenlogs aufnehmen
# 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-Ereignisse aufnehmen
$ secops log ingest-udm --file "/path/to/udm_event.json"
Logtypen auflisten
$ secops log types $ secops log types --search "windows"
UDM-Zuordnung generieren
$ secops log generate-udm-mapping \
--log-format "JSON" \
--log '{"id":"123","user":"test_user","source_ip":"192.168.1.10"}'Regelverwaltung
Erkennungsregeln verwalten:
Regeln für Listen
$ secops rule list --page-size 50
Regel erstellen
$ secops rule create --file "/path/to/rule.yaral"
Regel aktualisieren
$ secops rule update --id "ru_12345" --file "/path/to/updated_rule.yaral"
Regel aktivieren/deaktivieren
$ secops rule enable --id "ru_12345" --enabled true $ secops rule enable --id "ru_12345" --enabled false
Regel testen
Regel mit Verlaufsdaten testen:
# 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 1000Regel validieren
$ secops rule validate --file "/path/to/rule.yaral"
Regel löschen
$ secops rule delete --id "ru_12345"
Benachrichtigungen verwalten
So erhalten und verwalten Sie Benachrichtigungen:
$ secops alert --time-window 24 --max-alerts 50 $ secops alert --snapshot-query "feedback_summary.status != \"CLOSED\"" --time-window 24
Fallverwaltung
Details zur Supportanfrage abrufen:
$ secops case --ids "case-123,case-456"
Datentabellen
Datentabellen sind Sammlungen strukturierter Daten, die in Erkennungsregeln verwendet werden:
Datentabelle erstellen
$ secops data-table create \
--name "suspicious_ips" \
--description "Known suspicious IP addresses" \
--header '{"ip_address":"CIDR","description":"STRING","severity":"STRING"}'Zeilen hinzufügen
$ secops data-table add-rows \
--name "suspicious_ips" \
--rows '[["192.168.1.100","Scanning activity","Medium"]]'Zeilen auflisten
$ secops data-table list-rows --name "suspicious_ips"
Datentabelle löschen
$ secops data-table delete --name "suspicious_ips"
Referenzlisten
Referenzlisten sind einfache Wertelisten für Erkennungsregeln:
Referenzliste erstellen
$ secops reference-list create \
--name "admin_accounts" \
--description "Administrative accounts" \
--entries "admin,administrator,root,superuser"Referenzliste aktualisieren
$ secops reference-list update \
--name "admin_accounts" \
--entries "admin,administrator,root,superuser,sysadmin"Referenzlisten auflisten
$ secops reference-list list
Datenexport
Daten zur Analyse exportieren:
Export erstellen
# 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 168Exportstatus prüfen
$ secops export status --id "export-123"
Export abbrechen
$ secops export cancel --id "export-123"
Verfügbare Logtypen für den Export auflisten
$ secops export log-types --time-window 24
Google AI-Integration
Google AI nach Sicherheitsinformationen fragen:
# 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"
So aktivieren Sie Gemini:
$ secops gemini --opt-in
Dashboard-Verwaltung
Native Dashboards verwalten:
Dashboard erstellen
$ secops dashboard create \
--display-name "Security Overview" \
--description "Security monitoring dashboard" \
--access-type PRIVATEDashboards auflisten
$ secops dashboard list --page-size 10
Dashboard aktualisieren
$ secops dashboard update --id dashboard-id \
--display-name "Updated Security Dashboard" \
--description "Updated security monitoring dashboard"Dashboard exportieren/importieren
# 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
Diagramm zum Dashboard hinzufügen
$ 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}'Dashboard löschen
$ secops dashboard delete --id dashboard-id
Erweiterte Beispiele
Parser-Workflow abschließen
Parser abrufen, testen und bereitstellen:
# 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"Workflow für Suche und Export
Nach Ereignissen suchen und Ergebnisse exportieren:
# 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
doneRegel testen und bereitstellen
Erkennungsregel erstellen, testen und bereitstellen:
# 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 trueFehlerbehebung
Allgemeine Probleme
Authentifizierungsfehler
Wenn Authentifizierungsfehler auftreten, können Sie Folgendes versuchen:
- Anmeldedaten überprüfen
- Prüfen, ob Ihr Dienstkonto die erforderlichen Berechtigungen hat
- Prüfen Sie, ob ADC richtig konfiguriert ist:
gcloud auth application-default login
Regionsfehler
Wenn Sie regionale Fehler erhalten:
- Prüfen, ob die Region unterstützt wird
- Prüfen, ob sich Ihre Instanz in der angegebenen Region befindet
--region-Flag verwenden oder in der Konfiguration festlegen
Ratenbegrenzung
Bei Problemen mit der Ratenbegrenzung:
- Häufigkeit von API-Aufrufen verringern
- Paginierung für große Ergebnismengen verwenden
- Exponentiellen Backoff für Wiederholungen implementieren
Hilfe
Hilfe zu einem beliebigen Befehl aufrufen:
$ secops --help $ secops search --help $ secops rule create --help
Migration von chronicle_cli
Wenn Sie von der alten chronicle_cli migrieren, finden Sie hier eine Zuordnung der gängigen Befehle:
| 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 |
Die neue secops-Befehlszeile bietet viele zusätzliche Funktionen, die in chronicle_cli nicht verfügbar sind, darunter:
- Suche in natürlicher Sprache
- Gemini AI-Integration
- Dashboard-Verwaltung
- Regeltests und ‑validierung
- Datentabellen und Referenzlisten
- Fallverwaltung
- Und vieles mehr