Collecter les journaux Atlassian Bitbucket

Compatible avec:

Présentation

Cet analyseur extrait des champs des journaux JSON Atlassian Bitbucket et les met en correspondance avec l'UDM. Il gère différents formats de journaux, renseigne les entités principales ou cibles en fonction des champs disponibles, tels que les adresses IP, les ID utilisateur et les informations sur les composants. Il catégorise également les événements en fonction de l'activité du réseau et des utilisateurs, et enrichit les données avec les résultats de sécurité, le cas échéant. L'analyseur donne la priorité à agentRealtimeInfo par rapport à agentDetectionInfo lors du remplissage des champs.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à un dépôt.

Configurer un flux dans Google SecOps pour ingérer les journaux Atlassian Bitbucket

  1. Accédez à Paramètres du SIEM > Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Atlassian Bitbucket).
  4. Sélectionnez Webhook comme type de source.
  5. Sélectionnez Atlassian Bitbucket comme Type de journal.
  6. Cliquez sur Suivant.
  7. Facultatif: spécifiez des valeurs pour les paramètres d'entrée suivants :
    • Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple \n.
    • Espace de noms des éléments: espace de noms des éléments.
    • Libellés d'ingestion: libellé appliqué aux événements de ce flux.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.
  10. Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
  11. Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais cette action rend l'ancienne clé secrète obsolète.
  12. Dans l'onglet Détails, copiez l'URL du point de terminaison du flux dans le champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
  13. Cliquez sur OK.

Créer une clé API pour le flux webhook

  1. Accédez à la console Google Cloud > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API.

  3. Limitez l'accès de la clé API à l'API Google Security Operations.

Spécifier l'URL du point de terminaison

  1. Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
  2. Activez l'authentification en spécifiant la clé API et la clé secrète dans l'en-tête personnalisé au format suivant:

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

    Recommandation: Spécifiez la clé API en tant qu'en-tête plutôt que dans l'URL. Si votre client webhook n'est pas compatible avec les en-têtes personnalisés, vous pouvez spécifier la clé API et la clé secrète à l'aide de paramètres de requête au format suivant:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Remplacez les éléments suivants :

  • ENDPOINT_URL: URL du point de terminaison du flux.
  • API_KEY: clé API permettant de s'authentifier auprès de Google Security Operations.
  • SECRET: clé secrète que vous avez générée pour authentifier le flux.

Créer un webhook dans Atlassian Bitbucket

  1. Dans Bitbucket, accédez aux paramètres du dépôt.
  2. Cliquez sur Webhooks sous Workflow (Workflow).
  3. Cliquez sur Add webhook (Ajouter un Webhook).
  4. Configurez les champs suivants :
    • Titre: indiquez un nom descriptif (par exemple, Google SecOps).
    • URL: saisissez l'URL du point de terminaison de l'API Google SecOps.
    • État: définissez-le sur Actif.
    • Déclencheurs: sélectionnez les événements pertinents.
  5. Cliquez sur Enregistrer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
