Skip to main content

Tenable.io

Tenable.io is a cloud-based vulnerability management tool that scans hosts in your network and generates vulnerabilities against those hosts. You can bring asset and security data from Tenable.io into Brinqa to enhance your vulnerability management capabilities, gain insights into the relationship between the vulnerabilities and your assets, construct a unified view of your attack surface, and strengthen your cybersecurity posture.

This document details the information you must provide for the connector to authenticate with Tenable.io and how to obtain that information from Tenable. See create a data integration for step-by-step instructions on setting up the integration.

Required connection settings

When setting up a data integration, select Tenable.io from the Connector drop-down. If you cannot find the connector in the drop-down, make sure that you have installed it first. You must provide the following information to authenticate Tenable.io with Brinqa:

  • API URL: The Tenable.io API URL. The default URL is https://cloud.tenable.com.

  • Access key and Secret key: The access key and secret key associated with the Tenable.io account, which must have permissions to log in to the API server and return data.

Generate Tenable.io access key and secret key

In order for the Tenable.io connector to successfully retrieve data from the Tenable.io API, the access key and secret key must be tied to a Basic user role with Can View permissions. For additional information, see Tenable.io documentation on permissions.

For the Tenable.io connector to use the Tenable.io API, you must provide an access key and secret key. Tenable.io does not allow retrieving the access key and secret key for an existing user, therefore, you must generate new keys instead.

To generate new access keys, follow these steps:

  1. Log in to your Tenable.io account.

  2. Click the Menu button on the upper-left corner of the page. A navigation pane appears.

  3. Click Settings, and then click My Account.

  4. Click the User Account button on the upper-right corner of the page, and then click the API Keys tab.

  5. Click Generate. The Generate API Keys window appears.

  6. Review the warning on the page and click Generate.

    Your new Tenable.io access key and secret key display. Copy the access key and secret key to a safe and secure location.

To generate a new access key and secret key for another user as an administrator, follow these steps:

  1. Log in to your Tenable.io account as an administrator.

  2. Click the Menu button on the upper-left corner of the page. A navigation pane appears.

  3. Click Settings, and then click Access Control.

  4. Click the name of the user for which you want to generate an access key and secret key. The Edit User page appears.

  5. In the API Keys section, click Generate API Keys.

  6. Review the warning on the page and click Replace & Generate.

    The new Tenable.io access key and secret key display. Copy the access key and secret key to a safe and secure location.

note

If you do not have permissions to create Tenable.io access and secret keys, contact your Tenable.io administrator. For additional information, see Tenable.io documentation on API keys.

Additional settings

The Tenable.io connector contains additional options for specific configuration:

  • Page size: The maximum number of records to get per API request. The default setting is 1000. It is not recommended to go over 1000.

  • Parallel requests: The maximum number of parallel API requests. The default setting is 8.

  • Maximum retries: The maximum number of times that the integration attempts to connect to the Tenable.io API before giving up and reporting a failure. The default setting is 10.

Types of data to retrieve

The Tenable.io connector can retrieve the following types of data from the Tenable.io API:

Table 1: Data retrieved from Tenable.io

Connector ObjectRequiredMaps to Data Model
AssessmentNoNot mapped
HostYesHost
ViolationYesViolation
Violation DefinitionYesViolation Definition
VulnerabilityYesVulnerability
Vulnerability DefinitionYesVulnerability Definition
info

For detailed steps on how to view the data retrieved from Tenable.io in the Brinqa Platform, see How to view your data.

Tenable compliance audit results can be found under Violations.

Attribute mappings

Expand the sections below to view the mappings between the source and the Brinqa data model attributes.

Host

Table 2: Host attribute mappings

