Tenable
D Tenable Vulnerability Management / Tenable One cloud API
The Tenable One / Vulnerability Management API (cloud.tenable.com) accepts only a static access key and secret key pair per user, sent in the X-ApiKeys header. Keys never expire and are not reported to GitHub, but they can be regenerated via the API, held by an API-only user with a custom role, and show a last-used time. Into your cloud it is keyless on AWS and GCP, while the Azure connector wants a client secret.
Docs: developer.tenable.com · Checked 2026-10-22 · source YAML · dispute via PR
Inbound D
How a workload running anywhere authenticates to this product.
One static access key + secret key pair per Tenable user account, sent as "X-ApiKeys: accessKey=...; secretKey=..." to cloud.tenable.com. The same pair covers every licensed Tenable One product on the container. No OIDC, workload identity or token-exchange path exists.
- developer.tenable.com checked 2026-10-22
“Tenable's cloud platform generates a unique set of API keys for each user account.”
- developer.tenable.com checked 2026-10-22
“To authorize your application to use the Tenable's API, you must include the X-ApiKeys header element in your HTTP request messages.”
- developer.tenable.com checked 2026-10-22
“The Vulnerability Management API uses key-based authentication, which pairs an access key and a secret key in request headers.”
- docs.tenable.com checked 2026-10-22
“Note: Tenable One Vulnerability Management API access and secret keys are required to authenticate with the Tenable One Vulnerability Management API.”
- docs.tenable.com checked 2026-10-22
“You cannot set separate keys for individual products. For example, if you generate API keys in Tenable One Vulnerability Management, this action also changes the API keys for Tenable One Web App Scanning and Tenable Container Security.”
- developer.tenable.com checked 2026-10-22
“"description": "Format - accessKey=ACCESS_KEY;secretKey=SECRET_KEY"”
- docs.tenable.com checked 2026-10-22
“Tenable One Vulnerability Management allows you to restrict access to the Tenable One Vulnerability Management API by specifying which IPv4 and/or IPv6 addresses can access the API.”
Graded on the cloud.tenable.com platform API that Vulnerability Management, Web App Scanning, Exposure Management and the cloud connectors are automated through; every OpenAPI spec checked on the developer portal declares the single X-ApiKeys security scheme, and nothing documents OIDC, GitHub Actions, cloud workload identity or a token exchange. SAML SSO exists for humans only. The optional API IP allowlist (API Access Security) narrows where a key works but does not change that it is a long-lived secret. Each user holds only one key pair at a time, so rotation is a hard cut-over with no overlap window. Tenable One Cloud Exposure (ex-Ermetic) has its own GraphQL API documented only behind a login, so its auth is not publicly verifiable and is not graded here. Inbound moves to B or A only if the platform accepts a federated token. No tier gate: API keys come with every subscription.
Outbound B
How this product reaches into your cloud, repos, or other SaaS.
Vulnerability Management cloud connectors are keyless on AWS (an IAM role named tenableio-connector trusting Tenable's AWS account, with your container ID as External ID) and on GCP (a Workload Identity Federation pool trusting Tenable's AWS role, which impersonates your service account). The Azure connector only takes an app registration's client secret; keyed AWS (access key) and GCP (service-account JSON key) options also remain.
- docs.tenable.com checked 2026-10-22
“Vulnerability Management includes connectors for AWS, GCP, and Microsoft Azure.”
- docs.tenable.com checked 2026-10-22
“Note: 012615275169 is the account ID of the Tenable AWS account that you will be establishing a trust relationship with to support AWS role delegation.”
- docs.tenable.com checked 2026-10-22
“Select the Require external ID check box, and type the Tenable One Vulnerability Management container ID that you obtained in step 1.”
- docs.tenable.com checked 2026-10-22
“To create a GCP Workload Identity Federation cloud connector, you must create a workload identity pool in GCP.”
- docs.tenable.com checked 2026-10-22
“Select the Grant access using Service Account Impersonation option.”
- docs.tenable.com checked 2026-10-22
“In the Client Secret box, type the client secret obtained when configuring Microsoft Azure.”
- developer.tenable.com checked 2026-10-22
“"description": "The type of cloud connector. Types include `aws`, `aws_keyless`, `aws_fa`, `azure`, `azure_fa`, `gcp`, or `gcp_keyless`."”
- developer.tenable.com checked 2026-10-22
“A Base64-encoded string value of the service account key JSON file.”
- docs.tenable.com checked 2026-10-22
“The connector requires three values from a Microsoft Entra ID app registration: the Tenant ID, the Client ID, and the Client Secret.”
- developer.tenable.com checked 2026-10-22
“Creates a new Microsoft Azure key with keyless authentication in the business of the current user.”
- blog.51sec.org checked 2026-10-22
“You will have to use Global Administrator role account to grant permissions and log in.”
- blog.51sec.org checked 2026-10-22
“Assign roles to the Tenable Cloud Security Connector app by repeating the steps below for each of the following roles:”
- docs.tenable.com checked 2026-10-22
“User Guides (Requires Login)”
Checked: Vulnerability Management cloud connectors (AWS keyed `aws`, AWS keyless `aws_keyless`, AWS and Azure Frictionless Assessment `aws_fa`/`azure_fa`, Azure `azure`, GCP keyed `gcp`, GCP Workload Identity Federation `gcp_keyless`); Tenable One Exposure Management third-party connectors (Microsoft Defender for Cloud shown: Entra app client secret; other SaaS connectors similarly take the source tool's API credentials); Attack Surface Management cloud integrations (keyless options for AWS, Azure and GCP); Tenable Cloud Security / Cloud Exposure onboarding. AWS and GCP are keyless (external ID on AWS; on GCP the trust is Tenable's AWS role via WIF, not a key). The VM Azure connector and its Frictionless Assessment variant both take a tenant ID, application ID and client secret, with no keyless option, which holds outbound at B. Tenable Cloud Security's own docs moved behind a login (the old docs.tenable.com/tenablecs pages now redirect to an EOL notice), so its onboarding is not publicly verifiable from Tenable; a third-party walkthrough shows Azure onboarding as Global Administrator consent plus role assignments to Tenable's multi-tenant "Tenable Cloud Security Connector" app (keyless); AWS and GCP onboarding for Cloud Security could not be checked. A keyless (federated credential or multi-tenant app) option on the VM Azure connector would lift outbound to A.
Hygiene for any static credential the product still issues
| ✗ Expiry enforceable | Fails: no expiry can be set on a key. The Generate API keys endpoint takes only the user ID and returns accessKey and secretKey, the UI has no expiry field, and Tenable's security best-practices guide leaves rotation to the customer. User accounts expire only with the container's license. An org-enforced maximum key lifetime would flip this check.
|
| ✓ Rotation via API | PUT /users/{user_id}/keys mints a new pair and kills the old one, and PUT /users/{user_id}/authorizations can switch API access off, so rotation and revocation can be scripted. Because a user holds only one pair, the new key must be deployed at the same moment the old one dies; there is no overlap.
|
| ✓ Scoped keys | Keys have no scopes of their own and inherit the owning user's role and permissions. Passed because Tenable documents an API-only user account (API Key authorization only, no password or SAML login) that can be given a narrow built-in role (e.g. Read-Only) or a custom role plus asset permissions, the same call as material-security's dedicated service account. A key on a human administrator's account carries all of that admin's access.
|
| ✓ Last-used visible | GET /users and GET /users/{id} return last_apikey_access, so unused keys can be found. It is per user, which equals per key because each user has one pair.
|
| ✗ Leak revocation | Tenable does not appear in GitHub's supported secret scanning patterns table at all, so a leaked access/secret key pair is neither reported to Tenable nor flagged by default. The keys are bare 64-character hex strings with no prefix, which also makes them hard to detect.
|
Notes
One card for the cloud.tenable.com platform API shared by Tenable Vulnerability Management, Web App Scanning, Container Security and Tenable One Exposure Management; one key pair serves them all. Tenable Security Center (on-prem) has its own API keys and is not graded here. Three of five hygiene checks pass (rotation API, API-only users with custom roles, last API access), which keeps inbound at D; a key that can expire and GitHub partner revocation would add the other two. Inbound moves to B or A only if the platform accepts a federated token. Outbound moves to A with a keyless Azure connector.
Badge
[](https://wif.tax/p/tenable-vulnerability-management/)