agentComputerName principal.hostname Renseigné à partir de agentRealtimeInfo.agentComputerName.
agentDetectionInfo.accountId metadata.product_deployment_id Converti en chaîne. Utilisé si agentRealtimeInfo.accountId n'est pas présent.
agentDetectionInfo.accountName metadata.product_name Utilisé si agentRealtimeInfo.accountName n'est pas présent.
agentDetectionInfo.agentDomain principal.administrative_domain Mappage direct.
agentDetectionInfo.agentIpV4 target.ip Extrait du tableau JSON et fusionné dans le champ target.ip.
agentDetectionInfo.agentIpV6 principal.ip Extrait du tableau JSON et fusionné dans le champ principal.ip.
agentDetectionInfo.agentLastLoggedInUserName principal.user.userid Analyse pour extraire l'ID utilisateur et le domaine (le cas échéant). En l'absence de domaine, mappé directement sur principal.user.userid.
agentDetectionInfo.agentOsName principal.platform_version, principal.asset.platform_software.platform_version Utilisé si agentRealtimeInfo.agentOsName n'est pas présent.
agentDetectionInfo.agentOsRevision principal.platform_patch_level, principal.asset.platform_software.platform_patch_level Utilisé si agentRealtimeInfo.agentOsRevision n'est pas présent.
agentDetectionInfo.agentRegisteredAt principal.asset.first_discover_time Analyse en tant que code temporel ISO8601.
agentDetectionInfo.agentUuid principal.asset_id, principal.asset.asset_id Utilisé si agentRealtimeInfo.agentUuid n'est pas présent. Préfixé par "agentUuid:".
agentDetectionInfo.agentVersion metadata.product_version Utilisé si agentRealtimeInfo.agentVersion n'est pas présent.
agentDetectionInfo.externalIp target.ip Mappage direct.
agentDetectionInfo.groupId principal.user.group_identifiers Fusionné dans le champ s'il n'est pas vide ou ne correspond pas à "-". Utilisé si agentRealtimeInfo.groupId n'est pas présent.
agentDetectionInfo.groupName principal.group.group_display_name Utilisé si agentRealtimeInfo.groupName n'est pas présent.
agentDetectionInfo.siteId additional.fields Ajouté en tant que paire clé-valeur avec la clé "agentDetectionInfo.siteId". Utilisé si agentRealtimeInfo.siteId n'est pas présent.
agentDetectionInfo.siteName additional.fields Ajouté en tant que paire clé-valeur avec la clé "agentDetectionInfo.siteName". Utilisé si agentRealtimeInfo.siteName n'est pas présent.
agentRealtimeInfo.accountId metadata.product_deployment_id Converti en chaîne.
agentRealtimeInfo.accountName metadata.product_name Mappage direct.
agentRealtimeInfo.agentComputerName principal.hostname, principal.asset.hostname Mappage direct.
agentRealtimeInfo.agentId principal.asset_id, principal.asset.asset_id Préfixé par "agentId:".
agentRealtimeInfo.agentMachineType principal.asset.category Mappage direct.
agentRealtimeInfo.agentOsName principal.platform_version, principal.asset.platform_software.platform_version Mappage direct.
agentRealtimeInfo.agentOsRevision principal.platform_patch_level, principal.asset.platform_software.platform_patch_level Mappage direct.
agentRealtimeInfo.agentOsType principal.asset.platform_software.platform, principal.platform Mappé sur WINDOWS, MAC ou LINUX en fonction de la valeur.
agentRealtimeInfo.agentUuid principal.asset_id, principal.asset.asset_id Mappage direct. Préfixé par "agentUuid:".
agentRealtimeInfo.agentVersion metadata.product_version Mappage direct.
agentRealtimeInfo.groupId principal.user.group_identifiers Fusionné dans le champ s'il n'est pas vide ou s'il contient "-".
agentRealtimeInfo.groupName principal.group.group_display_name Mappage direct.
agentRealtimeInfo.siteId additional.fields Ajouté en tant que paire clé-valeur avec la clé "agentDetectionInfo.siteId".
agentRealtimeInfo.siteName additional.fields Ajouté en tant que paire clé-valeur avec la clé "agentDetectionInfo.siteName".
associatedItems.0.id principal.resource.id Mappage direct.
associatedItems.0.name principal.resource.name Mappage direct.
associatedItems.0.typeName principal.resource.resource_subtype Mappage direct.
authorAccountId principal.user.userid Mappage direct.
category metadata.product_event_type Mappage direct. Si elle n'est pas présente et que le message contient "menaces", définissez-la sur "Menaces".
id metadata.product_log_id Converti en chaîne.
indicators.0.description security_result.description Mappage direct.
objectItem.id additional.fields Ajouté en tant que paire clé-valeur avec la clé "objectItem.id".
objectItem.name additional.fields Ajouté en tant que paire clé-valeur avec la clé "objectItem.name".
objectItem.typeName additional.fields Ajouté en tant que paire clé-valeur avec la clé "objectItem.typeName".
remoteAddress principal.ip Mappage direct.
summary security_result.summary Mappage direct.
threatInfo.classification security_result.category_details Mappage direct. Utilisé également pour déterminer security_result.category.
threatInfo.collectionId metadata.ingestion_labels Ajouté en tant que paire clé-valeur avec la clé "alert_aggregation_value".
threatInfo.confidenceLevel security_result.confidence_details Mappage direct. Utilisé également pour déterminer security_result.confidence.
threatInfo.createdAt metadata.collected_timestamp Analysé en tant que code temporel ISO 8601.
threatInfo.detectionEngines metadata.ingestion_labels Les key et title de chaque élément sont ajoutés sous forme de paires clé-valeur.
threatInfo.fileExtensionType target.process.file.mime_type Mappage direct.
threatInfo.filePath target.file.full_path Mappage direct.
threatInfo.fileSize target.file.size Converti en chaîne, puis en entier sans signature.
threatInfo.identifiedAt event_timestamp Analyse en tant que code temporel ISO8601.
threatInfo.maliciousProcessArguments principal.process.command_line Mappage direct. Utilisé également dans le champ security_result.summary si summary n'est pas présent.
threatInfo.md5 target.file.md5 Mappage direct.
threatInfo.originatorProcess target.process.parent_process.file.full_path Mappage direct. Utilisé également dans le champ security_result.summary si summary n'est pas présent.
threatInfo.processUser target.user.userid Mappage direct.
threatInfo.sha1 target.file.sha1 Mappage direct.
threatInfo.sha256 target.file.sha256 Mappage direct.
threatInfo.storyline principal.process.product_specific_process_id Préfixé par "ID:".
threatInfo.threatId security_result.threat_id Mappage direct.
threatInfo.threatName security_result.threat_name, target.file.names Mappage direct et fusion dans target.file.names. Utilisé également dans le champ security_result.summary si summary n'est pas présent. Définissez-le initialement sur "GENERIC_EVENT". Remplacement par "NETWORK_UNCATEGORIZED", "STATUS_UPDATE" ou "USER_UNCATEGORIZED" en fonction de la présence d'un principal et d'une adresse IP/d'un nom d'hôte/d'un utilisateur cibles. Copié à partir du champ event.type. Définissez-le sur "Atlassian Bitbucket". Définissez-le initialement sur "Atlassian Bitbucket". Peut être remplacé par agentRealtimeInfo.accountName ou agentDetectionInfo.accountName.
timestamp metadata.event_timestamp, timestamp Mappage direct.

Modifications

2023-06-12

  • Analyseur nouvellement créé.