Recopila registros de Atlassian Bitbucket

Se admite en los siguientes países:

Descripción general

Este analizador extrae campos de los registros JSON de Atlassian Bitbucket y los asigna a la UDM. Controla varios formatos de registro, propaga entidades principales o de destino según los campos disponibles, como direcciones IP, IDs de usuario y la información de los recursos. También clasifica los eventos según la actividad de la red y del usuario, y enriquece los datos con los hallazgos de seguridad, si los hay. El analizador prioriza agentRealtimeInfo sobre agentDetectionInfo cuando propaga campos.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener acceso con privilegios a un repositorio.

Configura un feed en Google SecOps para transferir los registros de Bitbucket de Atlassian

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Bitbucket de Atlassian).
  4. Selecciona Webhook como el Tipo de origen.
  5. Selecciona Atlassian Bitbucket como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Opcional: Especifica valores para los siguientes parámetros de entrada:
    • Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como \n.
    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.
    • Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
  10. Haz clic en Generate Secret Key para generar una clave secreta que autentique este feed.
  11. Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes volver a generar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
  12. En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
  13. Haz clic en Listo.

Crea una clave de API para el feed de webhook

  1. Ve a consola de Google Cloud > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y selecciona Clave de API.

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

Especifica la URL del extremo

  1. En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona 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 en el siguiente formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendación: Especifica la clave de API como un 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 con parámetros de consulta en el siguiente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Reemplaza lo siguiente:

  • ENDPOINT_URL: Es la URL del extremo del feed.
  • API_KEY: Es la clave de API para autenticarse en Google Security Operations.
  • SECRET: Es la clave secreta que generaste para autenticar el feed.

Crea un webhook en Atlassian Bitbucket

  1. En Bitbucket, ve a la configuración del repositorio.
  2. Haz clic en Webhooks en Flujo de trabajo.
  3. Haz clic en Add webhook (Agregar webhook).
  4. Configura los siguientes campos:
    • Título: Proporciona un nombre descriptivo (por ejemplo, Google SecOps).
    • URL: Ingresa la URL del extremo de API de Google SecOps.
    • Estado: Establece la opción como Activo.
    • Activadores: Selecciona los eventos relevantes.
  5. Haz clic en Guardar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
