Guia do usuário da CLI do Google SecOps
O SDK do Google Security Operations oferece uma interface de linha de comando (CLI) abrangente que facilita a interação com os produtos do Google SecOps no seu terminal. A nova CLI secops substitui a chronicle_cli legada com funcionalidade aprimorada e experiência do usuário melhorada.
Visão geral
A CLI secops oferece acesso a:
- Pesquisar e analisar eventos da UDM
- Gerenciar feeds, encaminhadores e analisadores
- Criar e gerenciar regras de detecção
- Gerenciar alertas e casos
- Gerenciar listas de referência e tabelas de dados
- Exportar dados para o BigQuery e o Google Cloud Storage
- Consultar a IA do Gemini para insights de segurança
- E muito mais
Os comandos da CLI do Google SecOps usam a seguinte sintaxe:
$ secops COMMAND [SUBCOMMAND] [OPTIONS]
Por exemplo, para pesquisar eventos:
$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24
Antes de começar
Antes de instalar a CLI do Google SecOps, verifique se você tem:
- Python 3.8 ou mais recente instalado no seu ambiente. Para mais informações, consulte Como instalar o Python.
- Uma instância do Google SecOps com as permissões de acesso adequadas.
- Credenciais de autenticação (conta de serviço ou Application Default Credentials).
Instalação
Instale o SDK do SecOps, que inclui a CLI:
pip install secops
Verifique a instalação:
$ secops --help
Autenticação
A CLI é compatível com vários métodos de autenticação:
Como usar o Application Default Credentials (recomendado)
# Set up ADC with gcloud gcloud auth application-default login
Como usar uma conta de serviço
Coloque o arquivo JSON da conta de serviço em um local seguro e faça referência a ele nos comandos:
$ 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\""
Configuração
Salve as configurações comuns para evitar repetições nos comandos:
Salvar configuração
# 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
Ver configuração
$ secops config view
Limpar configuração
$ secops config clear
Regiões
A CLI é compatível com todas as regiões do Google SecOps. É possível definir a região usando:
- A sinalização
--regioncom qualquer comando - O arquivo de configuração usando
secops config set --region REGION
As regiões aceitas incluem:
* US (padrão)
* EUROPE
* ASIA-SOUTHEAST1
* ASIA-SOUTH1
* AUSTRALIA-SOUTHEAST1
* EUROPE-WEST2, EUROPE-WEST3, EUROPE-WEST6, EUROPE-WEST9, EUROPE-WEST12
* E mais
Comandos principais
Pesquisar eventos
Pesquise eventos da UDM usando a sintaxe de consulta:
# 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 --csvInformações da entidade
Confira informações detalhadas sobre IPs, domínios ou hashes de arquivo:
$ 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
Estatísticas
Faça análises estatísticas dos seus dados:
$ secops stats --query "metadata.event_type = \"NETWORK_CONNECTION\" match: target.hostname outcome: \$count = count(metadata.id) order: \$count desc" --time-window 24
Gerenciamento de feeds
Gerenciar feeds de ingestão de dados no Google SecOps:
Listar feeds
$ secops feed list
Criar 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"}}'Atualizar feed
$ secops feed update --id "feed-123" --display-name "Updated Feed Name"
Ativar/desativar o feed
$ secops feed enable --id "feed-123" $ secops feed disable --id "feed-123"
Excluir feed
$ secops feed delete --id "feed-123"
Gerenciamento de analisadores
Os analisadores processam e normalizam dados de registro brutos no formato UDM:
Listar analisadores
$ secops parser list $ secops parser list --log-type "WINDOWS"
Receber detalhes do analisador
$ secops parser get --log-type "WINDOWS" --id "pa_12345"
Criar analisador
# 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\" } } }"Analisador de teste
Teste um analisador em relação a registros de amostra antes da implantação:
# 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"Ativar/desativar o analisador
$ secops parser activate --log-type "WINDOWS" --id "pa_12345" $ secops parser deactivate --log-type "WINDOWS" --id "pa_12345"
Excluir analisador
$ secops parser delete --log-type "WINDOWS" --id "pa_12345"
Gerenciamento de extensões do analisador
As extensões do analisador ampliam os analisadores atuais sem substituí-los:
Listar extensões
$ secops parser-extension list --log-type OKTA
Criar extensão
$ secops parser-extension create --log-type OKTA \
--log /path/to/sample.log \
--parser-config-file /path/to/parser-config.confAtivar extensão
$ secops parser-extension activate --log-type OKTA --id "1234567890"
Gerenciamento de encaminhadores
Os encaminhadores são usados para ingerir registros com configurações específicas:
Criar encaminhador
# 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"}'Listar encaminhadores
$ secops forwarder list --page-size 100
Acessar encaminhador
$ secops forwarder get --id "1234567890"
Atualizar encaminhador
$ secops forwarder update --id "1234567890" --display-name "updated-name"
Excluir encaminhador
$ secops forwarder delete --id "1234567890"
Ingestão de registros
Ingerir registros no Google SecOps:
Ingerir registros brutos
# 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\"}"Ingerir eventos do UDM
$ secops log ingest-udm --file "/path/to/udm_event.json"
Listar tipos de registros
$ secops log types $ secops log types --search "windows"
Gerar mapeamento do UDM
$ secops log generate-udm-mapping \
--log-format "JSON" \
--log '{"id":"123","user":"test_user","source_ip":"192.168.1.10"}'Gerenciamento de regras
Gerenciar regras de detecção:
Listar regras
$ secops rule list --page-size 50
Criar regra
$ secops rule create --file "/path/to/rule.yaral"
Atualizar regra
$ secops rule update --id "ru_12345" --file "/path/to/updated_rule.yaral"
Ativar/desativar regra
$ secops rule enable --id "ru_12345" --enabled true $ secops rule enable --id "ru_12345" --enabled false
Testar regra
Teste uma regra com base em dados históricos:
# 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 1000Validar regra
$ secops rule validate --file "/path/to/rule.yaral"
Excluir regra
$ secops rule delete --id "ru_12345"
Gerenciamento de alertas
Receber e gerenciar alertas:
$ secops alert --time-window 24 --max-alerts 50 $ secops alert --snapshot-query "feedback_summary.status != \"CLOSED\"" --time-window 24
Gerenciamento de casos
Recupere os detalhes do caso:
$ secops case --ids "case-123,case-456"
Tabelas de dados
As tabelas de dados são coleções de dados estruturados para uso em regras de detecção:
Criar tabela de dados
$ secops data-table create \
--name "suspicious_ips" \
--description "Known suspicious IP addresses" \
--header '{"ip_address":"CIDR","description":"STRING","severity":"STRING"}'Adicionar linhas
$ secops data-table add-rows \
--name "suspicious_ips" \
--rows '[["192.168.1.100","Scanning activity","Medium"]]'Listar linhas
$ secops data-table list-rows --name "suspicious_ips"
Excluir tabela de dados
$ secops data-table delete --name "suspicious_ips"
Listas de referências
As listas de referência são listas de valores simples para regras de detecção:
Criar lista de referências
$ secops reference-list create \
--name "admin_accounts" \
--description "Administrative accounts" \
--entries "admin,administrator,root,superuser"Atualizar lista de referências
$ secops reference-list update \
--name "admin_accounts" \
--entries "admin,administrator,root,superuser,sysadmin"Listar listas de referências
$ secops reference-list list
Exportação de dados
Exportar dados para análise:
Criar exportação
# 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 168Verificar o status da exportação
$ secops export status --id "export-123"
Cancelar exportação
$ secops export cancel --id "export-123"
Listar os tipos de registro disponíveis para exportação
$ secops export log-types --time-window 24
Integração com a IA do Gemini
Consultar a IA do Gemini para insights de segurança:
# 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"
Ative o Gemini:
$ secops gemini --opt-in
Gerenciamento de painéis
Gerenciar painéis nativos:
Criar painel
$ secops dashboard create \
--display-name "Security Overview" \
--description "Security monitoring dashboard" \
--access-type PRIVATEListar painéis
$ secops dashboard list --page-size 10
Atualizar dashboard
$ secops dashboard update --id dashboard-id \
--display-name "Updated Security Dashboard" \
--description "Updated security monitoring dashboard"Exportar/importar painel
# 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
Adicionar gráfico ao painel
$ 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}'Excluir painel
$ secops dashboard delete --id dashboard-id
Exemplos avançados
Concluir o fluxo de trabalho do analisador
Recupere, teste e implante um analisador:
# 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"Fluxo de trabalho de pesquisa e exportação
Pesquisar eventos e exportar resultados:
# 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
doneTeste e implantação de regras
Crie, teste e implante uma regra de detecção:
# 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 trueSolução de problemas
Problemas comuns
Erros de autenticação
Se você encontrar erros de autenticação:
- Verificar se as credenciais são válidas
- Verifique se a conta de serviço tem as permissões necessárias
- Verifique se o ADC está configurado corretamente:
gcloud auth application-default login
Erros de região
Se você receber erros relacionados à região:
- Verificar se a região tem suporte
- Verifique se a instância está na região especificada
- Usar a flag
--regionou definir na configuração
Limitação de taxa
Para problemas de limitação de taxa:
- Reduza a frequência de chamadas de API
- Use a paginação para conjuntos de resultados grandes
- Implementar espera exponencial para novas tentativas
Receber ajuda
Veja a ajuda de qualquer comando:
$ secops --help $ secops search --help $ secops rule create --help
Migração do chronicle_cli
Se você estiver migrando do chronicle_cli legado, confira um mapeamento dos comandos comuns:
| 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 |
A nova CLI secops oferece muitos recursos adicionais que não estão disponíveis no chronicle_cli, incluindo:
- Pesquisa com linguagem natural
- Integração com a IA do Gemini
- Gerenciamento de painéis
- Teste e validação de regras
- Tabelas de dados e listas de referência
- Gerenciamento de casos de suporte
- E muito mais
Outros recursos
- Repositório do GitHub do SDK do SecOps
- Documentação da API Google Security Operations
- Referência de campo da UDM
- Referência da linguagem YARA-L 2.0