{"id":28426853,"url":"https://github.com/tenable/tenable-connectors","last_synced_at":"2026-01-20T17:37:10.239Z","repository":{"id":267717498,"uuid":"901364214","full_name":"tenable/tenable-connectors","owner":"tenable","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-24T20:25:15.000Z","size":329,"stargazers_count":2,"open_issues_count":1,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-06-05T11:40:46.307Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tenable.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-10T14:20:51.000Z","updated_at":"2025-05-21T00:39:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"e5e2c2dc-cd87-4881-915d-7f18217aed47","html_url":"https://github.com/tenable/tenable-connectors","commit_stats":null,"previous_names":["tenable/tenable-connectors"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tenable/tenable-connectors","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenable%2Ftenable-connectors","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenable%2Ftenable-connectors/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenable%2Ftenable-connectors/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenable%2Ftenable-connectors/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tenable","download_url":"https://codeload.github.com/tenable/tenable-connectors/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenable%2Ftenable-connectors/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261785216,"owners_count":23209262,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-05T11:30:50.580Z","updated_at":"2026-01-20T17:37:10.232Z","avatar_url":"https://github.com/tenable.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tenable Connectors Mono-Repo\n\nThis is the Tenable Integration Framework's officially supported connectors repository. All connectors that are\naccepted into this main branch will be built and deployed for use with the Tenable Integration Framework (hereby simply\nreferred as the \"framework\" within this document). While each connector is effectively a individual python project\nthey are all collectively stored here in order to provide a consistent and unified testing and deployment process that\ncan be controlled and maintained in a single place.\n\n## Repository Layout\n\nThe `base` folder contains the required docker-related files for universally building any of the connecters. The\n`Dockerfile` that is stored within this folder should generally be quite close to the one that is vendored within the\n`tenint` python library that any developer can use to build \u0026 test connectors locally. These files should rarely be\nupdated (mostly to update the pinnings for any dependent libraries).\n\nThe `connectors` folder contains a list of sub-folders (one for each connector) and the folder names should closely\nmatch the name of the connector itself.\n\n## Connector Layout\n\nConnectors are built using the template defined within the `tenint` python library and at a minimum must contain the\nfollowing files:\n\n- **pyproject.toml**: This file contains all the relevent information on how to setup the connector with `uv`, as well\n  as the required metadata in order to construct the marketplace object for the connector. For details on the required\n  fields, refer to the documentation in the `tenint` library.\n\n- **connector.py**: The connector runtime script. This file (as defined by the tenint library) describes the connector\n  configuration settings, any required credential settings, and the connector's `main` function to execute whatever\n  additional code is needed to launch the connector itself.\n\n- **logo.svg**: An Scalable Vector Graphics file with the associated logo icon to be displayed with the connector in\n  the connector marketplace.\n\n- **README.md**: A readme file with any details, instructions, or other information related to the connector itself.\n\n- **tests**: The folder containing the unit tests for the connector. These tests are run using the `pytest` testing suite.\n\nMost of the connectors will contain additional files and folders depending on whats required to drive the connector.\nThis is prerfectly alright, but all of the above must exist. Some additional requirements that all connectors must at a\nminimum meet are the following:\n\n- **Greater than 80% test coverage**\n- **Clean code linting from ruff**\n- **Clean CodeQL report**\n- **No issues greater than medium in Bandit**\n- **No discovered issues from pip-audit**\n- **No discovered issued from Snyk**\n\n## How to develop a connector\n\n**NOTE** Will be written when we're ready to start accepting outside written integrations\n\n## Running the testing TIF instance\n\nThere is an included vagrant file to help enable quick testing of connector images. This VM image exposes Cockpit on\nport `9090` and can be interfaced by pointing a web browser to `https://localhost:9090`. A random root password is\nalso generated and presented as the last line in the setup process for the VM. Look for a line in the provisioning\noutput that looks like:\n\n```\ndefault: root password is set to 'ZDU3OTU5OWZjZTE0YTkxZTU3ZjJhMjEw'\n```\n\n### Initial Install and Setup on MacOS\n\n1. Install `brew`\n2. Install QEMU `brew install qemu libvirt`\n3. Install Vagrant `brew install --cask vagrant`\n4. Install the Vagrant QEMU plugin `vagrant plugin install vagrant-qemu`\n\n### Deploying a new VM\n\n```\nvagrant up --provider=qemu\n```\n\n### Stopping the VM\n\n```\nvagrant halt\n```\n\n### Destroying the VM\n\n```\nvagrant destroy\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftenable%2Ftenable-connectors","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftenable%2Ftenable-connectors","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftenable%2Ftenable-connectors/lists"}