agentComputerName principal.hostname Se propaga desde agentRealtimeInfo.agentComputerName.
agentDetectionInfo.accountId metadata.product_deployment_id Se convirtió en una cadena. Se usa si agentRealtimeInfo.accountId no está presente.
agentDetectionInfo.accountName metadata.product_name Se usa si agentRealtimeInfo.accountName no está presente.
agentDetectionInfo.agentDomain principal.administrative_domain Se asignan directamente.
agentDetectionInfo.agentIpV4 target.ip Se extrae del array JSON y se combina en el campo target.ip.
agentDetectionInfo.agentIpV6 principal.ip Se extrae del array 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 un dominio, se asigna directamente a principal.user.userid.
agentDetectionInfo.agentOsName principal.platform_version, principal.asset.platform_software.platform_version Se usa si agentRealtimeInfo.agentOsName no está presente.
agentDetectionInfo.agentOsRevision principal.platform_patch_level, principal.asset.platform_software.platform_patch_level Se usa si agentRealtimeInfo.agentOsRevision no está presente.
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 agentRealtimeInfo.agentUuid no está presente. Tiene el prefijo "agentUuid:".
agentDetectionInfo.agentVersion metadata.product_version Se usa si agentRealtimeInfo.agentVersion no está presente.
agentDetectionInfo.externalIp target.ip Se asignan directamente.
agentDetectionInfo.groupId principal.user.group_identifiers Se une al campo si no está vacío o si es “-”. Se usa si no hay agentRealtimeInfo.groupId.
agentDetectionInfo.groupName principal.group.group_display_name Se usa si agentRealtimeInfo.groupName no está presente.
agentDetectionInfo.siteId additional.fields Se agregó como un par clave-valor con la clave "agentDetectionInfo.siteId". Se usa si agentRealtimeInfo.siteId no está presente.
agentDetectionInfo.siteName additional.fields Se agregó como un par clave-valor con la clave "agentDetectionInfo.siteName". Se usa si agentRealtimeInfo.siteName no está presente.
agentRealtimeInfo.accountId metadata.product_deployment_id Se convirtió en una cadena.
agentRealtimeInfo.accountName metadata.product_name Se asignan directamente.
agentRealtimeInfo.agentComputerName principal.hostname, principal.asset.hostname Se asignan directamente.
agentRealtimeInfo.agentId principal.asset_id, principal.asset.asset_id Tiene el prefijo "agentId:".
agentRealtimeInfo.agentMachineType principal.asset.category Se asignan directamente.
agentRealtimeInfo.agentOsName principal.platform_version, principal.asset.platform_software.platform_version Se asignan directamente.
agentRealtimeInfo.agentOsRevision principal.platform_patch_level, principal.asset.platform_software.platform_patch_level Se asignan directamente.
agentRealtimeInfo.agentOsType principal.asset.platform_software.platform, principal.platform Se asigna a WINDOWS, MAC o LINUX según el valor.
agentRealtimeInfo.agentUuid principal.asset_id, principal.asset.asset_id Se asignan directamente. Tiene el prefijo "agentUuid:".
agentRealtimeInfo.agentVersion metadata.product_version Se asignan directamente.
agentRealtimeInfo.groupId principal.user.group_identifiers Se fusiona en el campo si no está vacío o si es “-”.
agentRealtimeInfo.groupName principal.group.group_display_name Se asignan directamente.
agentRealtimeInfo.siteId additional.fields Se agregó como un par clave-valor con la clave "agentDetectionInfo.siteId".
agentRealtimeInfo.siteName additional.fields Se agregó como un par clave-valor con la clave "agentDetectionInfo.siteName".
associatedItems.0.id principal.resource.id Se asignan directamente.
associatedItems.0.name principal.resource.name Se asignan directamente.
associatedItems.0.typeName principal.resource.resource_subtype Se asignan directamente.
authorAccountId principal.user.userid Se asignan directamente.
category metadata.product_event_type Se asignan directamente. Si no está presente y el mensaje contiene "amenazas", configúralo como "Amenazas".
id metadata.product_log_id Se convirtió en una cadena.
indicators.0.description security_result.description Se asignan directamente.
objectItem.id additional.fields Se agregó como un par clave-valor con la clave "objectItem.id".
objectItem.name additional.fields Se agregó como un par clave-valor con la clave "objectItem.name".
objectItem.typeName additional.fields Se agregó como un par clave-valor con la clave "objectItem.typeName".
remoteAddress principal.ip Se asignan directamente.
summary security_result.summary Se asignan directamente.
threatInfo.classification security_result.category_details Se asignan directamente. También se usa para determinar security_result.category.
threatInfo.collectionId metadata.ingestion_labels Se agregó como un par clave-valor con la clave "alert_aggregation_value".
threatInfo.confidenceLevel security_result.confidence_details Se asignan directamente. 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 key y title de cada elemento se agregan como pares clave-valor.
threatInfo.fileExtensionType target.process.file.mime_type Se asignan directamente.
threatInfo.filePath target.file.full_path Se asignan directamente.
threatInfo.fileSize target.file.size Se convierte en una cadena y, luego, en un número entero sin firmar.
threatInfo.identifiedAt event_timestamp Se analiza como una marca de tiempo ISO8601.
threatInfo.maliciousProcessArguments principal.process.command_line Se asignan directamente. También se usa en el campo security_result.summary si no está presente summary.
threatInfo.md5 target.file.md5 Se asignan directamente.
threatInfo.originatorProcess target.process.parent_process.file.full_path Se asignan directamente. También se usa en el campo security_result.summary si no está presente summary.
threatInfo.processUser target.user.userid Se asignan directamente.
threatInfo.sha1 target.file.sha1 Se asignan directamente.
threatInfo.sha256 target.file.sha256 Se asignan directamente.
threatInfo.storyline principal.process.product_specific_process_id Debe tener el prefijo “ID:”.
threatInfo.threatId security_result.threat_id Se asignan directamente.
threatInfo.threatName security_result.threat_name, target.file.names Se asignan directamente y se combinan en target.file.names. También se usa en el campo security_result.summary si no está presente summary. Inicialmente, se establece en "GENERIC_EVENT". Se cambió a "NETWORK_UNCATEGORIZED", "STATUS_UPDATE" o "USER_UNCATEGORIZED" según la presencia de la IP, el nombre de host o el usuario principal y de destino. Se copió del campo event.type. Establece la opción en "Atlassian Bitbucket". Inicialmente, se establece en "Atlassian Bitbucket". Se puede anular con agentRealtimeInfo.accountName o agentDetectionInfo.accountName.
timestamp metadata.event_timestamp, timestamp Se asignan directamente.

Cambios

12-06-2023

  • Sin embargo, el analizador se creó recientemente.