Source Field NameMaps to Attribute
asset.agent_namesLocal variable
asset.agent_uuidLocal variable
asset.aws_availability_zoneLocal variable
asset.aws_ec2_instance_ami_idLocal variable
asset.aws_ec2_instance_group_nameLocal variable
asset.aws_ec2_instance_idLocal variable
asset.aws_ec2_instance_state_nameLocal variable
asset.aws_ec2_instance_typeLocal variable
asset.aws_ec2_nameLocal variable
asset.aws_ec2_product_codeLocal variable
asset.aws_owner_idLocal variable
asset.aws_regionLocal variable
asset.aws_subnet_idLocal variable
asset.aws_vpc_idLocal variable
asset.azure_resource_idLocal variable
asset.azure_vm_idLocal variable
asset.created_atsourceCreatedDate
asset.deleted_atLocal variable
asset.deleted_byLocal variable
asset.first_scan_timeLocal variable
asset.first_seenfirstSeen
asset.fqdnsdnsNames
asset.gcp_instance_idLocal variable
asset.gcp_project_idLocal variable
asset.gcp_zoneLocal variable
asset.has_agentLocal variable
asset.hostnameshostnames
asset.iduid
asset.ipv4sprivateIpAddresses
asset.ipv6sipAddresses
asset.last_authenticated_scan_dateLocal variable
asset.last_scan_idLocal variable
asset.last_scan_timelastScanned
asset.last_schedule_idLocal variable
asset.last_seenlastSeen
asset.mac_addressesmacAddresses
asset.mcafee_epo_agent_guidLocal variable
asset.mcafee_epo_guidLocal variable
asset.network_idLocal variable
asset.operating_systemsos
asset.public_ipv4spublicIpAddresses
asset.servicenow_sysidLocal variable
asset.sourcesLocal variable
asset.tagstags
asset.terminated_atLocal variable
asset.terminated_at/asset.delete_atstatus
asset.terminated_byLocal variable
categoriescategories
descriptiondescription
instanceIdcloudInstanceId
LAST_LICENSED_SCANLocal variable
lastScan.nameLocal variable
info

Local variable indicates that the field is processed within a specific context, such as a particular workflow or calculation. Unlike other attributes, local variables aren't mapped to the unified data models. They only exist on the source data model.

Violation

Table 3: Violation attribute mappings

Source Field NameMaps to Attribute
ACTUAL_VALUELocal variable
AUDIT_FILELocal variable
CHECK_ERRORLocal variable
CHECK_IDLocal variable
CHECK_INFOLocal variable
CHECK_NAMELocal variable
DB_TYPELocal variable
EXPECTED_VALUELocal variable
FIRST_SEENfirstSeen
HOST_IDtargets, Local variable
LAST_SEENlastSeen
PLUGIN_IDtargets, Local variable
PROFILE_NAMELocal variable
REFERENCESreferences
SEE_ALSOLocal variable
SOLUTIONrecommendation
STATUSstatus, sourceStatus, statusCategory
SYS_IDuid
info

Local variable indicates that the field is processed within a specific context, such as a particular workflow or calculation. Unlike other attributes, local variables aren't mapped to the unified data models. They only exist on the source data model.

Violation Definition

Table 4: Violation Definition attribute mappings

Source Field NameMaps to Attribute
AFFECTEDaffected
CATEGORIEScategories
CVE_IDScveIds
CVE_RECORDScveRecords
CVSS_IMPACT_SCORE_PREDICTEDLocal variable
CVSS_V2_VECTORUse CVSS calculator
CVSS_V3_IMPACT_SCORELocal variable
CVSS_V3_VECTORUse CVSS calculator
DESCRIPTIONdescription
EXPLOIT_AVAILABLELocal variable
EXPLOIT_CODE_MATURITYLocal variable
EXPLOIT_EASELocal variable
EXPLOITSexploits
NAMEname
PATCH_AVAILABLEpatchAvailable
PATCH_PUBLICATION_DATELocal variable
PLUGIN_TYPELocal variable
PRODUCT_COVERAGELocal variable
PUBLISHED_DATEpublishedDate
RECOMMENDATIONrecommendation
REFERENCESreferences
SEE_ALSOLocal variable
SEVERITYseverity, sourceSeverity, severityScore
SEVERITY_SCOREseverityScore
SOURCE_LAST_MODIFIEDsourceLastModified
SUMMARYsummary
THREAT_INTENSITYLocal variable
THREAT_RECENCYLocal variable
THREAT_SOURCESLocal variable
UIDuid
VPR_SCORELocal variable
info

Local variable indicates that the field is processed within a specific context, such as a particular workflow or calculation. Unlike other attributes, local variables aren't mapped to the unified data models. They only exist on the source data model.

Use CVSS calculator indicates that the CVSS (Common Vulnerability Scoring System) vectors and scores aren't directly mapped to a specific attribute on the UDM. Instead, a specialized library calculates the CVSS scores from the provided CVSS vector strings.

