Collecter les journaux Atlassian Bitbucket

Compatible avec :

Présentation

Ce parseur extrait les champs des journaux JSON Atlassian Bitbucket et les mappe à l'UDM. Il gère différents formats de journaux et remplit les entités principales ou cibles en fonction des champs disponibles, tels que les adresses IP, les ID utilisateur et les informations sur les ressources. Il catégorise également les événements en fonction de l'activité réseau et utilisateur, et enrichit les données avec les conclusions 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 remplir les conditions préalables suivantes :

  • Instance Google SecOps.
  • Accès privilégié à un dépôt.

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Atlassian Bitbucket).
  5. Sélectionnez Webhook comme type de source.
  6. Sélectionnez Atlassian Bitbucket comme Type de journal.
  7. Cliquez sur Suivant.
  8. Facultatif : spécifiez les valeurs des paramètres d'entrée suivants :
    • Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que \n.
    • Espace de noms de l'élément : espace de noms de l'élément.
    • Libellés d'ingestion : libellé appliqué aux événements de ce flux.
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.
  11. Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
  12. 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 l'ancienne deviendra obsolète.
  13. Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
  14. Cliquez sur OK.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que \n.

Options avancées

  • Espace de noms de l'élément : espace de noms de l'élément.
  • Libellés d'ingestion : libellé appliqué aux événements de ce flux.
  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.

  • Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.

  • 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 l'ancienne deviendra obsolète.

  • Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.

Créer une clé API pour le flux de webhook

  1. Accédez à la consoleGoogle Cloud  > Identifiants.

    Accéder à "Identifiants"

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

  3. Restreignez l'accès à 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 au lieu de la spécifier dans l'URL. Si votre client de webhook n'accepte pas 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 pour 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.
  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éfini sur Actif.
    • Déclencheurs : sélectionnez les événements concernés.
  5. Cliquez sur Enregistrer.

Table 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 Mappé directement.
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 Analysé pour extraire l'ID utilisateur et le domaine (le cas échéant). Si aucun domaine n'est spécifié, le mappage est effectué 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 Analysé 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 Mappé directement.
agentDetectionInfo.groupId principal.user.group_identifiers Fusionné dans le champ s'il n'est pas vide ou s'il contient "-". 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 Mappé directement.
agentRealtimeInfo.agentComputerName principal.hostname, principal.asset.hostname Mappé directement.
agentRealtimeInfo.agentId principal.asset_id, principal.asset.asset_id Préfixé par "agentId:".
agentRealtimeInfo.agentMachineType principal.asset.category Mappé directement.
agentRealtimeInfo.agentOsName principal.platform_version, principal.asset.platform_software.platform_version Mappé directement.
agentRealtimeInfo.agentOsRevision principal.platform_patch_level, principal.asset.platform_software.platform_patch_level Mappé directement.
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 Mappé directement. Préfixé par "agentUuid:".
agentRealtimeInfo.agentVersion metadata.product_version Mappé directement.
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 Mappé directement.
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 Mappé directement.
associatedItems.0.name principal.resource.name Mappé directement.
associatedItems.0.typeName principal.resource.resource_subtype Mappé directement.
authorAccountId principal.user.userid Mappé directement.
category metadata.product_event_type Mappé directement. Si elle n'est pas présente et que le message contient des "menaces", définissez-la sur "Menaces".
id metadata.product_log_id Converti en chaîne.
indicators.0.description security_result.description Mappé directement.
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 Mappé directement.
summary security_result.summary Mappé directement.
threatInfo.classification security_result.category_details Mappé directement. Également utilisé pour déterminer security_result.category.
threatInfo.collectionId metadata.ingestion_labels Ajoutée en tant que paire clé-valeur avec la clé "alert_aggregation_value".
threatInfo.confidenceLevel security_result.confidence_details Mappé directement. Également utilisé pour déterminer security_result.confidence.
threatInfo.createdAt metadata.collected_timestamp Analysé en tant que code temporel ISO8601.
threatInfo.detectionEngines metadata.ingestion_labels Les éléments key et title de chaque élément sont ajoutés en tant que paires clé/valeur.
threatInfo.fileExtensionType target.process.file.mime_type Mappé directement.
threatInfo.filePath target.file.full_path Mappé directement.
threatInfo.fileSize target.file.size Converti en chaîne, puis en entier non signé.
threatInfo.identifiedAt event_timestamp Analysé en tant que code temporel ISO8601.
threatInfo.maliciousProcessArguments principal.process.command_line Mappé directement. Également utilisé dans le champ security_result.summary si summary n'est pas présent.
threatInfo.md5 target.file.md5 Mappé directement.
threatInfo.originatorProcess target.process.parent_process.file.full_path Mappé directement. Également utilisé dans le champ security_result.summary si summary n'est pas présent.
threatInfo.processUser target.user.userid Mappé directement.
threatInfo.sha1 target.file.sha1 Mappé directement.
threatInfo.sha256 target.file.sha256 Mappé directement.
threatInfo.storyline principal.process.product_specific_process_id Préfixé par "ID:".
threatInfo.threatId security_result.threat_id Mappé directement.
threatInfo.threatName security_result.threat_name, target.file.names Mappé et fusionné directement dans target.file.names. Également utilisé dans le champ security_result.summary si summary n'est pas présent. Définissez-le sur "GENERIC_EVENT" (ÉVÉNEMENT GÉNÉRIQUE) au départ. Passé à "NETWORK_UNCATEGORIZED", "STATUS_UPDATE" ou "USER_UNCATEGORIZED" en fonction de la présence du principal et de l'IP/du nom d'hôte/de l'utilisateur cible. Copié depuis le 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 Mappé directement.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.