Panduan Pengguna CLI Google SecOps

Didukung di:

Google Security Operations SDK menyediakan antarmuka command line (CLI) komprehensif yang memudahkan interaksi dengan produk Google SecOps dari terminal Anda. CLI secops baru menggantikan chronicle_cli lama dengan fungsi yang ditingkatkan dan pengalaman pengguna yang lebih baik.

Ringkasan

CLI secops menyediakan akses ke:

  • Menelusuri dan menganalisis peristiwa UDM
  • Mengelola feed, penerusan, dan parser
  • Membuat dan mengelola aturan deteksi
  • Menangani pemberitahuan dan kasus
  • Mengelola daftar referensi dan tabel data
  • Mengekspor data ke BigQuery dan Google Cloud Storage
  • Mengirim kueri ke AI Gemini untuk mendapatkan insight keamanan
  • Dan banyak lagi

Perintah Google SecOps CLI menggunakan sintaksis berikut:

$ secops COMMAND [SUBCOMMAND] [OPTIONS]

Misalnya, untuk menelusuri acara:

$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24

Sebelum memulai

Sebelum menginstal Google SecOps CLI, pastikan Anda telah:

  • 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 mencakup CLI:

pip install secops

Verifikasi penginstalannya:

$ secops --help

Autentikasi

CLI mendukung beberapa metode autentikasi:

# Set up ADC with gcloud
gcloud auth application-default login

Menggunakan Akun Layanan

Letakkan file JSON akun layanan Anda di lokasi yang aman dan rujuk di 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 menyetel region menggunakan:

  • Flag --region dengan perintah apa pun
  • File konfigurasi menggunakan secops config set --region REGION

Wilayah yang didukung meliputi:

  • US (default)
  • EUROPE
  • ASIA-SOUTHEAST1
  • ASIA-SOUTH1
  • AUSTRALIA-SOUTHEAST1
  • EUROPE-WEST2, EUROPE-WEST3, EUROPE-WEST6, EUROPE-WEST9, EUROPE-WEST12
  • Dan lainnya

Perintah Inti

Telusuri Peristiwa

Menelusuri 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 --csv

Informasi Entitas

Dapatkan 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:

Mencantumkan Feed

$ secops feed list

Membuat 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"}}'

Mengupdate Feed

$ secops feed update --id "feed-123" --display-name "Updated Feed Name"

Mengaktifkan/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\" } } }"

Parser Pengujian

Menguji 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/Menonaktifkan Parser

$ secops parser activate --log-type "WINDOWS" --id "pa_12345"
$ secops parser deactivate --log-type "WINDOWS" --id "pa_12345"

Hapus 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.conf

Aktifkan Ekstensi

$ secops parser-extension activate --log-type OKTA --id "1234567890"

Pengelolaan Penerusan

Forwarder digunakan untuk menyerap log dengan konfigurasi tertentu:

Buat 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"

Memperbarui 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 layanan mandiri ke data Google Security Operations (SIEM dan SOAR) di BigQuery. Anda dapat menggunakan Google Security Operations CLI untuk memberikan peran Identity and Access Management (IAM) yang memberikan izin berikut untuk email pengguna:

  • roles/bigquery.dataViewer
  • roles/bigquery.jobUser
  • roles/storage.objectViewer

Email harus berupa alamat email pengguna Administrasi Akun Google dan ID (GAIA) pelanggan SecOps Google.

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) 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 keberhasilan
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 perintah atau opsi apa pun.

Pemecahan masalah

Bagian ini menampilkan 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 Raw

# 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"

Mencantumkan 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"

Aturan Diperbarui

$ secops rule update --id "ru_12345" --file "/path/to/updated_rule.yaral"

Mengaktifkan/Menonaktifkan Aturan

$ secops rule enable --id "ru_12345" --enabled true
$ secops rule enable --id "ru_12345" --enabled false

Aturan Pengujian

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 1000

Validasi Aturan

$ secops rule validate --file "/path/to/rule.yaral"

Hapus Aturan

$ secops rule delete --id "ru_12345"

Pengelolaan Pemberitahuan

Mendapatkan dan mengelola laporan:

$ 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:

Buat 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"

Hapus Tabel Data

$ secops data-table delete --name "suspicious_ips"

Daftar Referensi

Daftar referensi adalah daftar nilai sederhana 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 168

Memeriksa Status Ekspor

$ secops export status --id "export-123"

Membatalkan Ekspor

$ secops export cancel --id "export-123"

Mencantumkan Jenis Log yang Tersedia untuk Diekspor

$ secops export log-types --time-window 24

Integrasi AI Gemini

Mengajukan kueri AI 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"

Mengaktifkan Gemini:

$ secops gemini --opt-in

Pengelolaan Dasbor

Mengelola dasbor native:

Buat Dasbor

$ secops dashboard create \
    --display-name "Security Overview" \
    --description "Security monitoring dashboard" \
    --access-type PRIVATE

Mencantumkan Dasbor

$ secops dashboard list --page-size 10

Memperbarui dasbor

$ secops dashboard update --id dashboard-id \
    --display-name "Updated Security Dashboard" \
    --description "Updated security monitoring dashboard"

Mengekspor/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

Menambahkan 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 acara 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
done

Pengujian dan Deployment Aturan

Buat, uji, dan 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 true

Pemecahan masalah

Masalah Umum

Error Autentikasi

Jika Anda mengalami error autentikasi:

  1. Pastikan kredensial Anda valid
  2. Periksa apakah akun layanan Anda memiliki izin yang diperlukan
  3. Pastikan ADC dikonfigurasi dengan benar: gcloud auth application-default login

Error Wilayah

Jika Anda mendapatkan error terkait wilayah:

  1. Pastikan wilayah didukung
  2. Pastikan instance Anda berada di region yang ditentukan
  3. Menggunakan flag --region atau menyetelnya dalam konfigurasi

Pembatasan Kapasitas

Untuk masalah pembatasan kapasitas:

  1. Mengurangi frekuensi panggilan API
  2. Menggunakan penomoran halaman untuk kumpulan hasil yang besar
  3. Menerapkan backoff eksponensial untuk percobaan ulang

Mendapatkan Bantuan

Melihat bantuan untuk perintah apa pun:

$ secops --help
$ secops search --help
$ secops rule create --help

Migrasi dari chronicle_cli

Jika Anda bermigrasi dari chronicle_cli lama, berikut 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

CLI secops 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
  • Dan banyak lagi

Referensi Tambahan