Vulnerability

Table 5: Vulnerability attribute mappings

Source Field NameMaps to Attribute
uiduid
vuln.asset.agent_uuidLocal variable
vuln.asset.fqdnprivateDnsName, publicDnsName
vuln.asset.hostnamehostnames
vuln.asset.ipv4ipAddresses
vuln.asset.mac_addressmacAddresses
vuln.asset.uuidtargets
vuln.first_foundfirstFound
vuln.last_fixedLocal variable
vuln.last_foundlastFound
vuln.outputresults
vuln.plugin.idtype
vuln.port.portport
vuln.port.protocolprotocol
vuln.scan.schedule_uuidLocal variable
vuln.scan.uuidLocal variable
vuln.severity_idseverity, sourceSeverity
vuln.severity_modification_typeLocal variable
vuln.statestatus, statusCategory
info

Local variable indicates that the field is processed within a specific context, such as a particular workflow or calculation. Unlike other attributes, local variables aren't mapped to the unified data models. They only exist on the source data model.

Vulnerability Definition

Table 6: Vulnerability Definition attribute mappings

Source Field NameMaps to Attribute
cvss_vectorUse CVSS calculator
drivers.cvss3_impact_scoreLocal variable
drivers.cvss_impact_score_predictedLocal variable
drivers.exploit_code_maturityLocal variable
drivers.exploitability_easeLocal variable
drivers.product_coverageLocal variable
drivers.threat_intensity_last28Local variable
drivers.threat_recencyLocal variable
drivers.threat_sources_last28Local variable
familycategories
plugin.attributes.cpeaffected
plugin.attributes.descriptiondescription
plugin.attributes.exploit_availableLocal variable
plugin.attributes.exploit_framework_exploits
plugin.attributes.exploitability_easeLocal variable
plugin.attributes.has_patchpatchAvailable
plugin.attributes.patch_publication_datepatchPublishedDate
plugin.attributes.plugin_modification_datesourceLastModified
plugin.attributes.plugin_typeLocal variable
plugin.attributes.risk_factorsourceSeverity, severity, severityScore
plugin.attributes.see_alsoLocal variable
plugin.attributes.solutionrecommendation
plugin.attributes.synopsissummary
plugin.attributes.vprLocal variable
plugin.attributes.vuln_publication-datepublishedDate
plugin.attributes.xrefcveIds, cveRecords
plugin,attributes.xrefcveIds, cveRecords
PLUGIN_PREFIX + plugin.iduid
plugin.namename
info

Local variable indicates that the field is processed within a specific context, such as a particular workflow or calculation. Unlike other attributes, local variables aren't mapped to the unified data models. They only exist on the source data model.

Use CVSS calculator indicates that the CVSS (Common Vulnerability Scoring System) vectors and scores aren't directly mapped to a specific attribute on the UDM. Instead, a specialized library calculates the CVSS scores from the provided CVSS vector strings.

Operation options

The Tenable.io connector supports the following operation options. Expand the sections below to view the operation options per supported connector object. See connector operation options for information about how to apply them.

Host operation options

Table 7: Host operation options

Connector ObjectOptionAll Possible ValuesDescriptionExample
Hostchunk_sizeAny number ranges from 100-10000Specifies the number of hosts that are exported in a batch. Tenable recommends not exceeding 5000.Key: chunk_size Value: 100. This key and value combination only retrieves 100 hosts at a time. Once 100 hosts are exported, the next group of 100 hosts exports.
has_plugin_resultstrue or falseFilters hosts by whether or not they have plugin results associated with it.Key: has_plugin_results Value: true. This key and value combination only retrieves hosts that have plugin results.
is_deletedtrue or falseFilters hosts by whether or not they have been deleted.Key: is_deleted Value: false. This key and value combination only retrieves hosts that exist and are active.
is_licensedtrue or falseFilters hosts by whether or not they are included in the asset count for Tenable.io.Key: is_licensed Value: true. This key and value combination only retrieves hosts that are licensed and authorized to run.
is_terminatedtrue or falseFilters hosts by whether or not they have been terminated.Key: is_terminated Value: true. This key and value combination only retrieves hosts that have been terminated.
last_assessedAny date value in the Unix timestamp formatReturns all hosts with a last assessed time later than the specified date.Key: last_assessed Value: 1593000000. This key and value combination only retrieves hosts that have been assessed since (UTC) July 12th, 2020 at 21:40:00.
servicenow_sysidtrue or falseFilters hosts by whether or not they have a ServiceNow Sys ID.Key: servicenow_sysid Value: true. This key and value combination only retrieves hosts that have a ServiceNow Sys ID.
sourcesAWS, NESSUS_AGENT, PVS, NESSUS_SCAN, or WASA comma-separated list of sources that filter hosts by whether or not they are discovered by the specified source.Key: sources Value: NESSUS_SCAN, AWS. This key and value combination only retrieves hosts that are from AWS or discovered in a Nessus scan.
tag.<category>Any Tenable.io tag category nameFilters hosts with the specified tag category. For additional information on tags, see Tenable.io documentationKey: tag.<category> Value: Test2. This key and value combination only retrieves hosts with the Test2 tag category.
note

