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 :
Un compte de service Google Cloud : vous pouvez utiliser un compte de service existant ou en créer un.
Pour savoir comment créer un compte de service, consultez Créer des comptes de service.
Si vous utilisez un compte de service pour vous authentifier auprès de Google Cloud, vous pouvez créer une clé de compte de service au format JSON et fournir le contenu du fichier JSON téléchargé lors de la configuration des paramètres d'intégration.
Remarque : Pour des raisons de sécurité, nous vous recommandons d'utiliser une adresse e-mail d'identité de charge de travail plutôt qu'une clé de compte de service. Pour en savoir plus sur les identités de charge de travail, consultez Identités pour les charges de travail.
Configurez le rôle IAM pour votre compte principal.
Pub/Sub utilise Identity and Access Management (IAM) pour le contrôle des accès et vous demande d'attribuer le rôle
Pub/Sub Viewer
à votre compte principal.
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 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 JSON File Content |
Optional Contenu du fichier JSON de clé de compte de service. Vous pouvez configurer ce paramètre ou le paramètre 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 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 |
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 |
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 Utilisez la valeur par défaut 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 |
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 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 Pour emprunter l'identité de comptes de service avec la fédération d'identité de charge de travail, accordez le rôle |
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 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 Vous pouvez fournir des espaces réservés au format suivant :
Exemple : 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 :
Exemple : 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 : |
Rule Generator Template |
Obligatoire Un générateur de règles personnalisées. Vous pouvez fournir des espaces réservés au format suivant :
Exemple : 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 : |
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 La valeur par défaut est |
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 |
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.