Referensi CLI Google SecOps
Google Security Operations SDK menyediakan antarmuka command line (CLI) komprehensif yang memungkinkan Anda berinteraksi dengan produk Google SecOps dari terminal. secops CLI baru menggantikan
chronicle_cli lama dengan fungsionalitas yang ditingkatkan dan pengalaman pengguna yang lebih baik.
Ringkasan
secops CLI memungkinkan Anda:
- Menelusuri dan menganalisis peristiwa UDM
- Mengelola feed, forwarder, dan parser
- Membuat dan mengelola aturan deteksi
- Menangani pemberitahuan dan kasus
- Mengelola daftar referensi dan tabel data
- Mengekspor data ke BigQuery dan Cloud Storage
- Membuat kueri AI Gemini untuk mendapatkan insight keamanan
Perintah Google SecOps CLI menggunakan sintaksis berikut:
$ secops COMMAND [SUBCOMMAND] [OPTIONS]
Misalnya, untuk menelusuri peristiwa:
$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24
Sebelum memulai
Sebelum menginstal Google SecOps CLI, pastikan Anda memiliki:
- Python 3.8 atau yang lebih tinggi diinstal di lingkungan Anda. Untuk mengetahui informasi selengkapnya, lihat Menginstal Python.
- Instance Google SecOps dengan izin akses yang sesuai.
- Kredensial autentikasi (akun layanan atau Kredensial Default Aplikasi).
Penginstalan
Instal SecOps SDK yang menyertakan CLI:
pip install secops
Verifikasi penginstalannya:
$ secops --help
Autentikasi
CLI mendukung beberapa metode autentikasi:
Menggunakan Kredensial Default Aplikasi (Direkomendasikan)
# Set up ADC with gcloud gcloud auth application-default login
Menggunakan Akun Layanan
Tempatkan file JSON akun layanan Anda di lokasi yang aman dan referensikan dalam perintah:
$ 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\""
Konfigurasi
Simpan setelan umum untuk menghindari pengulangan dalam perintah:
Simpan konfigurasi
# 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
Lihat konfigurasi
$ secops config view
Hapus konfigurasi
$ secops config clear
Region
CLI mendukung semua region Google SecOps. Anda dapat menetapkan region menggunakan:
- Flag
--regiondengan perintah apa pun - File konfigurasi yang menggunakan
secops config set --region REGION
Wilayah yang didukung meliputi:
US(default)EUROPEASIA-SOUTHEAST1ASIA-SOUTH1AUSTRALIA-SOUTHEAST1EUROPE-WEST2,EUROPE-WEST3,EUROPE-WEST6,EUROPE-WEST9,EUROPE-WEST12- Dan lainnya
Perintah inti
Menelusuri peristiwa UDM
Telusuri peristiwa UDM menggunakan sintaksis kueri:
# 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 --csvInformasi entitas
Mendapatkan informasi mendetail tentang IP, domain, atau hash file:
$ 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
Statistik
Menjalankan analisis statistik pada data Anda:
$ secops stats --query "metadata.event_type = \"NETWORK_CONNECTION\" match: target.hostname outcome: \$count = count(metadata.id) order: \$count desc" --time-window 24
Pengelolaan feed
Mengelola feed penyerapan data di Google SecOps:
Membuat daftar feed
$ secops feed list
Buat feed
# 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"}}'Perbarui feed
$ secops feed update --id "feed-123" --display-name "Updated Feed Name"
Mengaktifkan dan menonaktifkan feed
$ secops feed enable --id "feed-123" $ secops feed disable --id "feed-123"
Hapus feed
$ secops feed delete --id "feed-123"
Pengelolaan parser
Parser memproses dan menormalisasi data log mentah ke dalam format UDM:
Mencantumkan parser
$ secops parser list $ secops parser list --log-type "WINDOWS"
Mendapatkan detail parser
$ secops parser get --log-type "WINDOWS" --id "pa_12345"
Buat parser
# 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\" } } }"Menguji parser
Uji parser terhadap contoh log sebelum deployment:
# 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"Mengaktifkan dan menonaktifkan parser
$ secops parser activate --log-type "WINDOWS" --id "pa_12345" $ secops parser deactivate --log-type "WINDOWS" --id "pa_12345"
Menghapus parser
$ secops parser delete --log-type "WINDOWS" --id "pa_12345"
Pengelolaan ekstensi parser
Ekstensi parser memperluas parser yang ada tanpa menggantinya:
Mencantumkan ekstensi
$ secops parser-extension list --log-type OKTA
Buat ekstensi
$ secops parser-extension create --log-type OKTA \
--log /path/to/sample.log \
--parser-config-file /path/to/parser-config.confMengaktifkan ekstensi
$ secops parser-extension activate --log-type OKTA --id "1234567890"
Pengelolaan penerus
Forwarder digunakan untuk menyerap log dengan konfigurasi tertentu:
Membuat penerusan
# 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"}'Mencantumkan penerus
$ secops forwarder list --page-size 100
Mendapatkan penerus
$ secops forwarder get --id "1234567890"
Perbarui penerus
$ secops forwarder update --id "1234567890" --display-name "updated-name"
Menghapus penerus
$ secops forwarder delete --id "1234567890"
Alur kerja akses data BigQuery
Google Security Operations mendukung akses mandiri ke data Google Security Operations (SIEM dan SOAR) di BigQuery. Anda dapat menggunakan CLI Google Security Operations untuk memberikan peran Identity and Access Management (IAM) yang memberikan izin berikut untuk email pengguna:
roles/bigquery.dataViewerroles/bigquery.jobUserroles/storage.objectViewer
Email tersebut harus berupa alamat email pengguna Google Accounts and ID Administration (GAIA) dari pelanggan Google SecOps.
Untuk mengetahui informasi selengkapnya tentang peran ini, lihat Mengekspor data tabel.
Perintah
bigquery perintah
Perintah bigquery menggunakan argumen provide_access.
Sintaksis penggunaan:
$ chronicle_cli bigquery ARGUMENT [OPTIONS]
Argumen
Argumen provide_access
Meminta Anda memasukkan alamat email pengguna. Email tersebut harus berupa alamat email pengguna Google Accounts and ID Administration (GAIA) dari pelanggan Google SecOps Security. Pengguna akan menerima peran IAM yang diperlukan untuk melakukan hal berikut:
- Membaca data dan metadata dari tabel BigQuery (
roles/bigquery.dataViewer) - Menjalankan kueri pada data tabel BigQuery (
roles/bigquery.jobUser) - Membaca data di bucket Cloud Storage(
roles/storage.objectViewer)
Contoh penggunaan
$ chronicle_cli bigquery provide_access
$ Enter email: xyz@gmail.com
Respons berhasil
Providing BigQuery access...
Access provided to email: xyz@gmail.com
Providing BigQuery access...
Error while providing access:
Response code: 400
Opsi
Bantuan (-h / --help)
Gunakan opsi -h atau --help untuk melihat penggunaan atau deskripsi untuk perintah atau opsi apa pun.
Pemecahan masalah
Bagian ini menunjukkan output yang ditampilkan di konsol terhadap berbagai jenis kode respons yang diterima dari respons API.
Kode respons argumen provide_access
| Kode Respons | Output Konsol |
| 400 | Email tidak ada. |
| Kode respons lainnya | Terjadi error saat mengambil feed.
Kode Respons: {status code}
Error: {error message}
|
Penyerapan log
Menyerap log ke Google SecOps:
Menyerap log mentah
# 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\"}"Menyerap peristiwa UDM
$ secops log ingest-udm --file "/path/to/udm_event.json"
Membuat daftar jenis log
$ secops log types $ secops log types --search "windows"
Membuat pemetaan UDM
$ secops log generate-udm-mapping \
--log-format "JSON" \
--log '{"id":"123","user":"test_user","source_ip":"192.168.1.10"}'Pengelolaan aturan
Mengelola aturan deteksi:
Mencantumkan aturan
$ secops rule list --page-size 50
Buat aturan
$ secops rule create --file "/path/to/rule.yaral"
Perbarui aturan
$ secops rule update --id "ru_12345" --file "/path/to/updated_rule.yaral"
Mengaktifkan dan menonaktifkan aturan
$ secops rule enable --id "ru_12345" --enabled true $ secops rule enable --id "ru_12345" --enabled false
Menguji aturan
Menguji aturan terhadap data historis:
# 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 1000Memvalidasi aturan
$ secops rule validate --file "/path/to/rule.yaral"
Hapus aturan
$ secops rule delete --id "ru_12345"
Pengelolaan pemberitahuan
Mendapatkan dan mengelola notifikasi:
$ secops alert --time-window 24 --max-alerts 50 $ secops alert --snapshot-query "feedback_summary.status != \"CLOSED\"" --time-window 24
Pengelolaan kasus
Mengambil detail kasus:
$ secops case --ids "case-123,case-456"
Tabel data
Tabel data adalah kumpulan data terstruktur untuk digunakan dalam aturan deteksi:
Membuat tabel data
$ secops data-table create \
--name "suspicious_ips" \
--description "Known suspicious IP addresses" \
--header '{"ip_address":"CIDR","description":"STRING","severity":"STRING"}'Tambahkan baris
$ secops data-table add-rows \
--name "suspicious_ips" \
--rows '[["192.168.1.100","Scanning activity","Medium"]]'Mencantumkan baris
$ secops data-table list-rows --name "suspicious_ips"
Menghapus tabel data
$ secops data-table delete --name "suspicious_ips"
Daftar referensi
Daftar referensi adalah daftar nilai untuk aturan deteksi:
Membuat daftar referensi
$ secops reference-list create \
--name "admin_accounts" \
--description "Administrative accounts" \
--entries "admin,administrator,root,superuser"Memperbarui daftar referensi
$ secops reference-list update \
--name "admin_accounts" \
--entries "admin,administrator,root,superuser,sysadmin"Mencantumkan daftar referensi
$ secops reference-list list
Ekspor data
Mengekspor data untuk analisis:
Buat ekspor
# 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 168Memeriksa status ekspor
$ secops export status --id "export-123"
Batalkan ekspor
$ secops export cancel --id "export-123"
Mencantumkan jenis log yang tersedia untuk diekspor
$ secops export log-types --time-window 24
Integrasi Gemini
Membuat kueri ke Gemini untuk mendapatkan insight keamanan:
# 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" # Continue an existing conversation $ secops gemini --query "Show me an example of this rule" --conversation-id "conv-123" # Output the raw API response as JSON $ secops --output text gemini --query "What is Windows event ID 4625?" --raw
Aktifkan Gemini dan kirim kueri dalam perintah yang sama:
$ secops gemini --opt-in --query "What is Windows event ID 4625?"
Flag yang didukung
Perintah secops gemini mendukung flag berikut:
| Flag | Deskripsi |
|---|---|
--query |
Wajib. Pertanyaan atau permintaan yang akan dikirim ke Gemini. |
--output |
Opsional. Format output. Nilai yang valid adalah json (default), atau text. Perhatikan bahwa ini adalah flag global yang harus Anda tentukan sebelum flag gemini. |
--conversation-id |
Opsional. ID percakapan yang ada untuk dilanjutkan. Jika Anda menghapus flag ini, percakapan baru akan dimulai. |
--raw |
Opsional. Menampilkan respons API mentah, bukan teks yang diformat, blok kode, dan tindakan yang disarankan. Gunakan flag --output untuk menetapkan format ke json (default) atau text. |
--opt-in |
Opsional. Secara eksplisit memilih untuk menggunakan Gemini sebelum mengirim kueri. |
Pengelolaan dasbor
Mengelola dasbor Google SecOps:
Buat dasbor
$ secops dashboard create \
--display-name "Security Overview" \
--description "Security monitoring dashboard" \
--access-type PRIVATECantumkan dasbor
$ secops dashboard list --page-size 10
Perbarui dasbor
$ secops dashboard update --id dashboard-id \
--display-name "Updated Security Dashboard" \
--description "Updated security monitoring dashboard"Mengekspor dan mengimpor dasbor
# 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
Tambahkan diagram ke dasbor
$ 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}'Hapus dasbor
$ secops dashboard delete --id dashboard-id
Contoh lanjutan
Menyelesaikan alur kerja parser
Mengambil, menguji, dan men-deploy parser:
# 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"Alur kerja penelusuran dan ekspor
Menelusuri peristiwa dan mengekspor hasil:
# 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
donePengujian dan deployment aturan
Membuat, menguji, dan men-deploy aturan deteksi:
# 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 trueMemecahkan masalah umum
Error autentikasi
Jika Anda mengalami error autentikasi:
- Memverifikasi bahwa kredensial Anda valid
- Memeriksa apakah akun layanan Anda memiliki izin yang diperlukan
- Pastikan ADC dikonfigurasi dengan benar:
gcloud auth application-default login
Error region
Jika Anda mendapatkan error terkait region:
- Memastikan wilayah didukung
- Memeriksa apakah instance Anda berada di region yang ditentukan
- Gunakan flag
--regionatau tetapkan dalam konfigurasi
Pembatasan kapasitas
Untuk masalah pembatasan kapasitas:
- Mengurangi frekuensi panggilan API
- Menggunakan penomoran halaman untuk set hasil yang besar
- Menerapkan backoff eksponensial untuk percobaan ulang
Mendapatkan bantuan
Melihat bantuan untuk perintah apa pun:
$ secops --help $ secops search --help $ secops rule create --help
Bermigrasi dari chronicle_cli lama
Jika Anda bermigrasi dari chronicle_cli lama, berikut adalah pemetaan perintah umum:
| 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 baru menawarkan banyak fitur tambahan yang tidak tersedia di
chronicle_cli, termasuk:
- Penelusuran bahasa alami
- Integrasi AI Gemini
- Pengelolaan dasbor
- Pengujian dan validasi aturan
- Tabel data dan daftar referensi
- Pengelolaan kasus