Intégrer Pub/Sub à Google SecOps

Ce document explique comment intégrer Pub/Sub à Google Security Operations (Google SecOps).

Version de l'intégration : 1.0

Avant de commencer

Pour utiliser l'intégration Pub/Sub, vous devez disposer des éléments suivants :

Paramètres d'intégration

L'intégration Pub/Sub nécessite les paramètres suivants :

Paramètres Description
Workload Identity Email Optional

Adresse e-mail du client de votre fédération d'identité de charge de travail.

Vous pouvez configurer ce paramètre ou le paramètre Service Account JSON File Content.

Pour emprunter l'identité de comptes de service avec la fédération d'identité de charge de travail, accordez le rôle Service Account Token Creator à votre compte de service. Pour en savoir plus sur les identités de charge de travail et sur la façon de les utiliser, consultez Identités pour les charges de travail.

Service Account JSON File Content Optional

Contenu du fichier JSON de clé de compte de service.

Vous pouvez configurer ce paramètre ou le paramètre Workload Identity Email.

Pour configurer ce paramètre, indiquez le contenu complet du fichier JSON de la clé de compte de service que vous avez téléchargé lors de la création d'un compte de service.

Pour en savoir plus sur l'utilisation des comptes de service comme méthode d'authentification, consultez la présentation des comptes de service.

Quota Project ID Optional

ID du projet Google Cloud que vous utilisez pour les API Google Cloud et la facturation. Ce paramètre nécessite que vous accordiez le rôle Service Usage Consumer à votre compte de service. Pour en savoir plus sur les rôles IAM, consultez Contrôle des accès avec IAM.

L'intégration associe cette valeur de paramètre à toutes les requêtes API.

Si vous ne définissez pas de valeur pour ce paramètre, l'intégration récupère l'ID du projet de quota à partir de votre compte de service Google Cloud .

Project ID Optional

ID du projet à utiliser dans l'intégration.

Si vous ne définissez pas de valeur pour ce paramètre, l'intégration récupère l'ID du projet à partir de votre compte de service Google Cloud .

Verify SSL Obligatoire

Si cette option est sélectionnée, l'intégration vérifie que le certificat SSL pour la connexion à Pub/Sub est valide.

Cette option est sélectionnée par défaut.

Pour obtenir des instructions sur la configuration d'une intégration dans Google SecOps, consultez Configurer des intégrations.

Vous pourrez apporter des modifications ultérieurement si nécessaire. Une fois que vous avez configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour en savoir plus sur la configuration et la prise en charge de plusieurs instances, consultez Prise en charge de plusieurs instances.

Actions

Pour en savoir plus sur les actions, consultez Répondre aux actions en attente dans Votre espace de travail et Effectuer une action manuelle.

Ping

Utilisez l'action "Ping" pour tester la connectivité à Pub/Sub.

Cette action ne s'applique pas aux entités Google SecOps.

Entrées d'action

Aucun

Sorties d'action

L'action Ping fournit les résultats suivants :

Type de sortie de l'action Disponibilité
Pièce jointe au mur des cas Non disponible
Lien vers le mur des cas Non disponible
Table du mur des cas Non disponible
Table d'enrichissement Non disponible
Résultat JSON Non disponible
Messages de sortie Disponible
Résultat du script Disponible
Messages de sortie

L'action Ping peut renvoyer les messages de résultat suivants :

Message affiché Description du message
Successfully connected to the Pub/Sub server with the provided connection parameters! L'action a réussi.
Failed to connect to the Pub/Sub server! Error is ERROR_REASON

Échec de l'action.

Vérifiez la connexion au serveur, les paramètres d'entrée ou les identifiants.

Résultat du script

Le tableau suivant répertorie la valeur du résultat du script lorsque vous utilisez l'action Ping :

Nom du résultat du script Valeur
is_success True ou False

Connecteurs

Pour obtenir des instructions détaillées sur la configuration d'un connecteur dans Google SecOps, consultez Ingérer vos données (connecteurs).

Connecteur Pub/Sub – Messages

Dans la plate-forme Google SecOps, le connecteur Pub/Sub – Messages est appelé Connecteur PubSub – Messages.

Utilisez le connecteur Pub/Sub – Messages pour récupérer les messages de Pub/Sub.

Mappage de la gravité JSON

Pour mapper la gravité de l'alerte, vous devez spécifier le champ utilisé par le connecteur Pub/Sub – Messages pour obtenir la valeur de gravité dans le paramètre Severity Mapping JSON. La réponse du connecteur peut contenir des types de valeurs, tels que integer, float et string.

Le connecteur Pub/Sub – Messages lit les valeurs integer et float et les mappe en fonction des paramètres Google SecOps. Le tableau suivant indique le mappage des valeurs integer à la gravité dans Google SecOps :

