Google SecOps CLI 使用手冊
Google Security Operations SDK 提供完整的指令列介面 (CLI),方便您從終端機與 Google SecOps 產品互動。新版 secops
CLI 將取代舊版 chronicle_cli
,提供更強大的功能和更完善的使用者體驗。
總覽
secops
CLI 可存取:
- 搜尋及分析 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 執行個體。
- 驗證憑證 (服務帳戶或應用程式預設憑證)。
安裝
安裝 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"
記錄檔擷取
將記錄擷取至 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 呼叫頻率
- 針對大型結果集使用分頁
- 實作指數輪詢重試機制
請求協助
查看任何指令的說明:
$ 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 |
新版 secops
CLI 提供許多 chronicle_cli
沒有的其他功能,包括:
- 自然語言搜尋
- 整合 Gemini AI
- 資訊主頁管理
- 規則測試與驗證
- 資料表和參考清單
- 記錄管理
- 以及更多