Skip to main content
CMDashCybersecurity Maturity Dashboard
← Back to Tenable / Nessus

Tenable.io / Nessus — Integration Setup

Prerequisites

  • Tenable.io subscription (or Nessus Professional with API access)
  • Admin or Standard user with API key generation permissions
  • CMDash Essentials tier or above

Step 1: Generate API Keys

  1. Log in to Tenable.io
  2. Click your profile icon → My Account
  3. Go to the API Keys tab
  4. Click Generate (or copy existing keys)
  5. Copy both:
    • Access Key
    • Secret Key

Security note: API keys have the same permissions as your user account. Consider creating a dedicated service account with read-only permissions.

Step 2: Connect in CMDash

  1. Navigate to Integrations in your CMDash dashboard
  2. Find Tenable and click Connect
  3. Enter:
    • Access Key
    • Secret Key
  4. Click Save & Test Connection

What Syncs

Data TypeTenable APISync Frequency
Assets/assetsEvery 4 hours by default
Vulnerabilities/workbenches/vulnerabilitiesEvery 4 hours by default

Tenable Data Mapping

Tenable FieldCMDash FieldNotes
asset.idEndpoint IDUnique asset identifier
asset.fqdnHostnameFully qualified domain name
asset.ipv4IP AddressPrimary IPv4
asset.operating_systemOSOperating system string
plugin.severitySeverity0=Info, 1=Low, 2=Medium, 3=High, 4=Critical
plugin.cvss_base_scoreCVSS ScoreBase CVSS v2/v3 score
plugin.cveCVE IDsAssociated CVE identifiers

Troubleshooting

  • 401 Unauthorized: Verify API keys are correct; regenerate if necessary
  • 403 Forbidden: Your Tenable user may lack permissions; use an admin or create a service account
  • No assets returned: Ensure at least one scan has completed in Tenable; the assets API only returns scanned hosts
  • Stale vulnerability data: Tenable updates vulnerability data after each scan completes; check scan schedule in Tenable console

Rate Limits & Sync Behavior

SettingValue
Sync frequencyEvery 4 hours by default (configurable per integration)
First syncHistorical data pulled on initial connection (all assets and vulnerabilities visible to the API key's account)
Asset limitThe asset list call returns at most 5,000 assets; at that size CMDash switches to Tenable's asset export (chunked, up to 50,000 assets). If the export cannot run, the 5,000 listed are kept and the sync is flagged Partial
Vulnerability limitTenable's workbench list returns at most 5,000 vulnerabilities and has no paging; a result at that size is flagged Partial
Rate limit handlingPer-(tenant, provider) token bucket; requests are batched and rate-limited automatically
429 handlingCMDash reads the Retry-After response header and reschedules the sync accordingly; exponential backoff applied if no header is present
Vendor rate limit200 req/min
Failed sync retryDead-letter queue — see docs/developers/dead-letter.md

Tenable.io imposes a 200 req/min rate limit per API key. CMDash reads large asset inventories through Tenable's chunked asset export, spreading calls across the sync window. When a 429 is returned, CMDash honors the Retry-After header value exactly rather than applying its own backoff guess, which minimizes unnecessary wait time on Tenable's well-documented rate limit schedule.

Credential Rotation

Tenable API keys (Access Key + Secret Key) do not expire. CMDash recommends rotating them whenever team membership changes or annually at minimum.

To rotate:

  1. Log in to Tenable.io.
  2. Click your profile icon → My Account → API Keys.
  3. Click Regenerate. Note: this immediately invalidates the existing keys.
  4. Copy the new Access Key and Secret Key.
  5. In CMDash: Settings → Integrations → Tenable → Edit.
  6. Enter the new Access Key and Secret Key, then click Save.

Note: Because Tenable API keys do not carry an expiry timestamp, CMDash cannot display the 30-day warning banner for this integration. Set a calendar reminder for your chosen rotation cadence.

Multiple Instances / Multi-Site

If your organization uses multiple Tenable.io sites or a mix of Tenable.io and Tenable.sc, each instance requires a separate CMDash connection.

To add a second instance:

  1. In CMDash: Settings → Integrations → Add Integration → Tenable.
  2. Enter the credentials for the second instance.
  3. Give the connection a descriptive name that identifies the instance (e.g., Tenable - US East, Tenable - EU, Tenable.sc - On-Prem).
  4. Click Save & Test Connection.

Use clear naming conventions from the start — the integration name appears throughout the CMDash compliance dashboard and reports, so names like Tenable - US East and Tenable - EU make it easy to identify which data comes from which instance.

Compliance Framework Coverage

The Tenable integration provides evidence for the following controls. Coverage is automatically mapped when data is synced.

FrameworkControlDescription
PCI DSS11.2Internal vulnerability scans — Tenable scan results satisfy the quarterly internal scan requirement
PCI DSS11.3External vulnerability scans — external scan results mapped to PCI external scan evidence
HITRUST10.mPatch management — vulnerability age and CVSS scores used to assess patch posture
HITRUST09.aaAudit logging — scan history and asset discovery logs
CMMC L2RA.2.141Vulnerability scanning — scan results and asset coverage mapped to scanning evidence
CMMC L2RA.2.142Remediation — vulnerability age and closure data used for remediation evidence
SOC 2CC7.1Vulnerability management — Tenable findings feed the vulnerability management evidence bucket

Ready to see your posture?

Start a 30-day free trial of any paid plan — a card is required, and it converts unless you cancel — or sign up for Free with no card at all.