Tenable Security Center

Version de l'intégration : 15.0

Intégrer Tenable Security Center à Google Security Operations

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

Entrées d'intégration

Pour configurer l'intégration, utilisez les paramètres suivants :

Paramètres
Server Address Obligatoire

Adresse du serveur Tenable Security Center à utiliser dans l'intégration.

Username Obligatoire

Nom d'utilisateur permettant de se connecter au serveur Tenable Security Center.

Password Obligatoire

Mot de passe permettant de se connecter au serveur Tenable Security Center.

Verify SSL Optional

Si cette option est sélectionnée, elle vérifie que le certificat SSL pour la connexion au serveur Tenable est valide.

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

Actions

Ajouter une adresse IP à un composant Liste d'adresses IP

Ajoutez un élément de liste d'adresses IP dans Tenable Security Center.

Paramètres

Nom du paramètre à afficher Type Valeur par défaut Obligatoire Description
Asset Name Chaîne N/A Oui Spécifiez le nom du composant de liste d'adresses IP auquel vous souhaitez ajouter de nouvelles adresses IP.

Date d'exécution

Cette action s'exécute sur l'entité "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
{
    "type": "regular",
    "response": {
        "id": "41",
        "name": "api_test_5",
        "type": "static",
        "description": "",
        "tags": "qweqwe",
        "context": "",
        "status": "0",
        "createdTime": "1606129689",
        "modifiedTime": "1606129689",
        "ioSyncStatus": "Not Synced",
        "ioFirstSyncTime": "-1",
        "ioLastSyncSuccess": "-1",
        "ioLastSyncFailure": "-1",
        "ioSyncErrorDetails": null,
        "typeFields": {
            "definedIPs": "203.0.113.1,203.0.113.10"
        },
        "repositories": [
            {
                "ipCount": "-1",
                "repository": {
                    "id": "1",
                    "name": "Example-Repository",
                    "description": ""
                }
            }
        ],
        "ipCount": -1,
        "groups": [],
        "assetDataFields": [],
        "canUse": "true",
        "canManage": "true",
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "targetGroup": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "template": {
            "id": -1,
            "name": "",
            "description": ""
        }
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606129688
}
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 le code statique est 200(is_success = true) : print "Successfully added the following IPs to the IP List Asset {0} in Tenable Security Center:\n{1}".format(name, entity.identifier)

Si aucune entité IP : Aucune adresse IP n'a été ajoutée à la liste d'adresses IP {0}.format(name)

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. print "Error executing action "Add IP to IP List Asset". Raison : {0}''.format(error.Stacktrace)


Si l'élément est introuvable, affichez le message "Erreur lors de l'exécution de l'action "Ajouter une adresse IP à la liste d'adresses IP". Motif : L'élément {0} est introuvable dans Tenable Security Center. ''.format(error.Stacktrace)

Si le code n'est pas statique 200 (is_success = false) : print "Erreur lors de l'exécution de l'action "Ajouter une adresse IP à l'élément de liste d'adresses IP". Motif : {0}''.format(error_msg)

Général

Créer un composant Liste d'adresses IP

Créez un asset de liste d'adresses IP dans Tenable Security Center. Nécessite au moins une entité IP pour une exécution réussie.

Paramètres

Nom du paramètre à afficher Type Valeur par défaut Obligatoire Description
Name Chaîne N/A Oui Spécifiez le nom de l'asset de liste d'adresses IP.
Description Chaîne N/A Non Spécifiez la description de l'élément de liste d'adresses IP.
Tag Chaîne N/A Non Spécifiez le tag de l'élément de liste d'adresses IP.

Date d'exécution

Cette action s'exécute sur l'entité "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
{
    "type": "regular",
    "response": {
        "id": "41",
        "name": "api_test_5",
        "type": "static",
        "description": "",
        "tags": "qweqwe",
        "context": "",
        "status": "0",
        "createdTime": "1606129689",
        "modifiedTime": "1606129689",
        "ioSyncStatus": "Not Synced",
        "ioFirstSyncTime": "-1",
        "ioLastSyncSuccess": "-1",
        "ioLastSyncFailure": "-1",
        "ioSyncErrorDetails": null,
        "typeFields": {
            "definedIPs": "203.0.113.1,203.0.113.10"
        },
        "repositories": [
            {
                "ipCount": "-1",
                "repository": {
                    "id": "1",
                    "name": "Example-Repository",
                    "description": ""
                }
            }
        ],
        "ipCount": -1,
        "groups": [],
        "assetDataFields": [],
        "canUse": "true",
        "canManage": "true",
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "targetGroup": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "template": {
            "id": -1,
            "name": "",
            "description": ""
        }
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606129688
}
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 le code statique est 200(is_success = true) : print "Successfully created new IP List Asset {0} with the following IPs in Tenable Security Center:\n{1}".format(name, entity.identifier)

S'il n'y a pas d'entités IP, affichez le message "Au moins une entité IP doit être disponible pour créer un asset de liste d'adresses IP".


L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, une absence de connexion au serveur, etc., affichez "Erreur lors de l'exécution de l'action "Créer un asset de liste d'adresses IP". Raison : {0}''.format(error.Stacktrace)

Si le code n'est pas statique 200 (is_success = false), affichez "Erreur lors de l'exécution de l'action "Créer un composant de liste d'adresses IP". Motif : {0}''.format(error_msg)

Général

Enrichir l'adresse IP

Obtenez des informations sur les adresses IP et enrichissez-les.

Paramètres

Paramètre Type Valeur par défaut Description
Nom du dépôt Chaîne N/A Nom du dépôt.

Date d'exécution

Cette action s'exécute sur l'entité "Adresse IP".

Résultats de l'action

Enrichissement d'entités
Nom du champ d'enrichissement Logique : quand l'appliquer ?
macAddress Renvoie la valeur si elle existe dans le résultat JSON.
severityLow Renvoie la valeur si elle existe dans le résultat JSON.
links Renvoie la valeur si elle existe dans le résultat JSON.
ip Renvoie la valeur si elle existe dans le résultat JSON.
dernière analyse Renvoie la valeur si elle existe dans le résultat JSON.
severityCritical Renvoie la valeur si elle existe dans le résultat JSON.
total Renvoie la valeur si elle existe dans le résultat JSON.
severityAll Renvoie la valeur si elle existe dans le résultat JSON.
mcafeeGUID Renvoie la valeur si elle existe dans le résultat JSON.
policyName Renvoie la valeur si elle existe dans le résultat JSON.
uuid Renvoie la valeur si elle existe dans le résultat JSON.
lastAuthRun Renvoie la valeur si elle existe dans le résultat JSON.
severityInfo Renvoie la valeur si elle existe dans le résultat JSON.
osCPE Renvoie la valeur si elle existe dans le résultat JSON.
originalité Renvoie la valeur si elle existe dans le résultat JSON.
dnsName Renvoie la valeur si elle existe dans le résultat JSON.
dépôt Renvoie la valeur si elle existe dans le résultat JSON.
ip Renvoie la valeur si elle existe dans le résultat JSON.
description Renvoie la valeur si elle existe dans le résultat JSON.
nom Renvoie la valeur si elle existe dans le résultat JSON.
lastUnauthRun Renvoie la valeur si elle existe dans le résultat JSON.
biosGUID Renvoie la valeur si elle existe dans le résultat JSON.
tpmID Renvoie la valeur si elle existe dans le résultat JSON.
score Renvoie la valeur si elle existe dans le résultat JSON.
hasPassive Renvoie la valeur si elle existe dans le résultat JSON.
pluginSet Renvoie la valeur si elle existe dans le résultat JSON.
hasCompliance Renvoie la valeur si elle existe dans le résultat JSON.
severityHigh Renvoie la valeur si elle existe dans le résultat JSON.
netbiosName Renvoie la valeur si elle existe dans le résultat JSON.
severityMedium Renvoie la valeur si elle existe dans le résultat JSON.
os Renvoie la valeur si elle existe dans le résultat JSON.
Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
[
{
"EntityResult":
{
"macAddress": "",
"severityLow": "0",
"links": [],
"ip": "203.0.113.1",
"lastScan": "1549425224",
"severityCritical": "0",
"total": "2",
"severityAll": "0,0,0,0,2",
"mcafeeGUID": "",
"policyName": "1e2e4247-0de7-56d5-8026-34ab1f3150ef-1130313/Basic Discovery Scan",
"uuid": "",
"lastAuthRun": "",
"severityInfo": "2",
"osCPE": "",
"uniqueness": "repositoryID,ip,dnsName",
 "dnsName": "example.com",
"repository":
          {
"id": "1",
"description": "",
"name": "repository"
          },
"lastUnauthRun": "1549363419",
"biosGUID": "",
"tpmID": "",
"score": "0",
"hasPassive": "No",
"pluginSet": "201902020242",
"hasCompliance": "No",
"severityHigh": "0",
"netbiosName": "",
"severityMedium": "0",
"os": ""
},
"Entity": "203.0.113.1"
}
]

Obtenez les composants associés à une adresse IP.

Paramètres

Paramètre Type Valeur par défaut Description
Nom du dépôt Chaîne N/A Nom du dépôt.

Date d'exécution

Cette action s'exécute sur l'entité "Adresse IP".

Résultats de l'action

Enrichissement d'entités
Nom du champ d'enrichissement Logique : quand l'appliquer ?
id Renvoie la valeur si elle existe dans le résultat JSON.
nom Renvoie la valeur si elle existe dans le résultat JSON.
Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
[
{
"EntityResult":
[
{
"id": "0",
"description": "All defining ranges of the Group in whose context this Asset is being evaluated.",
"name": "All Defined Ranges"
}, {
"id": "2",
"description": "This asset uses the Scan Summary plugin to detect if a host has been scanned by Nessus. The Scan Summary plugin contains the list of tests conducted during the most recent scan.",
"name": "Systems that have been Scanned"
}, {
"id": "13",
"description": "Leverage Nessus plugin 10180 (Ping the remote host) and Nessus plugin 12503 (Host Fully Qualified Domain Name (FQDN) Resolution) to find hosts that don't have a resolvable FQDN in DNS.",
"name": "Scanned Hosts Not in DNS"
}
],
"Entity": "203.0.113.1"
}
]

Télécharger le rapport

Obtenez le contenu d'un rapport par ID ou par nom.

Paramètres

Paramètre Type Valeur par défaut Description
ID du rapport Chaîne N/A Numéro d'identification du rapport.Vous le trouverez dans l'URL du rapport.

Exécuter sur

Cette action s'exécute sur toutes les 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
{
"pubSites":
[
"https://example.com",
"https://example.net"
]
}

Obtenir les résultats de l'analyse

Attendez que l'analyse se termine et obtenez ses résultats.

Paramètres

Paramètre Type Valeur par défaut Description
ID du résultat de l'analyse

Chaîne

N/A ID des résultats de l'analyse.

Date d'exécution

Cette action s'exécute sur toutes les 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

{
"severity_summary":
[
{
"count": "0",
"severity":
{
"id": "4",
"name": "Critical",
"description": "Critical Severity"
}
}, {
"count": "0",
"severity":
{
"id": "3",
"name": "High",
"description": "High Severity"
}
}, {
"count": "3",
"severity":
{"id": "2",
"name": "Medium",
"description": "Medium Severity"
}}
],
"results":
[
{
"name": "DNS Server Recursive Query Cache Poisoning Weakness",
"family": "DNS",
"hostTotal": "1",
"pluginID": "10539",
"total": "1",
"severity": "Medium"
}, {
"name": "DNS Server Spoofed Request Amplification DDoS",
"family": "DNS",
"hostTotal": "1",
"pluginID": "35450",
"total": "1",
"severity": "Medium"
}, {
"name": "SSL Medium Strength Cipher Suites Supported",
"family": "General",
"hostTotal": "1",
"pluginID": "42873",
"total": "1",
"severity": "Medium"
}
]
}

Obtenir les failles pour une adresse IP

Obtenez un récapitulatif des failles et de leur gravité pour une adresse IP.

Paramètres

N/A

Date d'exécution

Cette action s'exécute sur l'entité "Adresse IP".

Résultats de l'action

Enrichissement d'entités
Nom du champ d'enrichissement Logique : quand l'appliquer ?
macAddress Renvoie la valeur si elle existe dans le résultat JSON.
protocol Renvoie la valeur si elle existe dans le résultat JSON.
uuid Renvoie la valeur si elle existe dans le résultat JSON.
famille Renvoie la valeur si elle existe dans le résultat JSON.
pluginInfo Renvoie la valeur si elle existe dans le résultat JSON.
ip Renvoie la valeur si elle existe dans le résultat JSON.
pluginID Renvoie la valeur si elle existe dans le résultat JSON.
de gravité, Renvoie la valeur si elle existe dans le résultat JSON.
dépôt Renvoie la valeur si elle existe dans le résultat JSON.
originalité Renvoie la valeur si elle existe dans le résultat JSON.
dnsName Renvoie la valeur si elle existe dans le résultat JSON.
port Renvoie la valeur si elle existe dans le résultat JSON.
netbiosName Renvoie la valeur si elle existe dans le résultat JSON.
nom

Renvoie la valeur si elle existe dans le résultat JSON

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
[
{
"EntityResult":
[
{
"macAddress": "",
"protocol": "TCP",
"uuid": "",
"family": "Web Servers",
"pluginInfo": "10107 (443/6) HTTP Server Type and Version",
"ip": "203.0.113.1",
"pluginID": "10107",
"severity": "Info",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "example.com",
"port": "443",
"netbiosName": "",
"name": "HTTP Server Type and Version"
}, {
"macAddress": "",
"protocol": "UDP",
"uuid": "",
"family": "DNS",
"pluginInfo": "10539 (53/17) DNS Server Recursive Query Cache Poisoning Weakness",
"ip": "203.0.113.1",
"pluginID": "10539",
"severity": "Medium",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "exaample.com",
"port": "53",
"netbiosName": "",
"name": "DNS Server Recursive Query Cache Poisoning Weakness"
}, {
"macAddress": "",
"protocol": "TCP",
"uuid": "",
"family": "General",
"pluginInfo": "10863 (443/6) SSL Certificate Information",
"ip": "203.0.113.1",
"pluginID": "10863",
"severity": "Info",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "example.com",
"port": "443",
"netbiosName": "",
"name": "SSL Certificate Information"
}
],
"Entity": "203.0.113.1"
}
]

Ping

Testez la connectivité.

Date d'exécution

Cette action s'exécute sur toutes les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
null N/A N/A

Analyser les adresses IP

Lancez une analyse des adresses IP.

Paramètres

Paramètre Type Valeur par défaut Description
Nom de l'analyse Chaîne N/A Nom de l'analyse à créer.
Nom de la règle Chaîne N/A Nom de la règle.

Date d'exécution

Cette action s'exécute sur l'entité "Adresse IP".

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
scan_result_id N/A N/A

Exécuter l'analyse des composants

Exécutez une analyse des composants dans Tenable Security Center.

Où trouver l'ID de règle et l'ID de dépôt

Pour l'ID de règlement :

  1. Accédez à https://INSTANCE_IP_ADDRESS/#policies.
  2. Sélectionnez la règle que vous souhaitez utiliser.
  3. Dans l'URL, vous pourrez voir l'ID de cette règle.

Pour l'ID du dépôt :

  1. Accédez à https://INSTANCE_IP_ADDRESS/#repositories.
  2. Sélectionnez le dépôt que vous souhaitez utiliser dans l'action.
  3. Dans l'URL, vous pourrez voir l'ID de ce dépôt.

Paramètres

Nom du paramètre à afficher Type Valeur par défaut Obligatoire Description
Nom de l'analyse N/A Oui Spécifiez le nom de l'analyse.
Asset Name Chaîne N/A Oui Spécifiez le nom du composant à analyser.
ID de stratégie Integer N/A Oui Spécifiez l'ID de la règle à utiliser lors de l'analyse.
ID du dépôt Integer N/A Oui Spécifiez l'ID du dépôt à utiliser dans l'analyse.
Description Chaîne N/A Non Spécifiez la description de l'analyse.

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
{
    "type": "regular",
    "response": {
        "id": "11",
        "name": "Scan Name",
        "description": "",
        "ipList": "",
        "type": "policy",
        "dhcpTracking": "false",
        "classifyMitigatedAge": "0",
        "emailOnLaunch": "false",
        "emailOnFinish": "false",
        "timeoutAction": "import",
        "scanningVirtualHosts": "false",
        "rolloverType": "template",
        "status": "0",
        "createdTime": "1606132784",
        "modifiedTime": "1606132784",
        "maxScanTime": "3600",
        "reports": [],
        "assets": [
            {
                "id": "38",
                "name": "api_test_1",
                "description": ""
            }
        ],
        "credentials": [],
        "numDependents": "0",
        "schedule": {
            "id": -1,
            "objectType": -1,
            "type": "now",
            "start": "",
            "repeatRule": "",
            "enabled": "true",
            "nextRun": -1,
            "dependent": {
                "id": -1,
                "name": "",
                "description": ""
            }
        },
        "policy": {
            "id": "1000002",
            "context": "",
            "name": "Host Discovery",
            "description": "",
            "tags": "",
            "owner": {
                "id": "1",
                "username": "security_manager",
                "firstname": "Manager",
                "lastname": "Security"
            },
            "ownerGroup": {
                "id": "0",
                "name": "Full Access",
                "description": "Full Access group"
            }
        },
        "policyPrefs": [
            {
                "name": "MODE|discovery",
                "value": "host_enumeration"
            },
            {
                "name": "description",
                "value": ""
            },
            {
                "name": "display_unreachable_hosts",
                "value": "no"
            },
            {
                "name": "log_live_hosts",
                "value": "yes"
            },
            {
                "name": "name",
                "value": "Host Discovery"
            },
            {
                "name": "reverse_lookup",
                "value": "no"
            }
        ],
        "repository": {
            "id": "1",
            "name": "Example-Repository",
            "description": ""
        },
        "canUse": "true",
        "canManage": "true",
        "plugin": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "zone": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "scanResultID": "34"
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606132783
}
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 le code statique est 200(is_success = true) : print "Successfully started asset scan {0} in Tenable Security Center.".format(name)

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, une absence de connexion au serveur, etc., affichez "Erreur lors de l'exécution de l'action "Exécuter l'analyse des composants". Raison : {0}''.format(error.Stacktrace)

Si l'asset est introuvable, affichez "Erreur lors de l'exécution de l'action "Exécuter l'analyse des composants". Motif : L'élément {0} est introuvable dans Tenable Security Center. ''.format(name)

Si le code n'est pas statique (is_success = false) : print "Error executing action "Run Asset Scan". Reason:{0}".format(error_msg)

Général

Connecteurs

Connecteur Tenable Security Center

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 :

Paramètre Type Valeur par défaut Description
DeviceProductField Chaîne device_product Nom du champ utilisé pour déterminer le produit de l'appareil.
EventClassId Chaîne nom Nom du champ utilisé pour déterminer le nom (sous-type) de l'événement.
PythonProcessTimeout Chaîne 60 Délai limite (en secondes) pour le processus Python exécutant le script actuel.
Adresse du serveur Chaîne null N/A
Nom d'utilisateur Chaîne null N/A
Mot de passe Mot de passe null N/A
Use SSL (Connexion SSL) Case à cocher Décochée N/A
Nombre maximal de jours en arrière Integer 1 Nombre de jours en arrière à partir duquel vous souhaitez récupérer les données.
Limite par cycle Integer 10 Quantité d'alertes ingérées dans le connecteur à chaque cycle d'exécution.
Adresse du serveur proxy Chaîne null Adresse du serveur proxy à utiliser.
Nom d'utilisateur du proxy Chaîne null Nom d'utilisateur du proxy pour l'authentification.
Mot de passe du proxy Mot de passe null Mot de passe du proxy pour l'authentification.

Règles du connecteur

Le connecteur est compatible avec les proxys.

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