FortiAnalyzer
Version de l'intégration : 5.0
Avant de commencer
Pour que la communication entre Google SecOps et FortiAnalyzer soit efficace, vous devez configurer un compte administrateur dédié avec des autorisations spécifiques pour les API et les ressources.
| Catégorie | Niveau d'autorisation |
|---|---|
| Paramètres système | Aucun |
| Domaine administratif | Aucun |
| Gestionnaire d'appareils | En lecture seule |
| Ajouter/Supprimer/Modifier des appareils/groupes | En lecture seule |
| Affichage des journaux/FortiView | En lecture seule |
| Incidents et événements | Lecture/Écriture |
| Créer et mettre à jour des incidents | Lecture/Écriture |
| Événement de tri | Aucun |
| Exécuter le playbook | Aucun |
| Rapports | Aucun |
| Générer le rapport | Aucun |
| Vue Fabric | Aucun |
Pour permettre à l'intégration de communiquer avec l'API FortiAnalyzer, vous devez accorder au compte administrateur les autorisations d'API nécessaires :
Dans FortiAnalyzer, accédez à la liste des administrateurs et sélectionnez le compte utilisateur créé pour cette intégration.
Dans la barre latérale Modifier l'administrateur, recherchez le champ Accès à l'API JSON et définissez-le sur
Read-Write.Cliquez sur OK pour enregistrer les modifications.
Paramètres d'intégration
Utilisez les paramètres suivants pour configurer l'intégration :
| Nom à afficher du paramètre | Type | Valeur par défaut | Obligatoire | Description |
|---|---|---|---|---|
| Racine de l'API | Chaîne | https://{ip address} | Oui | Racine de l'API de l'instance FortiAnalyzer. |
| Nom d'utilisateur | Chaîne | N/A | Oui | Nom d'utilisateur du compte FortiAnalyzer. Assurez-vous que les identifiants fournis appartiennent à un compte utilisateur attribué au profil défini dans Avant de commencer. |
| Mot de passe | Mot de passe | N/A | Oui | Mot de passe du compte FortiAnalyzer. Assurez-vous que les identifiants fournis appartiennent à un compte utilisateur attribué au profil défini dans Avant de commencer. |
| Vérifier le protocole SSL | Case à cocher | Cochée | Oui | Si cette option est activée, elle vérifie que le certificat SSL de la connexion à FortiAnalyzer est valide. |
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 savoir comment configurer et prendre en charge plusieurs instances, consultez Prise en charge de plusieurs instances.
Actions
Ajouter un commentaire à une alerte
Description
Ajoutez un commentaire à l'alerte dans FortiAnalyzer.
Paramètres
| Nom à afficher du paramètre | Type | Valeur par défaut | Obligatoire | Description |
|---|---|---|---|---|
| ID d'alerte | Chaîne | N/A | Oui | Spécifiez l'ID de l'alerte à modifier. |
| Commentaire | Chaîne | N/A | Oui | Spécifiez le commentaire pour l'alerte. |
Date d'exécution
Cette action ne s'applique pas aux entités.
Résultats de l'action
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| is_success | Vrai/Faux | is_success=False |
Résultat JSON
{
"jsonrpc": "2.0",
"id": "string",
"result": {
"status": "done"
}
}
Mur des cas
| Type de résultat | Valeur / Description | Type |
|---|---|---|
| Message de sortie* | L'action ne doit pas échouer ni arrêter l'exécution d'un playbook : Si les informations renvoyées sont les suivantes (is_success=true) : "Commentaire ajouté à l'alerte avec l'ID {id} dans FortiAnalyzer." L'action doit échouer et arrêter l'exécution d'un playbook : Si une erreur fatale est signalée (par exemple, des identifiants incorrects, l'absence de connexion au serveur ou autre) : "Erreur lors de l'exécution de l'action "Ajouter un commentaire à l'alerte". Raison : {0}''.format(error.Stacktrace)" Si l'alerte n'est pas trouvée : "Erreur lors de l'exécution de l'action "Ajouter un commentaire à l'alerte". Motif : l'alerte associée à l'ID {alert id} est introuvable dans FortiAnalyzer. Veuillez vérifier l'orthographe." |
Général |
Enrichir les entités
Description
Enrichissez les entités à l'aide des informations de FortiAnalyzer. Entités acceptées : nom d'hôte, adresse IP.
Paramètres
N/A
Date d'exécution
Cette action s'applique aux entités suivantes :
- Nom d'hôte
- Adresse IP
Résultats de l'action
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| is_success | Vrai/Faux | is_success=False |
Résultat JSON
{
"adm_pass": [
"ENC",
"FLP+Dq8f3t2/S+GQ6DfPL2iRhtmk1CEZzEeH8+nVkRkFd72IUbBZM6uDyw0fQ1j1i28H1wtfqf6HlGEK2ubxs0rXE4L+Uqj433si+AmEF9gEB5gLw/4P5YYRkw/aOYF74k8/8bincoa31jBe0u0HWRNdWYQSyG7IWgvZGsPK4at0gwZI"
],
"adm_usr": "admin",
"app_ver": "",
"av_ver": "",
"beta": -1,
"branch_pt": 1255,
"build": 1255,
"checksum": "",
"conf_status": 0,
"conn_mode": 0,
"conn_status": 0,
"db_status": 0,
"desc": "",
"dev_status": 0,
"eip": "",
"fap_cnt": 0,
"faz.full_act": 0,
"faz.perm": 15,
"faz.quota": 0,
"faz.used": 0,
"fex_cnt": 0,
"first_tunnel_up": 0,
"flags": 2097152,
"foslic_cpu": 0,
"foslic_dr_site": 0,
"foslic_inst_time": 0,
"foslic_last_sync": 0,
"foslic_ram": 0,
"foslic_type": 0,
"foslic_utm": 0,
"fsw_cnt": 0,
"ha_group_id": 0,
"ha_group_name": "",
"ha_mode": 0,
"ha_slave": null,
"hdisk_size": 0,
"hostname": "",
"hw_rev_major": 0,
"hw_rev_minor": 0,
"hyperscale": 0,
"ip": "172.30.203.248",
"ips_ext": 0,
"ips_ver": "",
"last_checked": 1665664693,
"last_resync": 0,
"latitude": "0.0",
"lic_flags": 0,
"lic_region": "",
"location_from": "",
"logdisk_size": 0,
"longitude": "0.0",
"maxvdom": 10,
"mgmt.__data[0]": 0,
"mgmt.__data[1]": 0,
"mgmt.__data[2]": 0,
"mgmt.__data[3]": 0,
"mgmt.__data[4]": 0,
"mgmt.__data[5]": 0,
"mgmt.__data[6]": 0,
"mgmt.__data[7]": 0,
"mgmt_if": "",
"mgmt_mode": 2,
"mgmt_uuid": "1841991674",
"mgt_vdom": "",
"module_sn": "",
"mr": 2,
"name": "FGVMEV2YKQ61YQD5",
"node_flags": 0,
"nsxt_service_name": "",
"oid": 181,
"onboard_rule": null,
"opts": 0,
"os_type": 0,
"os_ver": 7,
"patch": 2,
"platform_str": "FortiGate-VM64",
"prefer_img_ver": "",
"prio": 0,
"private_key": "",
"private_key_status": 0,
"psk": "",
"role": 0,
"sn": "FGVMEV2YKQ61YQD5",
"source": 2,
"tab_status": "",
"tunnel_cookie": "",
"tunnel_ip": "",
"vdom": [
{
"comments": null,
"devid": "FGVMEV2YKQ61YQD5",
"ext_flags": 0,
"flags": 0,
"name": "root",
"node_flags": 0,
"oid": 3,
"opmode": 1,
"rtm_prof_id": 0,
"status": null,
"tab_status": null,
"vdom_type": 1,
"vpn_id": 0
}
],
"version": 700,
"vm_cpu": 0,
"vm_cpu_limit": 0,
"vm_lic_expire": 0,
"vm_mem": 0,
"vm_mem_limit": 0,
"vm_status": 0
}
Enrichissement d'entités : préfixe FortiAn_
| Nom du champ d'enrichissement | Source (clé JSON) | Logique : quand l'appliquer ? |
|---|---|---|
| adm_usr | adm_usr | Lorsqu'il est disponible au format JSON |
| build | build | Lorsqu'il est disponible au format JSON |
| ip | ip | Lorsqu'il est disponible au format JSON |
| last_checked | last_checked | Lorsqu'il est disponible au format JSON |
| last_resync | last_resync | Lorsqu'il est disponible au format JSON |
| nom | nom | Lorsqu'il est disponible au format JSON |
| sn | sn | Lorsqu'il est disponible au format JSON |
| os_type | os_type | Lorsqu'il est disponible au format JSON |
| os_ver | os_ver | Lorsqu'il est disponible au format JSON |
| patch | patch | Lorsqu'il est disponible au format JSON |
| platform\_str | platform\_str | Lorsqu'il est disponible au format JSON |
| version | version | Lorsqu'il est disponible au format JSON |
| décroiss. | décroiss. | Lorsqu'il est disponible au format JSON |
Mur des cas
| Type de résultat | Valeur / Description | Type |
|---|---|---|
| Message de sortie* | L'action ne doit pas échouer ni arrêter l'exécution d'un playbook : Si des données sont disponibles pour une entité (is_success=true) : "Les entités suivantes ont été enrichies avec succès à l'aide des informations de FortiAnalyzer : {entity.identifier}". Si les données ne sont pas disponibles pour une entité (is_success=true) : "L'action n'a pas pu enrichir les entités suivantes à l'aide des informations de FortiAnalyzer : {entity.identifier}" Si les données ne sont pas disponibles pour toutes les entités (is_success=false) : "Aucune des entités fournies n'a été enrichie." L'action doit échouer et arrêter l'exécution d'un playbook : Si une erreur fatale est signalée (par exemple, des identifiants incorrects, une absence de connexion au serveur ou autre) : "Erreur lors de l'exécution de l'action "Enrichir les entités". Raison : {0}''.format(error.Stacktrace) |
Général |
| Tableau du mur des cas | Titre : {entity.identifier} Colonnes : clé-valeur |
Entité |
Ping
Description
Testez la connectivité à FortiAnalyzer avec les paramètres fournis sur la page de configuration de l'intégration dans l'onglet Google Security Operations Marketplace.
Paramètres
N/A
Date d'exécution
Cette action ne s'exécute pas sur les entités et ne comporte pas de paramètres d'entrée obligatoires.
Résultats de l'action
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| is_success | Vrai/Faux | is_success=False |
Résultat JSON
N/A
Mur des cas
| Type de résultat | Valeur / Description | Type |
|---|---|---|
| Message de sortie* | L'action ne doit pas échouer ni arrêter l'exécution d'un playbook : Si l'opération réussit : "La connexion au serveur BitSight a été établie avec succès à l'aide des paramètres de connexion fournis !" L'action doit échouer et arrêter l'exécution d'un playbook : Si l'opération échoue : "Échec de la connexion au serveur BitSight ! Error is {0}".format(exception.stacktrace) |
Général |
Journaux de recherche
Description
Recherchez des journaux dans FortiAnalyzer.
Paramètres
| Nom à afficher du paramètre | Type | Valeur par défaut | Obligatoire | Description |
|---|---|---|---|---|
| Type de journal | LDD | Trafic Valeurs possibles :
|
Non | Spécifiez le type de journal à rechercher. |
| Filtre sensible à la casse | Case à cocher | Décochée | Non | Si cette option est activée, le filtre est sensible à la casse. |
| Filtre de requête | Chaîne | N/A | Non | Spécifiez le filtre de requête pour la recherche. |
| ID de l'appareil | Chaîne | All\_Fortigate | Non | Spécifiez l'ID de l'appareil à rechercher. Si rien n'est fourni, l'action effectue une recherche dans All_Fortigate. Exemples de valeurs : All_FortiGate, All_FortiMail, All_FortiWeb, All_FortiManager, All_Syslog, All_FortiClient, All_FortiCache, All_FortiProxy, All_FortiAnalyzer, All_FortiSandbox, All_FortiAuthenticator, All_FortiDDoS |
| Période | LDD | Le mois dernier Valeurs possibles :
|
Non | Spécifiez une période pour les résultats. Si vous sélectionnez "Personnalisé", vous devez également fournir le paramètre "Heure de début". |
| Heure de début | Chaîne | N/A | Non | Spécifiez l'heure de début des résultats. Ce paramètre est obligatoire si l'option "Personnalisé" est sélectionnée pour le paramètre "Période". Format : ISO 8601 |
| Heure de fin | Chaîne | N/A | Non | Spécifiez l'heure de fin des résultats. Format : ISO 8601. Si aucune valeur n'est fournie et que "Personnalisée" est sélectionné pour le paramètre "Période", ce paramètre utilise l'heure actuelle. |
| Ordre chronologique | LDD | DESC Valeurs possibles :
|
Non | Spécifiez l'ordre chronologique dans la recherche. |
| Nombre maximal de journaux à renvoyer | Integer | 20 | Non | Spécifiez le nombre de journaux à renvoyer. Par défaut : 20. Maximum : 1 000. |
Date d'exécution
Cette action ne s'applique pas aux entités.
Résultats de l'action
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| is_success | Vrai/Faux | is_success=False |
Résultat JSON
{
"sessionid": "29658",
"srcip": "172.30.201.188",
"dstip": "173.243.138.210",
"srcport": "17453",
"dstport": "443",
"trandisp": "noop",
"duration": "1",
"proto": "6",
"sentbyte": "216",
"rcvdbyte": "112",
"sentpkt": "4",
"rcvdpkt": "2",
"logid": "0001000014",
"service": "HTTPS",
"app": "HTTPS",
"appcat": "unscanned",
"srcintfrole": "undefined",
"dstintfrole": "undefined",
"eventtime": "1665752066921638736",
"srccountry": "Reserved",
"dstcountry": "Canada",
"srcintf": "root",
"dstintf": "port1",
"dstowner": "540",
"tz": "-0700",
"devid": "FGVMEV2YKQ61YQD5",
"vd": "root",
"csf": "FortiNetFabric",
"dtime": "2022-10-14 05:54:27",
"itime_t": "1665752069",
"devname": "FGVMEV2YKQ61YQD5"
}{
"date": "2022-10-14",
"time": "05:54:27",
"id": "7154350659607724033",
"itime": "2022-10-14 05:54:29",
"euid": "102",
"epid": "102",
"dsteuid": "102",
"dstepid": "102",
"logver": "702021255",
"type": "traffic",
"subtype": "local",
"level": "notice",
"action": "close",
"policyid": "0"
}
Mur des cas
| Type de résultat | Valeur / Description | Type |
|---|---|---|
| Message de sortie* | L'action ne doit pas échouer ni arrêter l'exécution d'un playbook : Si les informations renvoyées sont les suivantes (is_success=true) : "Successfully retrieved logs for the provided criteria in FortiAnalyzer." (Journaux récupérés avec succès pour les critères fournis dans FortiAnalyzer.) Si aucune information n'est renvoyée (is_success=true) : "Aucun journal n'a été trouvé pour les critères fournis dans FortiAnalyzer." L'action doit échouer et arrêter l'exécution d'un playbook : Si une erreur fatale est signalée (par exemple, des identifiants incorrects, une absence de connexion au serveur ou autre), le message suivant s'affiche : "Erreur lors de l'exécution de l'action "Rechercher dans les journaux". Raison : {0}''.format(error.Stacktrace)" Si une erreur est signalée dans la réponse : "Erreur lors de l'exécution de l'action "Rechercher dans les journaux". Reason: {0}''.format(error/message)" |
Général |
Mettre à jour l'alerte
Description
Mettez à jour une alerte dans FortiAnalyzer.
Paramètres
| Nom à afficher du paramètre | Type | Valeur par défaut | Obligatoire | Description |
|---|---|---|---|---|
| ID d'alerte | Chaîne | N/A | Oui | Spécifiez l'ID de l'alerte à modifier. |
| État de confirmation | LDD | Sélectionnez une réponse Valeurs possibles :
|
Non | Spécifiez l'état d'accusé de réception de l'alerte. |
| Marquer comme lu | Case à cocher | Décochée | Non | Si cette option est activée, l'action marque l'alerte comme lue. |
| Attribuer à | Chaîne | N/A | Non | Indiquez à qui l'alerte doit être attribuée. |
Date d'exécution
Cette action ne s'applique pas aux entités.
Résultats de l'action
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| is_success | Vrai/Faux | is_success=False |
Résultat JSON
{
"alerttime": "1665653864",
"logcount": "17",
"alertid": "202210131000040003",
"adom": "root",
"epid": "1",
"epname": "not implemented dev type",
"subject": "desc:Trim local db",
"euid": "1",
"euname": "N/A",
"devname": "fortianalyzer",
"logtype": "event",
"devtype": "FortiAnalyzer",
"devid": "FAZ-VMTM22013516",
"vdom": "_self_locallog_",
"groupby1": "desc:Trim local db",
"triggername": "Local Device Event",
"tag": "Default,System,Local",
"eventtype": "event",
"severity": "medium",
"extrainfo": "{ \"msg\": \"Requested to trim database tables older than 60 days to enforce the retention policy of Adom FortiAuthenticator.\" }",
"ackflag": "no",
"readflag": "yes",
"filterkey": "3377053565526629289",
"firstlogtime": "1665653864",
"multiflag": "",
"lastlogtime": "1665653887",
"updatetime": "1665747977",
"filtercksum": "2072153473",
"filterid": "1",
"assignto": "api_user",
"ackby": "admin",
"acktime": "1665747892"
}
Mur des cas
| Type de résultat | Valeur / Description | Type |
|---|---|---|
| Message de sortie* | L'action ne doit pas échouer ni arrêter l'exécution d'un playbook : Si les informations renvoyées sont les suivantes (is_success=true) : "L'alerte portant l'ID {alert id} a bien été mise à jour dans FortiAnalyzer." L'action doit échouer et arrêter l'exécution d'un playbook : Si une erreur fatale est signalée (par exemple, des identifiants incorrects, une absence de connexion au serveur ou autre) : "Erreur lors de l'exécution de l'action "Mettre à jour l'alerte". Raison : {0}''.format(error.Stacktrace) Si l'alerte n'est pas trouvée : "Erreur lors de l'exécution de l'action "Mettre à jour l'alerte". Motif : l'alerte associée à l'ID {alert id} est introuvable dans FortiAnalyzer. Veuillez vérifier l'orthographe." Si le paramètre "Acknowledge Status" (Accuser réception de l'état) est défini sur "Select One" (Sélectionner), le paramètre "Mark as Read" (Marquer comme lu) est défini sur "False" (Faux) et rien n'est indiqué dans le paramètre "Assign To" (Attribuer à) : "Error executing action "Update Alert". Motif : au moins l'un des paramètres"Accuser réception", "Marquer comme lu " ou"Attribuer à" doit avoir une valeur. |
Général |
Connecteurs
Connecteur d'alertes FortiAnalyzer
Description
Extrayez des informations sur les alertes de FortiAnalyzer.
Configurer le connecteur d'alertes FortiAnalyzer dans Google SecOps
Pour obtenir des instructions détaillées sur la configuration d'un connecteur dans Google SecOps, consultez Configurer le connecteur.
Paramètres du connecteur
Utilisez les paramètres suivants pour configurer le connecteur :
| Nom à afficher du paramètre | Type | Valeur par défaut | Obligatoire | Description |
|---|---|---|---|---|
| Nom du champ de produit | Chaîne | siemplify_type | Oui | Saisissez le nom du champ source pour récupérer le nom du champ produit. |
| Nom du champ d'événement | Chaîne | event_type | Oui | Saisissez le nom du champ source pour récupérer le nom du champ d'événement. |
| Nom du champ d'environnement | Chaîne | "" | Non | Décrit le nom du champ dans lequel le nom de l'environnement est stocké. Si le champ d'environnement n'est pas trouvé, l'environnement est celui par défaut. |
| Modèle d'expression régulière de l'environnement | Chaîne | .* | Non | Modèle d'expression régulière à exécuter sur la valeur trouvée dans le champ "Nom du champ d'environnement". La valeur par défaut est ".*" pour tout récupérer et renvoyer la valeur inchangée. Permet à l'utilisateur de manipuler le champ "environment" à l'aide d'une logique d'expression régulière. Si le modèle d'expression régulière est nul ou vide, ou si la valeur de l'environnement est nulle, l'environnement final est celui par défaut. |
| Délai avant expiration du script (en secondes) | Entier | 180 | Oui | Délai avant expiration du processus Python exécutant le script actuel. |
| Racine de l'API | Chaîne | https://{ip address} | Oui | Racine de l'API de l'instance FortiAnalyzer. |
| Nom d'utilisateur | Chaîne | N/A | Oui | Nom d'utilisateur du compte FortiAnalyzer. |
| Mot de passe | Mot de passe | N/A | Oui | Mot de passe du compte FortiAnalyzer. |
| Gravité la plus faible à récupérer | Chaîne | Moyenne | Non | Niveau de gravité le plus faible à utiliser pour récupérer les alertes. Valeurs possibles : faible, moyenne, élevée, critique. Si rien n'est spécifié, le connecteur ingère les alertes de tous les niveaux de gravité. |
| Nombre maximal d'heures en arrière | Entier | 1 | Non | Nombre d'heures dans le passé à partir desquelles récupérer les alertes. |
| Nombre maximal d'alertes à récupérer | Integer | 20 | Non | Nombre d'alertes par type à traiter par itération de connecteur. |
| Utiliser une liste dynamique comme liste noire | Case à cocher | Décochée | Oui | Si cette option est activée, la liste dynamique est utilisée comme liste noire. |
| Vérifier le protocole SSL | Case à cocher | Cochée | Oui | Si cette option est activée, le connecteur vérifie que le certificat SSL de la connexion au serveur FortiAnalyzer est valide. |
| Adresse du serveur proxy | Chaîne | N/A | Non | Adresse du serveur proxy à utiliser. |
| Nom d'utilisateur du proxy | Chaîne | N/A | Non | Nom d'utilisateur du proxy pour l'authentification. |
| Mot de passe du proxy | Mot de passe | N/A | Non | Mot de passe du proxy pour l'authentification. |
Règles du connecteur
Assistance de proxy
Le connecteur est compatible avec le proxy.
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.