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 aucune entité IP : Aucune adresse IP n'a été ajoutée à la liste d'adresses IP {0}.format(name)
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 :
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".
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"
}
]
Obtenir les composants associés
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 :
- Accédez à
https://INSTANCE_IP_ADDRESS/#policies. - Sélectionnez la règle que vous souhaitez utiliser.
- Dans l'URL, vous pourrez voir l'ID de cette règle.
Pour l'ID du dépôt :
- Accédez à
https://INSTANCE_IP_ADDRESS/#repositories. - Sélectionnez le dépôt que vous souhaitez utiliser dans l'action.
- 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 :
L'action doit échouer et arrêter l'exécution d'un playbook : 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.