The option keys and values are case-sensitive as they are shown in this documentation.

Violation operation options

Table 8: Violation operation options

Connector ObjectOptionAll Possible ValuesDescriptionExample
ViolationchunkTimeoutAny time value in secondsSpecifies the maximum amount of time in seconds to wait for a chunk of violation data to be retrieved.Key: chunkTimeout Value: 60. This key and value combination sets the timeout for chunk retrieval to 60 seconds.
exportTimeoutAny time value in secondsSpecifies the maximum amount of time in seconds to wait for the entire violation data export process to complete.Key: exportTimeout Value: 300. This key and value combination sets the export process timeout to 5 minutes.
initialTimeoutAny time value in secondsDefines the initial waiting time in seconds before the export process begins.Key: initialTimeout Value: 30. This key and value combination sets an initial delay of 30 seconds before starting the export.
last_seenAny date value in the Unix timestamp formatReturns all violations with a last seen time later than the specified date.Key: last_seen Value: 1609459200. This key and value combination only retrieves violations seen after January 1, 2021.
num_findingsAny number ranges from 50-5000Specifies the number of findings used to chunk the vulnerabilities.Key: num_findings Value: 1000. This key and value combination retrieves violations for 1000 findings at a time. Once the violations for the 1000 findings are exported, the violations for the next group of 1000 findings export.
pollIntervalAny time value in secondsSets the interval time in seconds between polling attempts for new data.Key: pollInterval Value: 10. This key and value combination sets the polling interval for new violations to 10 seconds.
note

The option keys and values are case-sensitive as they are shown in this documentation.

Vulnerability operation options

Table 9: Vulnerability operation options

Connector ObjectOptionAll Possible ValuesDescriptionExample
Vulnerabilitycidr_rangeAny range of IP addresses assigned to the hosts in your networkRestricts search for vulnerabilities to the hosts assigned an IP address within the specified CIDR range.Key: cidr_range Value: 192.168.0.0/24. This key and value combination only retrieves vulnerabilities on the hosts bearing the IP addresses from 192.168.0.1 to 192.168.0.254.
include_unlicensedtrue or falseFilters vulnerabilities by whether or not to include unlicensed hosts.Key: include_unlicensed Value: true. This key and value combination retrieves vulnerabilities from both licensed and unlicensed hosts.
num_assetsAny number ranges from 50-5000Specifies the number of hosts used to chunk the vulnerabilities.Key: num_assets Value: 100. This key and value combination retrieves vulnerabilities for 100 hosts at a time. Once the vulnerabilities for the 100 hosts are exported, the vulnerabilities for the next group of 100 hosts export.
plugin_familyAny Tenable.io plugin family stringFilters vulnerabilities by whether or not they are related to the specified plugin family.Key: plugin_family Value: operating systems. This key and value combination only retrieves vulnerabilities related to the operating systems plugin family.
plugin_idAny supported Tenable.io plugin ID numberFilters vulnerabilities by whether or not they are related to the specific plugin ID.Key: plugin_id Value: 10150. This key and value combination only retrieves vulnerabilities associated with plugin ID 10150.
plugin_typeAny supported plugin type: remote, local, combined, etc.Filters vulnerabilities by whether or not they are related to the specified plugin type.Key: plugin_type Value: mobile. This key and value combination only retrieves vulnerabilities associated with the mobile plugin type.
severitylow, medium, high, or criticalReturns all vulnerabilities of the specified severity.Key: severity Value: critical. This key and value combination only retrieves the critical vulnerabilities found in a scan.
sinceAny date value in the Unix timestamp formatReturns all vulnerabilities seen since the specified date value.Key: since Value: 1593000000. This key and value combination only retrieves vulnerabilities that exist since (UTC) July 12th, 2020 at 21:40:00.
state or statusfixed, open, or reopenedReturns all vulnerabilities with the specified state or status.Key: status Value: open. This key and value combination only retrieves open vulnerabilities. You can use state for the key in place of status and it produces the same result.
tag.<category>Any Tenable.io tag category nameReturns all vulnerabilities with the specified tag category. For additional information on tags, see Tenable.io documentationKey: tag.<category> Value: Test2. This key and value combination only retrieves vulnerabilities with the Test2 tag category.
vpr_scoreAny numeric value from 0.1-10.0Retrieve all vulnerabilities with a Vulnerability Priority Rating (VPR) score of the specified value or higher.Key: vpr_score Value: 7. This key and value combination retrieves all vulnerabilities with a VPR score of 7 or higher.
note

