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 keyytitlese 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.summarysi no se incluyesummary. | 
| 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.summarysi no se incluyesummary. | 
| 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 camposecurity_result.summarysi no se incluyesummary. 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 campoevent.type. Selecciona "Atlassian Bitbucket". Inicialmente, se establece en "Atlassian Bitbucket". Se puede anular conagentRealtimeInfo.accountNameoagentDetectionInfo.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.