Guía del usuario de la CLI de Google SecOps
El SDK de Google Security Operations proporciona una interfaz de línea de comandos (CLI) completa que facilita la interacción con los productos de Google SecOps desde tu terminal. La nueva interfaz de línea de comandos secops
sustituye a la antigua chronicle_cli
y ofrece funciones mejoradas y una experiencia de usuario optimizada.
Información general
La CLI de secops
proporciona acceso a lo siguiente:
- Buscar y analizar eventos de UDM
- Gestionar feeds, reenviadores y analizadores
- Crear y gestionar reglas de detección
- Gestionar alertas y casos
- Gestionar listas de referencia y tablas de datos
- Exportar datos a BigQuery y Google Cloud Storage
- Consultar a la IA de Gemini para obtener información valiosa sobre seguridad
- Y mucho más
Los comandos de la CLI de Google SecOps usan la siguiente sintaxis:
$ secops COMMAND [SUBCOMMAND] [OPTIONS]
Por ejemplo, para buscar eventos:
$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24
Antes de empezar
Antes de instalar la CLI de Google SecOps, asegúrate de que tienes lo siguiente:
- Python 3.8 o una versión posterior instalada en tu entorno. Para obtener más información, consulta Instalar Python.
- Una instancia de Google SecOps con los permisos de acceso adecuados.
- Credenciales de autenticación (cuenta de servicio o credenciales predeterminadas de la aplicación).
Instalación
Instala el SDK de SecOps, que incluye la CLI:
pip install secops
Verifica la instalación:
$ secops --help
Autenticación
La CLI admite varios métodos de autenticación:
Usar las credenciales de aplicación predeterminadas (recomendado)
# Set up ADC with gcloud gcloud auth application-default login
Usar una cuenta de servicio
Coloca el archivo JSON de tu cuenta de servicio en una ubicación segura y haz referencia a él en los 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\""
Configuración
Guarda los ajustes habituales para no tener que repetirlos en los comandos:
Guardar configuración
# 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 configuración
$ secops config view
Borrar configuración
$ secops config clear
Regiones
La CLI admite todas las regiones de Google SecOps. Puedes definir la región de las siguientes formas:
- La marca
--region
con cualquier comando - El archivo de configuración con
secops config set --region REGION
Entre las regiones admitidas se incluyen las siguientes:
* US
(predeterminada)
* EUROPE
* ASIA-SOUTHEAST1
* ASIA-SOUTH1
* AUSTRALIA-SOUTHEAST1
* EUROPE-WEST2
, EUROPE-WEST3
, EUROPE-WEST6
, EUROPE-WEST9
y EUROPE-WEST12
* Y más
Comandos principales
Buscar eventos
Busca eventos de UDM con la sintaxis 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 --csv
Información de la entidad
Obtener información detallada sobre IPs, dominios o hashes de archivos:
$ 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
Estadísticas
Realiza análisis estadísticos de tus datos:
$ secops stats --query "metadata.event_type = \"NETWORK_CONNECTION\" match: target.hostname outcome: \$count = count(metadata.id) order: \$count desc" --time-window 24
Gestión de feeds
Gestionar feeds de ingesta de datos en Google SecOps:
Mostrar feeds
$ secops feed list
Crear 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"}}'
Actualizar feed
$ secops feed update --id "feed-123" --display-name "Updated Feed Name"
Habilitar o inhabilitar el feed
$ secops feed enable --id "feed-123" $ secops feed disable --id "feed-123"
Eliminar feed
$ secops feed delete --id "feed-123"
Gestión de analizadores
Los analizadores procesan y normalizan los datos de registro sin procesar en formato UDM:
List Parsers
$ secops parser list $ secops parser list --log-type "WINDOWS"
Obtener detalles del analizador
$ secops parser get --log-type "WINDOWS" --id "pa_12345"
Crear analizador
# 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\" } } }"
Analizador de prueba
Prueba un analizador con registros de muestra antes de implementarlo:
# 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"
Activar o desactivar el analizador
$ secops parser activate --log-type "WINDOWS" --id "pa_12345" $ secops parser deactivate --log-type "WINDOWS" --id "pa_12345"
Eliminar analizador
$ secops parser delete --log-type "WINDOWS" --id "pa_12345"
Gestión de extensiones de analizador
Las extensiones de analizador amplían los analizadores sin sustituirlos:
Mostrar extensiones
$ secops parser-extension list --log-type OKTA
Crear ampliación
$ secops parser-extension create --log-type OKTA \ --log /path/to/sample.log \ --parser-config-file /path/to/parser-config.conf
Activar extensión
$ secops parser-extension activate --log-type OKTA --id "1234567890"
Gestión de reenviadores
Los reenviadores se usan para ingerir registros con configuraciones específicas:
Crear reenviador
# 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"}'
Mostrar reenviadores
$ secops forwarder list --page-size 100
Obtener reenviador
$ secops forwarder get --id "1234567890"
Actualizar reenviador
$ secops forwarder update --id "1234567890" --display-name "updated-name"
Eliminar reenviador
$ secops forwarder delete --id "1234567890"
Ingestión de registros
Ingiere registros en Google SecOps:
Ingerir registros sin procesar
# 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 de UDM
$ secops log ingest-udm --file "/path/to/udm_event.json"
Mostrar tipos de registro
$ secops log types $ secops log types --search "windows"
Generar mapeo de UDM
$ secops log generate-udm-mapping \ --log-format "JSON" \ --log '{"id":"123","user":"test_user","source_ip":"192.168.1.10"}'
Gestión de reglas
Gestionar reglas de detección:
Reglas de la lista
$ secops rule list --page-size 50
Crear regla
$ secops rule create --file "/path/to/rule.yaral"
Actualización de la regla
$ secops rule update --id "ru_12345" --file "/path/to/updated_rule.yaral"
Habilitar o inhabilitar una regla
$ secops rule enable --id "ru_12345" --enabled true $ secops rule enable --id "ru_12345" --enabled false
Probar regla
Para probar una regla con el historial de datos, siga estos pasos:
# 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
Validar regla
$ secops rule validate --file "/path/to/rule.yaral"
Eliminar regla
$ secops rule delete --id "ru_12345"
Gestión de alertas
Recibir y gestionar alertas:
$ secops alert --time-window 24 --max-alerts 50 $ secops alert --snapshot-query "feedback_summary.status != \"CLOSED\"" --time-window 24
Gestión de casos
Recuperar los detalles del caso:
$ secops case --ids "case-123,case-456"
Tablas de datos
Las tablas de datos son colecciones de datos estructurados que se usan en reglas de detección:
Crear tabla de datos
$ secops data-table create \ --name "suspicious_ips" \ --description "Known suspicious IP addresses" \ --header '{"ip_address":"CIDR","description":"STRING","severity":"STRING"}'
Añadir filas
$ secops data-table add-rows \ --name "suspicious_ips" \ --rows '[["192.168.1.100","Scanning activity","Medium"]]'
List Rows
$ secops data-table list-rows --name "suspicious_ips"
Eliminar tabla de datos
$ secops data-table delete --name "suspicious_ips"
Listas de referencias
Las listas de referencia son listas de valores sencillas para las reglas de detección:
Crear lista de referencias
$ secops reference-list create \ --name "admin_accounts" \ --description "Administrative accounts" \ --entries "admin,administrator,root,superuser"
Actualizar lista de referencias
$ secops reference-list update \ --name "admin_accounts" \ --entries "admin,administrator,root,superuser,sysadmin"
Mostrar listas de referencias
$ secops reference-list list
Exportación de datos
Exportar datos para analizarlos:
Crear exportación
# 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
Comprobar el estado de la exportación
$ secops export status --id "export-123"
Cancelar exportación
$ secops export cancel --id "export-123"
List Available Log Types for Export
$ secops export log-types --time-window 24
Integración de la IA de Gemini
Consulta a la IA de Gemini para obtener información valiosa sobre seguridad:
# 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"
Habilita Gemini:
$ secops gemini --opt-in
Gestión de paneles de control
Gestionar paneles de control nativos:
Crear panel
$ secops dashboard create \ --display-name "Security Overview" \ --description "Security monitoring dashboard" \ --access-type PRIVATE
Mostrar paneles
$ secops dashboard list --page-size 10
Actualizar panel
$ secops dashboard update --id dashboard-id \ --display-name "Updated Security Dashboard" \ --description "Updated security monitoring dashboard"
Exportar o importar un panel de control
# 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
Añadir gráfico al panel de control
$ 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}'
Eliminar panel
$ secops dashboard delete --id dashboard-id
Ejemplos avanzados
Completar el flujo de trabajo del analizador
Recupera, prueba e implementa un analizador:
# 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"
Flujo de trabajo de búsqueda y exportación
Buscar eventos y 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 done
Pruebas e implementación de reglas
Para crear, probar y desplegar una regla de detección, sigue estos pasos:
# 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
Solución de problemas
Incidencias frecuentes
Errores de autenticación
Si se producen errores de autenticación:
- Verificar que tus credenciales sean válidas
- Comprueba que tu cuenta de servicio tenga los permisos necesarios
- Asegúrate de que ADC esté configurado correctamente:
gcloud auth application-default login
Errores de región
Si recibes errores relacionados con la región:
- Verificar que la región es compatible
- Comprueba que tu instancia esté en la región especificada
- Usa la marca
--region
o configúrala
Límite de frecuencia
Si tienes problemas con el límite de frecuencia:
- Reducir la frecuencia de las llamadas a la API
- Usar la paginación en conjuntos de resultados de gran tamaño
- Implementar un tiempo de espera exponencial para los reintentos
Obtener ayuda
Ver la ayuda de cualquier comando:
$ secops --help $ secops search --help $ secops rule create --help
Migración desde chronicle_cli
Si vas a migrar desde la versión antigua de chronicle_cli
, aquí tienes una asignación de los comandos habituales:
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 |
La nueva CLI de secops
ofrece muchas funciones adicionales que no están disponibles en chronicle_cli
, como las siguientes:
- Búsqueda en lenguaje natural
- Integración de la IA de Gemini
- Gestión del panel de control
- Pruebas y validación de reglas
- Tablas de datos y listas de referencia
- Gestión de casos
- Y mucho más
Otros recursos
- Repositorio de GitHub del SDK de SecOps
- Documentación de la API de Google Security Operations
- Referencia de campos de UDM
- Referencia del lenguaje YARA-L 2.0