The option keys and values are case-sensitive as they are shown in this documentation.

APIs

The Tenable.io connector uses the Tenable.io REST API. Specifically, it uses the following endpoints:

Table 10: Tenable.io REST API Endpoints

Connector ObjectAPI Endpoints
HostPOST https://cloud.tenable.com/assets/export
POST https://cloud.tenable.com/assets/export/{export_uuid}/cancel
GET https://cloud.tenable.com/assets/export/{export_uuid}/chunks/{chunk_id}
GET https://cloud.tenable.com/assets/export/{export_uuid}/status
ViolationPOST https://cloud.tenable.com/compliance/export
GET https://cloud.tenable.com/compliance/export/{export_uid}/chunks/{check_id}
GET https://cloud.tenable.com/plugins/families/{familyId}
Violation DefinitionGET https://cloud.tenable.com/plugins/families/
GET https://cloud.tenable.com/plugins/plugin
VulnerabilityPOST https://cloud.tenable.com/vulns/export
POST https://cloud.tenable.com/vulns/export/{export_uuid}/cancel
GET https://cloud.tenable.com/vulns/export/{export_uuid}/chunks/{chunk_id}
GET https://cloud.tenable.com/vulns/export/{export_uuid}/status
Vulnerability DefinitionGET https://cloud.tenable.com/plugins/families
GET https://cloud.tenable.com/plugins/families/{familyId}
GET https://cloud.tenable.com/plugins/plugin

Changelog

The Tenable.io connector has undergone the following changes:

3.1.19

  • Added two connector objects, Violation and Violation Definition.

  • Started fetching Tenable Compliance Check results and storing them as violations.

3.1.17

  • Changed the data type of 'acr_score' and 'exposure_score' from Integer to Double to align with the API response format.

3.1.16

  • Addressed precision issues by changing the data type for CVSS scores from Float to Double.

3.1.15

  • Changed the SOURCE_SEVERITY attribute to a String type.

  • Added a SOURCE_SEVERITY_SCORE attribute in the Vulnerability and Vulnerability Definition object.

3.1.12

  • Added a new setting to configure maximum retries.

3.1.11

  • Added a SOURCE_STATUS attribute in the Vulnerability object to store the source finding statuses.

  • Added a method to normalize the source finding statuses.

3.1.3

  • Started retrieving scans of all statuses.

3.1.2

  • Added a check for null or empty dates.

3.1.1

  • Started retrieving name, rrules, starttime, and uuid from the Tenable vulnerability management scans.

3.0.11

  • Added a SEVERITY_MODIFICATION_TYPE attribute in the Vulnerability object.

3.0.8

  • Added some new attributes in the Host object, including AWS_EC2_INSTANCE_ID, AZURE_RESOURCE_ID, and GCP_INSTANCE_ID.

  • Used AZURE_VM_ID, if available, as the instance ID of Azure hosts.

3.0.7

  • Added 'SSM' as a valid source for hosts.

3.0.6

  • Added a LAST_SCAN_NAME attribute in the Host object.

3.0.5

  • Added a PATCH_PUBLICATION_DATE attribute in the Vulnerability Definition object.

3.0.3

  • Fixed an issue in parsing CVSS v3 vectors.

3.0.0