Valeur entière Gravité mappée
100 Critical
Du 80 au 100 High
Du 60 au 80 Medium
Du 40 au 60 Low
Moins de 40 Informational

Si la réponse contient la valeur string, le connecteur Pub/Sub – Messages nécessite une configuration supplémentaire.

Au départ, la valeur par défaut s'affiche comme suit :

{
    "Default": 60
}

Si les valeurs requises pour le mappage se trouvent dans la clé JSON event_severity, elles peuvent être les suivantes :

  • "Malicious"
  • "Benign"
  • "Unknown"

Pour analyser les valeurs de clé JSON event_severity et vous assurer que l'objet JSON est au bon format, configurez le paramètre Severity Mapping JSON comme suit :

{
    "event_severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

La valeur "Default" est obligatoire.

Dans le cas où plusieurs correspondances sont trouvées pour le même objet JSON, le connecteur Pub/Sub – Messages donne la priorité à la première clé d'objet JSON.

Pour utiliser des champs contenant des valeurs integer ou float, configurez la clé et une chaîne vide dans le paramètre Severity Mapping JSON :

{
  "Default":"60",
  "integer_field": "",
  "float_field": ""
}

Entrées du connecteur

Le connecteur Pub/Sub – Messages nécessite les paramètres suivants :

Paramètre Description
Product Field Name Obligatoire

Nom du champ dans lequel le nom du produit est stocké.

La valeur par défaut est Product Name.

Event Field Name Obligatoire

Nom du champ utilisé pour déterminer le nom de l'événement (sous-type).

La valeur par défaut est event_type.

Environment Field Name Optional

Nom du champ dans lequel le nom de l'environnement est stocké.

Si le champ d'environnement n'est pas trouvé, l'environnement est défini sur l'environnement par défaut.

La valeur par défaut est "".

Environment Regex Pattern Optional

Modèle d'expression régulière à exécuter sur la valeur trouvée dans le champ Environment Field Name. Ce paramètre vous permet de manipuler le champ "environment" à l'aide de la logique d'expression régulière.

Utilisez la valeur par défaut .* pour récupérer la valeur Environment Field Name brute requise.

Si le modèle d'expression régulière est nul ou vide, ou si la valeur d'environnement est nulle, le résultat final de l'environnement est l'environnement par défaut.

Script Timeout (Seconds) Obligatoire

Délai limite en secondes pour le processus Python exécutant le script actuel.

La valeur par défaut est 300 seconds.

Service Account JSON File Content Optional

Contenu du fichier JSON de clé de compte de service.

Vous pouvez configurer ce paramètre ou le paramètre Workload Identity Email.

Pour configurer ce paramètre, indiquez le contenu complet du fichier JSON de la clé de compte de service que vous avez téléchargé lors de la création d'un compte de service.

Pour le connecteur Pub/Sub – Messages, l'authentification avec le fichier JSON de clé de compte de service est prioritaire par rapport à la fédération d'identité de charge de travail.

Workload Identity Email Optional

Adresse e-mail du client de votre compte de service.

Vous pouvez configurer ce paramètre ou le paramètre Service Account JSON File Content.

Pour emprunter l'identité de comptes de service avec la fédération d'identité de charge de travail, accordez le rôle Service Account Token Creator à votre compte de service.

Project ID Optional

ID du projet à utiliser dans le connecteur.

Quota Project ID Optional

ID du projet Google Cloud que vous utilisez pour les API Google Cloud et la facturation. Ce paramètre nécessite que vous accordiez le rôle Service Usage Consumer à votre compte de service. Pour en savoir plus sur les rôles IAM, consultez Contrôle des accès avec IAM.

L'intégration associe cette valeur de paramètre à toutes les requêtes API.

Subscription ID Obligatoire

ID de l'abonnement Pub/Sub.

Case Name Template Optional

Nom personnalisé de la demande.

Lorsque vous configurez ce paramètre, le connecteur ajoute une clé nommée custom_case_name à l'événement Google SecOps.

Vous pouvez fournir des espaces réservés au format suivant : [name of the field].

Exemple : Phishing - [event_mailbox]

Pour les espaces réservés, le connecteur utilise le premier événement Google SecOps. Le connecteur ne gère que les clés contenant la valeur de chaîne. Pour configurer ce paramètre, spécifiez les champs d'événement sans préfixes.

Alert Name Template Obligatoire

Nom personnalisé de l'alerte.

Vous pouvez fournir des espaces réservés au format suivant : [name of the field].

Exemple : Phishing - [event_mailbox].

Pour les espaces réservés, le connecteur utilise le premier événement Google SecOps. Le connecteur ne gère que les clés contenant la valeur de chaîne. Si vous ne fournissez aucune valeur ou si vous utilisez un modèle non valide, le connecteur utilise une valeur de remplacement au format suivant : CONNECTOR_NAME - Alert. Pour configurer ce paramètre, spécifiez les champs d'événement sans préfixes.

Rule Generator Template Obligatoire

Un générateur de règles personnalisées.

Vous pouvez fournir des espaces réservés au format suivant : [name of the field].

Exemple : Phishing - [event_mailbox].

Pour les espaces réservés, le connecteur utilise le premier événement Google SecOps. Le connecteur ne gère que les clés contenant la valeur de chaîne. Si vous ne fournissez aucune valeur ou si vous utilisez un modèle non valide, le connecteur utilise une valeur de remplacement au format suivant : CONNECTOR_NAME - Rule Generator. Pour configurer ce paramètre, spécifiez les champs d'événement sans préfixes.

Timestamp Field Obligatoire

Nom du champ permettant de définir le code temporel de l'alerte Google SecOps.

Si l'horodatage n'utilise pas le format d'heure epoch Unix, définissez-le dans le paramètre Timestamp Format.

La valeur par défaut est message_publishTime.

Timestamp Format Optional

Format du code temporel du message.

Le connecteur a besoin de l'horodatage pour traiter correctement le message. Si l'horodatage n'utilise pas le format d'heure epoch Unix et que vous ne configurez pas de format d'horodatage, le connecteur échoue.

La valeur par défaut est %Y-%m-%dT%H:%M:%S.%fZ.

Severity Mapping JSON Obligatoire

Objet JSON qui définit la façon dont le connecteur extrait le niveau de gravité du message.

La valeur par défaut est la suivante :

    {
      "Default": "60"
    }
    

Pour en savoir plus sur le mappage de la gravité, consultez Mappage de la gravité JSON.

Unique ID Field Optional

Nom du champ permettant de confirmer que le message est unique.

Si vous ne définissez pas de valeur, le connecteur génère un hachage SHA-256 et l'utilise comme identifiant pour le message.

Max Messages To Fetch Optional

Nombre maximal de messages à traiter pour chaque itération du connecteur.

Le nombre maximal est de 100.

Disable Overflow Optional

Si cette option est sélectionnée, le connecteur ignore le mécanisme de dépassement de capacité de Google SecOps lors de la création d'alertes.

Cette option est sélectionnée par défaut.

Verify SSL Obligatoire

Si cette option est sélectionnée, l'intégration vérifie que le certificat SSL pour la connexion à Pub/Sub est valide.

Cette option est sélectionnée par défaut.

Proxy Server Address Optional

Adresse du serveur proxy à utiliser.

Proxy Username Optional

Nom d'utilisateur du proxy pour l'authentification.

Proxy Password Optional

Mot de passe du proxy pour l'authentification.

Règles du connecteur

Le connecteur Pub/Sub – Messages est compatible avec les proxys.

Événements de connecteur

L'exemple suivant montre la sortie JSON d'un événement Google SecOps généré par le connecteur Messages Pub/Sub :

{
   "notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
   "finding": {
       "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
       "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
       "resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
       "state": "ACTIVE",
       "category": "OPEN_NETBIOS_PORT",
       "externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
       "sourceProperties": {
           "Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
           "ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
           "Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
           "ScannerName": "FIREWALL_SCANNER",
           "ResourcePath": [
               "projects/PROJECT_ID/",
               "folders/FOLDER_ID/",
               "folders/FOLDER_ID/",
               "organizations/ORGANIZATION_ID/"
           ],
           "ExposedService": "NetBIOS",
           "OpenPorts": {
               "TCP": [
                   137.0,
                   138.0,
                   139.0
               ],
               "UDP": [
                   137.0,
                   138.0,
                   139.0
               ]
           },
           "compliance_standards": {
               "iso": [
                   {
                       "ids": [
                           "A.13.1.1"
                       ]
                   }
               ],
               "pci": [
                   {
                       "ids": [
                           "1.2.1"
                       ]
                   }
               ],
               "nist": [
                   {
                       "ids": [
                           "SC-7"
                       ]
                   }
               ]
           },
           "ReactivationCount": 4.0
       },
       "securityMarks": {
           "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
           "marks": {
               "peter": "e2e1"
           }
       },
       "eventTime": "2024-08-30T14:44:37.973090Z",
       "createTime": "2024-06-24T07:08:54.777Z",
       "propertyDataTypes": {
           "ResourcePath": {
               "listValues": {
                   "propertyDataTypes": [
                       {
                           "primitiveDataType": "STRING"
                       }
                   ]
               }
           },
           "ReactivationCount": {
               "primitiveDataType": "NUMBER"
           },
           "Explanation": {
               "primitiveDataType": "STRING"
           },
           "ExposedService": {
               "primitiveDataType": "STRING"
           },
           "ScannerName": {
               "primitiveDataType": "STRING"
           }
       }
   }
}

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