Recoger registros de Atlassian Bitbucket
Información general
Este analizador extrae campos de los registros JSON de Atlassian Bitbucket y los asigna al UDM. Gestiona varios formatos de registro y rellena las entidades principales o de destino en función de los campos disponibles, como las direcciones IP, los IDs de usuario y la información de los recursos. También clasifica los eventos en función de la actividad de la red y de los usuarios, y enriquece los datos con resultados de seguridad, si los hay. El analizador da prioridad a agentRealtimeInfo
sobre agentDetectionInfo
al rellenar los campos.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso privilegiado a un repositorio.
Configurar feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduzca un nombre para el feed (por ejemplo, Registros de Atlassian Bitbucket).
- Selecciona Webhook como Tipo de fuente.
- Seleccione Atlassian Bitbucket como Tipo de registro.
- Haz clic en Siguiente.
- Opcional: especifica los valores de los siguientes parámetros de entrada:
- Delimitador de división: el delimitador que se usa para separar las líneas de registro, como
\n
. - Espacio de nombres de recursos: el espacio de nombres de recursos.
- Etiquetas de ingestión: la etiqueta aplicada a los eventos de este feed.
- Delimitador de división: el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
- Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
- Copia y guarda la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes volver a generar una clave secreta, pero esta acción hará que la clave secreta anterior quede obsoleta.
- En la pestaña Detalles, copie la URL del endpoint del feed del campo Información del endpoint. Debes especificar esta URL de endpoint en tu aplicación cliente.
- Haz clic en Listo.
Crear una clave de API para la feed de webhook
Ve a la Google Cloud consola > Credenciales.
Haz clic en Crear credenciales y, a continuación, selecciona Clave de API.
Restringe el acceso de la clave de API a la API Google Security Operations.
Especificar la URL del endpoint
- En tu aplicación cliente, especifica la URL del endpoint HTTPS proporcionada en el feed de webhook.
Para habilitar la autenticación, especifica la clave de API y la clave secreta como parte del encabezado personalizado con el siguiente formato:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Recomendación: Especifica la clave de API como encabezado en lugar de hacerlo en la URL. Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta mediante parámetros de consulta con el siguiente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Haz los cambios siguientes:
ENDPOINT_URL
: URL del endpoint del feed.API_KEY
: la clave de API para autenticarte en Google Security Operations.SECRET
: la clave secreta que has generado para autenticar el feed.
Crear un webhook en Atlassian Bitbucket
- En Bitbucket, ve a los ajustes del repositorio.
- En Flujo de trabajo, haz clic en Webhooks.
- Haz clic en Añadir webhook.
- Configure los siguientes campos:
- Título: proporciona un nombre descriptivo (por ejemplo, Google SecOps).
- URL: introduce la URL del endpoint de la API de Google SecOps.
- Estado: Activo.
- Activadores: selecciona los eventos pertinentes.
- Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
agentComputerName |
principal.hostname |
Se ha rellenado a partir de agentRealtimeInfo.agentComputerName . |
agentDetectionInfo.accountId |
metadata.product_deployment_id |
Se ha convertido en una cadena. Se usa si no se incluye agentRealtimeInfo.accountId . |
agentDetectionInfo.accountName |
metadata.product_name |
Se usa si no se incluye agentRealtimeInfo.accountName . |
agentDetectionInfo.agentDomain |
principal.administrative_domain |
Asignación directa. |
agentDetectionInfo.agentIpV4 |
target.ip |
Se extrae de una matriz JSON y se combina en el campo target.ip . |
agentDetectionInfo.agentIpV6 |
principal.ip |
Se extrae de una matriz JSON y se combina en el campo principal.ip . |
agentDetectionInfo.agentLastLoggedInUserName |
principal.user.userid |
Se analiza para extraer el ID de usuario y el dominio (si está presente). Si no hay ningún dominio, se asigna directamente a principal.user.userid . |
agentDetectionInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Se usa si no se incluye agentRealtimeInfo.agentOsName . |
agentDetectionInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Se usa si no se incluye agentRealtimeInfo.agentOsRevision . |
agentDetectionInfo.agentRegisteredAt |
principal.asset.first_discover_time |
Se analiza como una marca de tiempo ISO8601. |
agentDetectionInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Se usa si no se incluye agentRealtimeInfo.agentUuid . Tiene el prefijo "agentUuid:". |
agentDetectionInfo.agentVersion |
metadata.product_version |
Se usa si no se incluye agentRealtimeInfo.agentVersion . |
agentDetectionInfo.externalIp |
target.ip |
Asignación directa. |
agentDetectionInfo.groupId |
principal.user.group_identifiers |
Se combina en el campo si no está vacío o no contiene "-". Se usa si no se incluye agentRealtimeInfo.groupId . |
agentDetectionInfo.groupName |
principal.group.group_display_name |
Se usa si no se incluye agentRealtimeInfo.groupName . |
agentDetectionInfo.siteId |
additional.fields |
Se ha añadido como un par clave-valor con la clave "agentDetectionInfo.siteId". Se usa si no se incluye agentRealtimeInfo.siteId . |
agentDetectionInfo.siteName |
additional.fields |
Se añade como un par clave-valor con la clave "agentDetectionInfo.siteName". Se usa si no se incluye agentRealtimeInfo.siteName . |
agentRealtimeInfo.accountId |
metadata.product_deployment_id |
Se ha convertido en una cadena. |
agentRealtimeInfo.accountName |
metadata.product_name |
Asignación directa. |
agentRealtimeInfo.agentComputerName |
principal.hostname , principal.asset.hostname |
Asignación directa. |
agentRealtimeInfo.agentId |
principal.asset_id , principal.asset.asset_id |
Tiene el prefijo "agentId:". |
agentRealtimeInfo.agentMachineType |
principal.asset.category |
Asignación directa. |
agentRealtimeInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Asignación directa. |
agentRealtimeInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Asignación directa. |
agentRealtimeInfo.agentOsType |
principal.asset.platform_software.platform , principal.platform |
Se asigna a WINDOWS, MAC o LINUX en función del valor. |
agentRealtimeInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Asignación directa. Tiene el prefijo "agentUuid:". |
agentRealtimeInfo.agentVersion |
metadata.product_version |
Asignación directa. |
agentRealtimeInfo.groupId |
principal.user.group_identifiers |
Se combina en el campo si no está vacío o contiene "-". |
agentRealtimeInfo.groupName |
principal.group.group_display_name |
Asignación directa. |
agentRealtimeInfo.siteId |
additional.fields |
Se ha añadido como un par clave-valor con la clave "agentDetectionInfo.siteId". |
agentRealtimeInfo.siteName |
additional.fields |
Se añade como un par clave-valor con la clave "agentDetectionInfo.siteName". |
associatedItems.0.id |
principal.resource.id |
Asignación directa. |
associatedItems.0.name |
principal.resource.name |
Asignación directa. |
associatedItems.0.typeName |
principal.resource.resource_subtype |
Asignación directa. |
authorAccountId |
principal.user.userid |
Asignación directa. |
category |
metadata.product_event_type |
Asignación directa. Si no está presente y el mensaje contiene "amenazas", se asigna el valor "Amenazas". |
id |
metadata.product_log_id |
Se ha convertido en una cadena. |
indicators.0.description |
security_result.description |
Asignación directa. |
objectItem.id |
additional.fields |
Se añade como un par clave-valor con la clave "objectItem.id". |
objectItem.name |
additional.fields |
Se añade como un par clave-valor con la clave "objectItem.name". |
objectItem.typeName |
additional.fields |
Se ha añadido como un par clave-valor con la clave "objectItem.typeName". |
remoteAddress |
principal.ip |
Asignación directa. |
summary |
security_result.summary |
Asignación directa. |
threatInfo.classification |
security_result.category_details |
Asignación directa. También se usa para determinar security_result.category . |
threatInfo.collectionId |
metadata.ingestion_labels |
Se añade como un par clave-valor con la clave "alert_aggregation_value". |
threatInfo.confidenceLevel |
security_result.confidence_details |
Asignación directa. También se usa para determinar security_result.confidence . |
threatInfo.createdAt |
metadata.collected_timestamp |
Se analiza como una marca de tiempo ISO8601. |
threatInfo.detectionEngines |
metadata.ingestion_labels |
Los elementos key y title se añaden como pares clave-valor. |
threatInfo.fileExtensionType |
target.process.file.mime_type |
Asignación directa. |
threatInfo.filePath |
target.file.full_path |
Asignación directa. |
threatInfo.fileSize |
target.file.size |
Se convierte en una cadena y, después, en un número entero sin signo. |
threatInfo.identifiedAt |
event_timestamp |
Se analiza como una marca de tiempo ISO8601. |
threatInfo.maliciousProcessArguments |
principal.process.command_line |
Asignación directa. También se usa en el campo security_result.summary si no se incluye summary . |
threatInfo.md5 |
target.file.md5 |
Asignación directa. |
threatInfo.originatorProcess |
target.process.parent_process.file.full_path |
Asignación directa. También se usa en el campo security_result.summary si no se incluye summary . |
threatInfo.processUser |
target.user.userid |
Asignación directa. |
threatInfo.sha1 |
target.file.sha1 |
Asignación directa. |
threatInfo.sha256 |
target.file.sha256 |
Asignación directa. |
threatInfo.storyline |
principal.process.product_specific_process_id |
Tiene el prefijo "ID:". |
threatInfo.threatId |
security_result.threat_id |
Asignación directa. |
threatInfo.threatName |
security_result.threat_name , target.file.names |
Se ha asignado directamente y se ha combinado en target.file.names . También se usa en el campo security_result.summary si no se incluye summary . Se define como "GENERIC_EVENT" inicialmente. Se ha cambiado a "NETWORK_UNCATEGORIZED", "STATUS_UPDATE" o "USER_UNCATEGORIZED" en función de la presencia de la IP, el nombre de host o el usuario principal y de destino. Copiado del campo event.type . Selecciona "Atlassian Bitbucket". Inicialmente, se establece en "Atlassian Bitbucket". Se puede anular con agentRealtimeInfo.accountName o agentDetectionInfo.accountName . |
timestamp |
metadata.event_timestamp , timestamp |
Asignación directa. |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.