Recoger registros de Atlassian Bitbucket

Disponible en:

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:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, introduzca un nombre para el feed (por ejemplo, Registros de Atlassian Bitbucket).
  5. Selecciona Webhook como Tipo de fuente.
  6. Seleccione Atlassian Bitbucket como Tipo de registro.
  7. Haz clic en Siguiente.
  8. 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.
  9. Haz clic en Siguiente.
  10. Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
  11. Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
  12. 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.
  13. 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.
  14. Haz clic en Listo.

Crear una clave de API para la feed de webhook

  1. Ve a la Google Cloud consola > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y, a continuación, selecciona Clave de API.

  3. Restringe el acceso de la clave de API a la API Google Security Operations.

Especificar la URL del endpoint

  1. En tu aplicación cliente, especifica la URL del endpoint HTTPS proporcionada en el feed de webhook.
  2. 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

  1. En Bitbucket, ve a los ajustes del repositorio.
  2. En Flujo de trabajo, haz clic en Webhooks.
  3. Haz clic en Añadir webhook.
  4. 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.
  5. 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.