Recopila registros de Custom Security Data Analytics
En este documento, se explica cómo transferir datos de estadísticas de seguridad personalizadas a Google Security Operations con varios métodos de transferencia. Esta guía es para las fuentes de datos de seguridad personalizadas que no tienen un analizador precompilado ni un tipo de registro.
El análisis de datos de seguridad personalizados abarca la telemetría de seguridad patentada, los registros de aplicaciones personalizados, las herramientas de seguridad internas o cualquier dato relevante para la seguridad de fuentes sin integración nativa de Google SecOps. Puedes transferir estos datos como registros no estructurados y, de manera opcional, normalizarlos con analizadores personalizados.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Fuente de datos de seguridad personalizada capaz de exportar registros en formato JSON, CSV, SYSLOG o en otros formatos estructurados
- Acceso a uno de los siguientes elementos:
- Google Cloud Console (para la creación de claves de API y GCS)
- Consola de AWS (para S3 o Firehose)
- Azure Portal (para Azure Blob Storage)
- Cliente o aplicación HTTP capaz de enviar solicitudes de webhook
- Permisos para crear y administrar feeds en Google SecOps
Elige tu método de transferencia
Las Operaciones de seguridad de Google admiten varios métodos de transferencia para los datos de seguridad personalizados. Selecciona el método que mejor se adapte a las capacidades de tu fuente de datos:
| Método de transferencia | Caso de uso | Latencia | Complejidad de la configuración |
|---|---|---|---|
| Webhook | Notificaciones push en tiempo real desde aplicaciones | Segundos | Baja |
| Amazon S3 V2 | Exportación por lotes a un bucket de S3 | De minutos a horas | Media |
| Google Cloud Storage V2 | Exportación por lotes al bucket de GCS | De minutos a horas | Media |
| Azure Blob Storage V2 | Exportación por lotes a Azure Storage | De minutos a horas | Media |
| Amazon Data Firehose | Transmisión en tiempo real desde AWS | Segundos | Alta |
Opción 1: Transferencia a través de webhook (envío en tiempo real)
Usa este método cuando tu aplicación de seguridad personalizada pueda enviar solicitudes HTTP POST a un extremo externo.
Crea un feed de webhook en Google SecOps
Crea el feed
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
custom-security-analytics-webhook). - Selecciona Webhook como el Tipo de origen.
- Selecciona Custom Security Data Analytics como el Tipo de registro.
- Haz clic en Siguiente.
- Especifica valores para los siguientes parámetros de entrada:
- Delimitador de división: Opcional: Ingresa un delimitador para dividir eventos de varias líneas. Valores comunes:
\n: Delimitador de salto de línea (el más común para NDJSON)- Déjalo vacío si cada solicitud contiene un solo evento.
- Espacio de nombres del recurso: Es el espacio de nombres del recurso.
- Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.
- Delimitador de división: Opcional: Ingresa un delimitador para dividir eventos de varias líneas. Valores comunes:
- Haz clic en Siguiente.
- Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Genera y guarda la clave secreta
Después de crear el feed, debes generar una clave secreta para la autenticación:
- En la página de detalles del feed, haz clic en Generar clave secreta.
- Un diálogo muestra la clave secreta.
Copia y guarda la clave secreta de forma segura.
Obtén la URL del extremo del feed
- Ve a la pestaña Detalles del feed.
- En la sección Endpoint Information, copia la URL del extremo del feed.
El formato de la URL es el siguiente:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateo
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateGuarda esta URL para los próximos pasos.
Haz clic en Listo.
Crea una clave de API de Google Cloud
Google SecOps requiere una clave de API para la autenticación. Crea una clave de API restringida en la Google Cloud Console.
Crea la clave de API
- Ve a la página Credenciales de la consola de Google Cloud.
- Selecciona tu proyecto (el proyecto asociado con tu instancia de Chronicle).
- Haz clic en Crear credenciales > Clave de API.
- Se creará una clave de API y se mostrará en un diálogo.
- Haz clic en Editar clave de API para restringir la clave.
Restringe la clave de API
- En la página de configuración de la clave de API, haz lo siguiente:
- Nombre: Ingresa un nombre descriptivo (por ejemplo,
Chronicle Webhook API Key).
- Nombre: Ingresa un nombre descriptivo (por ejemplo,
- En Restricciones de API, haz lo siguiente:
- Selecciona Restringir clave.
- En el menú desplegable Seleccionar APIs, busca y selecciona Google SecOps API (o Chronicle API).
- Haz clic en Guardar.
- Copia el valor de la clave de API del campo Clave de API en la parte superior de la página.
Guarda la clave de API de forma segura.
Configura tu aplicación personalizada para enviar datos
Configura tu aplicación o secuencia de comandos de seguridad personalizada para enviar solicitudes HTTP POST al extremo del webhook de Chronicle.
Construye la URL del webhook:
Combina la URL del extremo de Chronicle y la clave de API:
<ENDPOINT_URL>?key=<API_KEY>Ejemplo:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
Formato de solicitud HTTP:
Método: POST
URL:
<ENDPOINT_URL>?key=<API_KEY>Encabezados:
Content-Type: application/json x-chronicle-auth: <SECRET_KEY>Cuerpo (evento único):
{ "timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "user": "john.doe@example.com", "action": "login", "result": "success", "source_ip": "203.0.113.45", "custom_field_1": "value1", "custom_field_2": "value2" }Cuerpo (varios eventos con delimitador de salto de línea):
{"timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "action": "login"} {"timestamp": "2025-01-15T10:30:05Z", "event_type": "file_access", "action": "read"} {"timestamp": "2025-01-15T10:30:10Z", "event_type": "authentication", "action": "logout"}
Ejemplos:
Ejemplo: secuencia de comandos de Python:
import requests import json from datetime import datetime # Configuration ENDPOINT_URL = "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate" API_KEY = "your-api-key-here" SECRET_KEY = "your-secret-key-here" # Construct full URL url = f"{ENDPOINT_URL}?key={API_KEY}" # Headers headers = { "Content-Type": "application/json", "x-chronicle-auth": SECRET_KEY } # Sample event event = { "timestamp": datetime.utcnow().isoformat() + "Z", "event_type": "custom_security_event", "severity": "high", "source": "custom_security_tool", "message": "Suspicious activity detected", "user": "admin@example.com", "ip_address": "192.168.1.100" } # Send request response = requests.post(url, headers=headers, data=json.dumps(event)) if response.status_code == 200: print("Event sent successfully") else: print(f"Error: {response.status_code} - {response.text}")Ejemplo: Comando cURL:
curl -X POST \ "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_API_KEY" \ -H "Content-Type: application/json" \ -H "x-chronicle-auth: YOUR_SECRET_KEY" \ -d '{ "timestamp": "2025-01-15T10:30:00Z", "event_type": "security_alert", "severity": "critical", "source": "custom_tool", "message": "Threat detected" }'
Referencia de métodos de autenticación
Los feeds de webhook de Google SecOps admiten varios métodos de autenticación. Elige el método que admite tu aplicación.
Método 1: Encabezados personalizados (recomendado)
Si tu aplicación admite encabezados HTTP personalizados, usa este método para mejorar la seguridad.
Formato de la solicitud:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }Ventajas:
- La clave de API y el secreto no son visibles en la URL.
- Es más seguro porque los encabezados no se registran en los registros de acceso del servidor web.
- Es el método preferido cuando la aplicación lo admite.
Método 2: Parámetros de consulta
Si tu aplicación no admite encabezados personalizados, agrega credenciales a la URL.
Formato de URL:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Ejemplo:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...Formato de la solicitud:
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }Desventajas:
- Las credenciales son visibles en la URL.
- Es posible que las credenciales se registren en los registros de acceso del servidor web.
- Es menos seguro que los encabezados.
Método 3: Híbrido (URL + encabezado)
Algunas configuraciones usan la clave de API en la URL y la clave secreta en el encabezado.
Formato de la solicitud:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Límites y prácticas recomendadas para webhooks
Límites de solicitudes
| Límite | Valor |
|---|---|
| Tamaño máximo de la solicitud | 4 MB |
| QPS máx. (consultas por segundo) | 15,000 |
| Tiempo de espera de la solicitud | 30 segundos |
| Comportamiento de reintento | Automática con retirada exponencial |
Prácticas recomendadas
- Eventos por lotes: Envía varios eventos en una sola solicitud con el formato JSON delimitado por saltos de línea (NDJSON) para reducir la sobrecarga.
- Incluye marcas de tiempo: Siempre incluye un campo de marca de tiempo en formato ISO 8601 para ordenar los eventos con precisión.
- Usa datos estructurados: Envía datos en formato JSON para facilitar el análisis y la extracción de campos.
- Implementa la lógica de reintento: Controla las fallas transitorias con una retirada exponencial.
- Supervisa los códigos de respuesta: Registra y genera alertas sobre las respuestas que no sean 200.
Opción 2: Transferencia de datos de Amazon S3 V2 (exportación por lotes)
Usa este método cuando tu aplicación de seguridad personalizada pueda exportar registros a un bucket de Amazon S3.
Crea un bucket de Amazon S3
- Abre la consola de Amazon S3.
- Haga clic en Crear bucket.
- Proporciona los siguientes detalles de configuración:
- Nombre del bucket: Ingresa un nombre significativo para el bucket (por ejemplo,
custom-security-analytics-logs). - Región: Selecciona tu región de AWS preferida (por ejemplo,
us-east-1).
- Nombre del bucket: Ingresa un nombre significativo para el bucket (por ejemplo,
- Haz clic en Crear.
Crea un usuario de IAM con acceso a S3
- Abre la consola de IAM.
- Haz clic en Usuarios > Agregar usuario.
- Ingresa un nombre de usuario (por ejemplo,
chronicle-s3-reader). - Selecciona Acceso programático.
- Haz clic en Next: Permissions.
- Elige Adjuntar las políticas existentes de forma directa.
- Busca y selecciona AmazonS3FullAccess.
- Haz clic en Siguiente: Etiquetas.
- Haz clic en Siguiente: Revisar.
- Haz clic en Crear usuario.
- Haz clic en Descargar archivo .csv para guardar el ID de clave de acceso y la clave de acceso secreta.
- Haz clic en Cerrar.
Configura tu aplicación para exportar a S3
Configura tu aplicación de seguridad personalizada para escribir archivos de registro en el bucket de S3. La aplicación debe cumplir con los siguientes requisitos:
- Escribe registros en un formato estructurado (JSON, CSV o texto sin formato).
- Usa una convención de nomenclatura de archivos coherente.
- Opcional: Organiza los archivos por fecha (por ejemplo,
logs/2025/01/15/events.json). Escribe archivos completos (evita escrituras parciales).
Ejemplo de estructura de archivos:
s3://custom-security-analytics-logs/ ├── security-events/ │ ├── 2025/01/15/ │ │ ├── events-10-00.json │ │ ├── events-11-00.json │ │ └── events-12-00.jsonEjemplo de formato de archivo de registro (NDJSON):
{"timestamp": "2025-01-15T10:00:00Z", "event_type": "login", "user": "alice@example.com", "result": "success"} {"timestamp": "2025-01-15T10:05:00Z", "event_type": "file_access", "user": "bob@example.com", "file": "/data/sensitive.txt"} {"timestamp": "2025-01-15T10:10:00Z", "event_type": "logout", "user": "alice@example.com"}
Configura el feed de Google SecOps para S3
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
custom-security-analytics-s3). - Selecciona Amazon S3 V2 como el Tipo de fuente.
- Selecciona Custom Security Data Analytics como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
URI de S3: Es el URI del bucket en el formato
s3://custom-security-analytics-logs/security-events/.Opción de borrado de la fuente: Selecciona la opción de borrado según tu preferencia:
- Nunca: Nunca borra ningún archivo después de las transferencias (se recomienda para las pruebas).
- Borrar archivos transferidos: Borra los archivos después de una transferencia exitosa.
- Borrar los archivos transferidos y los directorios vacíos: Borra los archivos y los directorios vacíos después de la transferencia exitosa.
Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días más reciente (el valor predeterminado es 180 días).
ID de clave de acceso: Ingresa la clave de acceso del usuario de IAM.
Clave de acceso secreta: Ingresa la clave secreta del usuario de IAM.
Espacio de nombres del recurso: Es el espacio de nombres del recurso.
Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Opción 3: Ingestión de Google Cloud Storage V2 (exportación por lotes)
Usa este método cuando tu aplicación de seguridad personalizada pueda exportar registros a un bucket de Google Cloud Storage.
Cree depósitos de GCS
- Ve a Google Cloud Console.
- Selecciona tu proyecto o crea uno nuevo.
- En el menú de navegación, ve a Cloud Storage > Buckets.
- Haz clic en Crear bucket.
Proporciona los siguientes detalles de configuración:
Configuración Valor Asigna un nombre a tu bucket Ingresa un nombre global único (por ejemplo, custom-security-analytics-logs).Tipo de ubicación Elige según tus necesidades (región, birregional, multirregional) Ubicación Selecciona la ubicación (por ejemplo, us-central1).Clase de almacenamiento Estándar (recomendado para los registros a los que se accede con frecuencia) Control de acceso Uniforme (recomendado) Herramientas de protección Opcional: Habilita el control de versiones de objetos o la política de retención Haz clic en Crear.
Configura tu aplicación para exportar datos a GCS
Configura tu aplicación de seguridad personalizada para que escriba archivos de registro en el bucket de GCS con uno de los siguientes métodos:
- SDK de Google Cloud: Usa
gsutilo bibliotecas cliente - Cuenta de servicio: Crea una cuenta de servicio con el rol de creador de objetos de almacenamiento
URLs firmadas: Genera URLs firmadas para el acceso de escritura temporal
Ejemplo con gsutil:
gsutil cp /path/to/logs/events.json gs://custom-security-analytics-logs/security-events/Ejemplo con la biblioteca cliente de Python:
from google.cloud import storage import json # Initialize client client = storage.Client() bucket = client.bucket('custom-security-analytics-logs') # Upload log file blob = bucket.blob('security-events/2025/01/15/events.json') # Write NDJSON data events = [ {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"}, {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"} ] ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n' blob.upload_from_string(ndjson_data, content_type='application/x-ndjson')
Obtén la cuenta de servicio de Google SecOps
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- Haz clic en Configura un feed único.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
custom-security-analytics-gcs). - Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona Custom Security Data Analytics como el Tipo de registro.
- Haz clic en Obtener cuenta de servicio.
Se mostrará un correo electrónico único de la cuenta de servicio, por ejemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia esta dirección de correo electrónico para usarla en el siguiente paso.
Otorga permisos de IAM
- Ve a Cloud Storage > Buckets.
- Haz clic en el nombre del bucket.
- Ve a la pestaña Permisos.
- Haz clic en Otorgar acceso.
- Proporciona los siguientes detalles de configuración:
- Agregar principales: Pega el correo electrónico de la cuenta de servicio de Google SecOps.
- Asignar roles: Selecciona Visualizador de objetos de Storage.
Haz clic en Guardar.
Configura el feed de Google SecOps para GCS
- Continúa desde la página de creación de feeds (o ve a Configuración de SIEM > Feeds > Agregar feed nuevo).
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
URL del bucket de almacenamiento: Ingresa el URI del bucket de GCS con la ruta de acceso del prefijo:
gs://custom-security-analytics-logs/security-events/Opción de borrado de la fuente: Selecciona la opción de borrado según tu preferencia:
- Nunca: Nunca borra ningún archivo después de las transferencias (se recomienda para las pruebas).
- Borrar archivos transferidos: Borra los archivos después de una transferencia exitosa.
- Borrar los archivos transferidos y los directorios vacíos: Borra los archivos y los directorios vacíos después de la transferencia exitosa.
Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días más reciente (el valor predeterminado es 180 días).
Espacio de nombres del recurso: Es el espacio de nombres del recurso.
Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Opción 4: Ingestión de Azure Blob Storage V2 (exportación por lotes)
Usa este método cuando tu aplicación de seguridad personalizada pueda exportar registros a Azure Blob Storage.
Crear una cuenta de Azure Storage
- En el portal de Azure, busca Cuentas de almacenamiento.
- Haz clic en + Crear.
Proporciona los siguientes detalles de configuración:
Configuración Valor Suscripción Selecciona tu suscripción a Azure Grupo de recursos Selecciona una existente o crea una nueva Nombre de la cuenta de almacenamiento Ingresa un nombre único (por ejemplo, customsecuritylogs).Región Selecciona la región (por ejemplo, East US).Rendimiento Estándar (recomendado) Redundancia GRS (almacenamiento con redundancia geográfica) o LRS (almacenamiento con redundancia local) Haz clic en Revisar + crear.
Revisa el resumen de la cuenta y haz clic en Crear.
Espera a que se complete la implementación.
Obtén credenciales de la cuenta de almacenamiento
- Ve a la cuenta de almacenamiento que acabas de crear.
- En la navegación de la izquierda, selecciona Claves de acceso en Seguridad y redes.
- Haz clic en Mostrar claves.
- Copia y guarda lo siguiente para usarlo más tarde:
- Nombre de la cuenta de almacenamiento:
customsecuritylogs - Clave 1 o Clave 2: Es la clave de acceso compartido.
- Nombre de la cuenta de almacenamiento:
Crea un contenedor de blobs
- En la misma cuenta de almacenamiento, selecciona Contenedores en la navegación de la izquierda.
- Haz clic en + Contenedor.
- Proporciona los siguientes detalles de configuración:
- Nombre: Ingresa un nombre de contenedor (por ejemplo,
security-events). - Nivel de acceso público: Selecciona Privado (sin acceso anónimo).
- Nombre: Ingresa un nombre de contenedor (por ejemplo,
- Haz clic en Crear.
Configura tu aplicación para exportar a Azure Blob
Configura tu aplicación de seguridad personalizada para escribir archivos de registro en el contenedor de Azure Blob con uno de los siguientes métodos:
- CLI de Azure: Usa
az storage blob upload - SDK de Azure: Usa bibliotecas cliente para tu lenguaje de programación
- AzCopy: Usa la herramienta de línea de comandos de AzCopy
Ejemplos:
Ejemplo con la CLI de Azure:
az storage blob upload \ --account-name customsecuritylogs \ --container-name security-events \ --name logs/2025/01/15/events.json \ --file /path/to/events.json \ --account-key <YOUR_ACCESS_KEY>Ejemplo con el SDK de Python:
from azure.storage.blob import BlobServiceClient import json # Initialize client connection_string = "DefaultEndpointsProtocol=https;AccountName=customsecuritylogs;AccountKey=<YOUR_KEY>;EndpointSuffix=core.windows.net" blob_service_client = BlobServiceClient.from_connection_string(connection_string) # Get container client container_client = blob_service_client.get_container_client("security-events") # Upload log file blob_client = container_client.get_blob_client("logs/2025/01/15/events.json") # Write NDJSON data events = [ {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"}, {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"} ] ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n' blob_client.upload_blob(ndjson_data, overwrite=True)
Configura el feed de Google SecOps para Azure Blob
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
custom-security-analytics-azure). - Selecciona Microsoft Azure Blob Storage V2 como el Tipo de fuente.
- Selecciona Custom Security Data Analytics como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
URI de Azure: Ingresa la URL del extremo del servicio Blob con la ruta de acceso del contenedor:
https://customsecuritylogs.blob.core.windows.net/security-events/Opción de borrado de la fuente: Selecciona la opción de borrado según tu preferencia:
- Nunca: Nunca borra ningún archivo después de las transferencias.
- Borrar archivos transferidos: Borra los archivos después de una transferencia exitosa.
- Borrar los archivos transferidos y los directorios vacíos: Borra los archivos y los directorios vacíos después de la transferencia exitosa.
Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días más reciente (el valor predeterminado es 180 días).
Clave compartida: Ingresa el valor de la clave compartida (clave de acceso) de la cuenta de almacenamiento.
Espacio de nombres del recurso: Es el espacio de nombres del recurso.
Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Opción 5: Transferencia de Amazon Data Firehose (transmisión en tiempo real)
Usa este método cuando tu aplicación de seguridad personalizada escriba registros en Amazon CloudWatch Logs y necesites transmisión en tiempo real a Google SecOps.
Crea un feed de Google SecOps Firehose
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
custom-security-analytics-firehose). - Selecciona Amazon Data Firehose como el Tipo de fuente.
- Selecciona Custom Security Data Analytics como el Tipo de registro.
- Haz clic en Siguiente.
- Especifica valores para los siguientes parámetros de entrada:
- Delimitador de división: Opcional: Ingresa
\npara dividir los registros delimitados por saltos de línea. - Espacio de nombres del recurso: Es el espacio de nombres del recurso.
- Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.
- Delimitador de división: Opcional: Ingresa
- Haz clic en Siguiente.
- Revisa la configuración del feed y haz clic en Enviar.
- Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
- Copia y guarda la clave secreta, ya que no podrás volver a verla.
- Ve a la pestaña Detalles.
- Copia la URL del extremo del feed desde el campo Información del extremo.
- Haz clic en Listo.
Crea una clave de API de Google Cloud
- Ve a la página Credenciales de la consola de Google Cloud en https://console.cloud.google.com/apis/credentials.
- Haz clic en Crear credenciales y selecciona Clave de API.
- Haz clic en Editar clave de API para restringir la clave.
- En Restricciones de API, selecciona Restringir clave.
- Busca y selecciona la API de Google SecOps.
- Haz clic en Guardar.
- Copia y guarda la clave de API.
Construye la URL del extremo
Agrega la clave de API a la URL del extremo del feed con el siguiente formato:
<FEED_ENDPOINT_URL>?key=<API_KEY>Ejemplo:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...Guarda esta URL completa para el siguiente paso.
Crea una política de IAM para Firehose
- En la consola de AWS, ve a IAM > Políticas > Crear política > pestaña JSON.
Pega el siguiente JSON de la política:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/CustomSecurityToChronicle" } ] }Reemplaza lo siguiente:
<REGION>: Tu región de AWS (por ejemplo,us-east-1)<ACCOUNT_ID>: Tu ID de cuenta de AWS (número de 12 dígitos).
Asigna a la política el nombre
CloudWatchLogsToFirehosePolicy.Haz clic en Crear política.
Crea un rol de IAM para CloudWatch Logs
- Ve a IAM > Roles > Crear rol.
Selecciona Política de confianza personalizada y pega lo siguiente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<REGION>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Reemplaza
<REGION>por tu región de AWS.Haz clic en Siguiente.
Busca y selecciona la política
CloudWatchLogsToFirehosePolicyque creaste en el paso anterior.Haz clic en Siguiente.
Asigna el nombre
CloudWatchLogsToFirehoseRoleal rol.Haz clic en Crear rol.
Crea un flujo de entrega de Kinesis Data Firehose
- En la consola de AWS, ve a Kinesis > Data Firehose > Create delivery stream.
Proporciona los siguientes detalles de configuración:
Origen y destino:
- Fuente: Selecciona Carga directa o fuentes externas
- Destino: Selecciona Extremo HTTP.
Nombre del flujo de entrega:
- Nombre del flujo de entrega: Ingresa
CustomSecurityToChronicle.
- Nombre del flujo de entrega: Ingresa
Destino del extremo HTTP:
- URL del extremo HTTP: Ingresa la URL del extremo completa que creaste antes (extremo del feed + clave de API).
- Codificación de contenido: Selecciona GZIP (recomendado para ahorrar ancho de banda).
Encabezados HTTP personalizados:
- Haz clic en Agregar encabezado HTTP personalizado.
- Nombre del encabezado: Ingresa
X-Goog-Chronicle-Auth. - Valor del encabezado: Ingresa la clave secreta que guardaste en un paso anterior.
Configuración de copia de seguridad:
- Copia de seguridad de registros de origen en Amazon S3: Selecciona Solo datos con errores (recomendado).
- Bucket de S3: Selecciona un bucket existente o crea uno nuevo para los registros con errores.
Sugerencias de almacenamiento en búfer:
- Tamaño del búfer: Ingresa
1MiB (mínimo para los extremos HTTP). - Intervalo de búfer: Ingresa
60segundos.
- Tamaño del búfer: Ingresa
Duración del reintento:
- Duración del reintento: Ingresa
300segundos (5 minutos).
- Duración del reintento: Ingresa
Haz clic en Crear flujo de entrega.
Espera a que el estado del flujo de entrega cambie a Activo (de 1 a 2 minutos).
Suscribe el grupo de registros de CloudWatch a Firehose
- En la consola de AWS, ve a CloudWatch > Logs > Log groups.
- Selecciona el grupo de registros de destino que contiene tus registros personalizados de análisis de seguridad.
- Haz clic en la pestaña Filtros de suscripción.
- Haz clic en Crear > Crear filtro de suscripción de Amazon Kinesis Data Firehose.
- Proporciona los siguientes detalles de configuración:
- Destino: Selecciona el flujo de entrega
CustomSecurityToChronicle. - Otorga permiso: Selecciona el rol
CloudWatchLogsToFirehoseRole. - Nombre del filtro de suscripción: Ingresa
CustomSecurityToChronicle. - Formato de registro: Selecciona Otro (Google SecOps se encarga del análisis).
- Patrón de filtro de suscripción: Déjalo vacío para enviar todos los eventos o ingresa un patrón de filtro para enviar solo eventos específicos.
- Destino: Selecciona el flujo de entrega
- Haz clic en Iniciar transmisión.
- Los registros ahora se transmitirán en tiempo real a Google SecOps a través de Firehose.
Crea un analizador personalizado (opcional)
Después de transferir datos de seguridad personalizados como registros no estructurados, puedes crear un analizador personalizado para normalizar los datos en formato de UDM y mejorar la capacidad de búsqueda y detección.
Cuándo crear un analizador personalizado
Crea un analizador personalizado en los siguientes casos:
- Necesitas extraer campos específicos de tu formato de registro personalizado.
- Quieres habilitar la búsqueda en el UDM en tus datos personalizados.
- Debes asignar campos personalizados a campos de UDM estándar para las reglas de detección
- Quieres mejorar el rendimiento de la búsqueda indexando campos específicos
Crea un tipo de registro personalizado
- Ve a Configuración de SIEM > Tipos de registros disponibles.
- Haz clic en Solicitar un tipo de registro.
- En la sección Crea un tipo de registro personalizado o solicita un tipo de registro prediseñado, selecciona Crea un tipo de registro personalizado.
- Proporciona la siguiente información:
- Nombre del tipo de registro: Ingresa un nombre descriptivo (por ejemplo,
CUSTOM_SECURITY_ANALYTICS). - Descripción: Ingresa una descripción del tipo de registro.
- Registros de muestra: Pega entre 5 y 10 entradas de registro de muestra en su formato sin procesar.
- Nombre del tipo de registro: Ingresa un nombre descriptivo (por ejemplo,
- Haz clic en Enviar.
- El tipo de registro personalizado estará disponible en aproximadamente 10 minutos.
Crea un analizador personalizado
- Ve a Configuración de SIEM > Analizadores.
- Haz clic en Crear analizador.
- Selecciona Custom Parser.
- Proporciona la siguiente información:
- Nombre del analizador: Ingresa un nombre descriptivo.
- Tipo de registro: Selecciona tu tipo de registro personalizado (por ejemplo,
CUSTOM_SECURITY_ANALYTICS). - Código del analizador: Ingresa la configuración del analizador con el lenguaje de configuración del analizador de Google SecOps.
- Prueba el analizador con registros de muestra.
- Haz clic en Enviar para activar el analizador.
Ejemplo de configuración del analizador
Para un formato de registro JSON personalizado, haz lo siguiente:
{ "timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "user": "john.doe@example.com", "action": "login", "result": "success", "source_ip": "203.0.113.45" }Ejemplo de configuración del analizador:
filter { json { fields { timestamp: timestamp event_type: event_type user: user action: action result: result source_ip: source_ip } } } event { $e.metadata.event_timestamp.seconds = parseTimestamp(timestamp, "yyyy-MM-dd'T'HH:mm:ss'Z'") $e.metadata.event_type = "USER_LOGIN" $e.principal.user.email_addresses = user $e.target.ip = source_ip $e.security_result.action = if(result == "success", "ALLOW", "BLOCK") }Para obtener más información sobre cómo crear analizadores personalizados, consulta Administra analizadores prediseñados y personalizados.
Verifica la transferencia de datos
Después de configurar tu feed, verifica que los datos se estén transfiriendo correctamente.
Cómo verificar el estado del feed
- Ve a Configuración de SIEM > Feeds.
- Busca tu feed en la lista.
- Verifica la columna Estado:
- Activo: El feed se está ejecutando y transfiriendo datos.
- Error: Se produjo un error en el feed (haz clic para ver los detalles)
- Detenido: El feed está detenido.
Cómo buscar registros transferidos
- Ve a Búsqueda > Análisis de registros sin procesar.
Ingresa una búsqueda para encontrar tus registros personalizados:
metadata.log_type = "CUSTOM_SECURITY_DATA_ANALYTICS"Si es necesario, ajusta el intervalo de tiempo.
Haz clic en Buscar.
Verifica que tus registros aparezcan en los resultados.
Supervisa las métricas del feed
- Ve a Configuración de SIEM > Feeds.
- Haz clic en el nombre de tu feed.
- Ve a la pestaña Métricas.
- Revisa las siguientes métricas:
- Eventos transferidos: Es la cantidad total de eventos transferidos.
- Bytes transferidos: Volumen total de datos transferidos
- Tasa de transferencia: Eventos por segundo
- Errores: Es la cantidad de errores de transferencia.
Soluciona problemas
Problemas de transferencia de datos de webhook
Problema: HTTP 401 Unauthorized
- Causa: Clave de API o clave secreta no válidas
- Solución: Verifica que la clave de API y la clave secreta sean correctas y no hayan vencido.
Problema: HTTP 403 Forbidden
- Causa: La clave de API no tiene permisos para la API de Chronicle
- Solución: Edita la clave de API y asegúrate de que API de Chronicle esté seleccionada en Restricciones de API.
Problema: Solicitud incorrecta (HTTP 400)
- Causa: El formato o la carga útil de la solicitud no son válidos
- Solución: Verifica que el encabezado Content-Type esté establecido en
application/jsony que la carga útil sea un JSON válido.
Problemas de transferencia de S3, GCS o Azure Blob
Problema: No se ingirieron datos
- Causa: URI del bucket incorrecto o falta de permisos
- Solución: Verifica que el URI del bucket incluya la barra final y que la cuenta de servicio tenga el rol de visualizador de objetos de Storage
Problema: Los archivos no se borran después de la transferencia
- Causa: La cuenta de servicio no tiene permisos de eliminación
- Solución: Otorgar el rol de administrador de objetos de almacenamiento en lugar del rol de visualizador de objetos de almacenamiento
Problema: No se transfirieron los archivos antiguos
- Causa: El parámetro de configuración Antigüedad máxima del archivo excluye los archivos antiguos
- Solución: Aumenta el valor de antigüedad máxima del archivo en la configuración del feed
Problemas de transferencia de Firehose
Problema: El feed de entrega muestra errores
- Causa: URL o autenticación del extremo no válidas
- Solución: Verifica que la URL del extremo incluya el parámetro de la clave de API y que el encabezado X-Goog-Chronicle-Auth contenga la clave secreta correcta.
Problema: La métrica de actualización de datos es alta
- Causa: Firehose está limitado o experimenta errores de entrega
- Solución: Verifica las métricas de CloudWatch para las tasas de
ThrottledRecordsyDeliveryToHTTP.Success
Problema: No se transmiten registros desde CloudWatch
- Causa: No se configuró el filtro de suscripción o faltan permisos en el rol de IAM
- Solución: Verifica que el filtro de suscripción esté activo y que el rol de IAM tenga permisos de
firehose:PutRecord.
Tabla de asignación de UDM
Los registros de análisis de datos de seguridad personalizados se transfieren como datos no estructurados. Para habilitar la asignación de campos del UDM, crea un analizador personalizado como se describe en la sección "Crea un analizador personalizado" anterior.
Después de crear un analizador personalizado, los campos de UDM se propagarán según la configuración del analizador. Los campos comunes de UDM para los datos de análisis de seguridad incluyen los siguientes:
| Campo de UDM | Descripción |
|---|---|
metadata.event_timestamp |
Marca de tiempo del evento |
metadata.event_type |
Tipo de evento (por ejemplo, USER_LOGIN, FILE_ACCESS) |
principal.user.email_addresses |
Dirección de correo electrónico del usuario |
principal.ip |
Dirección IP de origen |
target.resource.name |
Nombre del recurso de destino |
security_result.action |
Acción de seguridad (ALLOW, BLOCK, etc.) |
security_result.severity |
Gravedad del evento |
Para obtener una lista completa de los campos del UDM, consulta la referencia de los campos del UDM.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.