Kong Konnect
Visualize your Kong Konnect API gateway estate in the JupiterOne graph — the Control Planes in your organization and the Gateway configuration each one owns: the Services traffic is proxied to, the Routes that match requests to them, the Consumers that call them, and the Plugins enforcing authentication, rate limiting and other policy. Plugins are linked to the Service, Route or Consumer they protect, so you can see which of your APIs are behind an auth plugin and which are exposed without one. TLS Certificates and Consumer Group membership are ingested alongside, letting you audit gateway policy coverage and monitor configuration changes through queries and alerts.
- Installation
- Authorization
- Data Model
- Types
Installation
This integration reads your Kong Konnect organization through the Konnect Control Planes and Control Planes Config v2 APIs — the Control Planes in your organization, and the Gateway configuration each one owns: Services, Routes, Consumers, Consumer Groups, Plugins and Certificates. It is read-only, issuing only GET requests, and never modifies your Gateway configuration.
Plugins are attached to the Service, Route or Consumer they are scoped to, and Routes to the Service they proxy to, so gateway policy coverage is queryable directly from the graph.
Prerequisites
- A Kong Konnect organization.
- The geographic region your organization is hosted in. Konnect data is geo-scoped, so this determines which API host the integration reads from — see Choosing a region below.
- A Konnect access token with read access to your Control Planes — see Creating an access token below.
- Access to JupiterOne with permission to configure integrations.
Choosing a region
Konnect runs in six geographic regions, and each one is served from its own API host:
| Region | API host |
|---|---|
United States (us) | https://us.api.konghq.com |
Europe (eu) | https://eu.api.konghq.com |
Australia (au) | https://au.api.konghq.com |
India (in) | https://in.api.konghq.com |
Middle East (me) | https://me.api.konghq.com |
Singapore (sg) | https://sg.api.konghq.com |
Konnect objects such as Control Planes, Services and Consumers are geo-specific — an object created in one region does not exist in another, and only authentication, billing and usage are shared between regions. An integration instance therefore sees exactly one region. If your organization operates in more than one, create one instance per region.
The Singapore region must be opted into by a Konnect org admin in the region picker before it can be used. See Geographic regions for the current list.
Creating an access token
The integration authenticates with a bearer token, and accepts either kind of Konnect access token:
- A Personal Access Token (PAT), prefixed
kpat_, tied to a user account. - A System Account Access Token (SPAT), prefixed
spat_, tied to a system account.
A system account is the better choice for an integration: it is not tied to a person, so the integration keeps working when that person's access changes or they leave the organization. System accounts cannot sign in to the Konnect UI and exist only for API use.
To create a personal access token, select your user icon in Konnect to open the context menu, click Personal access tokens, then click Generate token.
The token is displayed only once, when it is generated. Record it before leaving the page — if you lose it, you must generate a new one.
Granting read access
A Konnect token carries exactly the access of the identity it belongs to — Konnect has no separate scopes or permission strings for tokens, only the RBAC roles assigned to that user or system account.
Assign the Control Planes → Viewer role, which grants "read only access to all entities within a control plane" and covers everything this integration reads. Roles can be scoped to one Control Plane or to all Control Planes.
Scope the role to all Control Planes. GET /control-planes returns only the Control Planes the identity has a role on, so a token scoped to a subset silently ingests only that subset rather than reporting an error. If you intend to cover the whole organization, grant the role organization-wide — or use the predefined Organization Admin (Read Only) team, which can view all entities and configuration in the organization.
See Teams and roles for how roles are assigned to users, teams and system accounts.
Personal access tokens have a maximum lifetime of 12 months, are limited to 10 per user, and are revoked after 12 months of inactivity. Plan a rotation before the token expires, or the integration will begin failing authentication.
Configuration in JupiterOne
To install the Kong Konnect integration in JupiterOne, navigate to the Integrations tab in JupiterOne and select Kong Konnect. Click New Instance to begin configuring your integration.
Creating an instance requires the following:
-
The Account Name used to identify the Kong Konnect account in JupiterOne. Ingested entities will have this value stored in
tag.AccountNamewhen theAccountNametoggle is enabled. -
Description to assist in identifying the integration instance, if desired.
-
Polling Interval that you feel is sufficient for your monitoring needs. You may leave this as
DISABLEDand manually execute the integration. -
Your Personal Access Token — the
kpat_orspat_token you created above. -
Your Region — the geographic region your Konnect organization is hosted in, selected from the list.
Click Create once all values are provided to finalize the integration.
Data sources
You can narrow what the integration collects from the instance's ingestion source settings. All sources are enabled by default.
| Ingestion source | Default | Data collected |
|---|---|---|
| Fetch Control Planes | Enabled | The Control Planes in your organization, with cluster type, data-plane auth type, and the Control Plane and telemetry endpoints. |
| Fetch Services | Enabled | Gateway Services — the upstreams Kong proxies to — with the upstream address, protocol, timeouts, retries and TLS verification setting. |
| Fetch Routes | Enabled | Routes and their matching rules (protocols, methods, hosts, paths, SNIs or router expression), and the Service each one proxies to. |
| Fetch Consumers | Enabled | Consumers — the clients of your proxied Services — with their username and custom ID. |
| Fetch Consumer Groups | Enabled | Consumer Groups used to apply shared policy, and which Consumers belong to each. |
| Fetch Plugins | Enabled | Plugins, the policy they represent, whether they are enabled, and the Service, Route or Consumer each one is scoped to. |
| Fetch Certificates | Enabled | TLS Certificate metadata and the SNI hostnames associated with each. |
Sources build on one another, and disabling one also disables the sources that depend on it:
- Fetch Control Planes underpins every other source — Gateway configuration is read per Control Plane, so disabling it disables all of them.
- Fetch Routes depends on Fetch Services, so that each Route can be linked to the Service it proxies to.
- Fetch Consumer Groups depends on Fetch Consumers, so that group membership can be resolved.
- Fetch Plugins depends on Fetch Services, Fetch Routes and Fetch Consumers, so that each Plugin can be attached to what it protects. Because Plugins carry your authentication and rate-limiting policy, check this before turning any of those three off.
Certificate private keys are never ingested. The Konnect API returns the PEM cert and key material on every Certificate, and the integration discards it before anything is written to the graph — only the certificate ID, SNIs, tags and timestamps are kept. Plugin config blocks are discarded the same way, since they hold credentials for several plugin types.
Control Plane groups are ingested as Control Planes but their Gateway configuration is not read separately. A group is a read-only Control Plane that combines the configuration of its member Control Planes under the same entity IDs, so reading both would duplicate every Service, Route, Consumer, Plugin and Certificate. The members are ingested directly instead, and each skipped group is recorded in the job log.
Next steps
Now that your integration instance has been configured, it will begin running on the polling interval you provided, populating data within JupiterOne. Continue on to our Instance management guide to learn more about working with and editing integration instances.
Additional resources
- Konnect API authentication — personal access tokens, system accounts and the regional API hosts
- Geographic regions — the Konnect regions and what is scoped to each
- Teams and roles — the Control Planes roles and how they are assigned
- Control plane groups — how a group combines its members' configuration
- Konnect Control Planes Config API — the Gateway configuration endpoints this integration reads
Roles
RBAC roles that must be assigned to the integration principal.
Show Roles (1)
Control Planes: Viewer
Endpoints
API endpoints that the integration makes requests to.
Show Endpoints (8)
GET /control-planesGET /control-planes/{controlPlaneId}/core-entities/certificatesGET /control-planes/{controlPlaneId}/core-entities/consumer_groupsGET /control-planes/{controlPlaneId}/core-entities/consumer_groups/{ConsumerGroupId}/consumersGET /control-planes/{controlPlaneId}/core-entities/consumersGET /control-planes/{controlPlaneId}/core-entities/pluginsGET /control-planes/{controlPlaneId}/core-entities/routesGET /control-planes/{controlPlaneId}/core-entities/services
Documentation Links
Links to provider documentation relevant to setup and configuration.
Show Documentation Links (3)
Per-Step Breakdown
Detailed authorization requirements for each ingestion step.
Show all steps (6)
| Step | Roles | Endpoints |
|---|---|---|
| Fetch Certificates | Control Planes: Viewer | GET /control-planes/{controlPlaneId}/core-entities/certificates |
| Fetch Consumer Groups | Control Planes: Viewer | GET /control-planes/{controlPlaneId}/core-entities/consumer_groups, GET /control-planes/{controlPlaneId}/core-entities/consumer_groups/{ConsumerGroupId}/consumers |
| Fetch Consumers | Control Planes: Viewer | GET /control-planes/{controlPlaneId}/core-entities/consumers |
| Fetch Plugins | Control Planes: Viewer | GET /control-planes/{controlPlaneId}/core-entities/plugins |
| Fetch Routes | Control Planes: Viewer | GET /control-planes/{controlPlaneId}/core-entities/routes |
| Fetch Services | Control Planes: Viewer | GET /control-planes/{controlPlaneId}/core-entities/services |
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Account | kong_account | Account |
| Certificate | kong_certificate | Certificate |
| Consumer | kong_consumer | User |
| ConsumerGroup | kong_consumer_group | UserGroup |
| ControlPlane | kong_control_plane | Gateway |
| Plugin | kong_plugin | Configuration |
| Route | kong_route | Configuration |
| Service | kong_service | ApplicationEndpoint |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
kong_account | HAS | kong_control_plane |
kong_consumer_group | HAS | kong_consumer |
kong_control_plane | HAS | kong_service |
kong_control_plane | HAS | kong_route |
kong_control_plane | HAS | kong_consumer |
kong_control_plane | HAS | kong_consumer_group |
kong_control_plane | HAS | kong_plugin |
kong_control_plane | HAS | kong_certificate |
kong_plugin | PROTECTS | kong_service |
kong_plugin | PROTECTS | kong_route |
kong_plugin | PROTECTS | kong_consumer |
kong_route | CONNECTS | kong_service |
Kong Account
kong_account inherits from Account
| Property | Type | Description | Specifications |
|---|---|---|---|
region * | string | The Kong Konnect geographic region hosting the organization ('us', 'eu', 'au', 'in' or 'me'). |
Kong Certificate
kong_certificate inherits from Certificate
| Property | Type | Description | Specifications |
|---|---|---|---|
snis * | array | null | Server Name Indication hostnames associated with the Certificate. |
Kong Consumer
kong_consumer inherits from User
| Property | Type | Description | Specifications |
|---|---|---|---|
customId * | string | null | An existing unique ID for the Consumer, for mapping to an external datastore. |
Kong Consumer Group
kong_consumer_group inherits from UserGroup
Kong Control Plane
kong_control_plane inherits from Gateway
| Property | Type | Description | Specifications |
|---|---|---|---|
authType * | string | null | The data-plane auth type ('pinned_client_certs' or 'pki_client_certs'). | |
clusterType * | string | null | The cluster type of the Control Plane (e.g. 'CLUSTER_TYPE_CONTROL_PLANE'). | |
controlPlaneEndpoint * | string | null | The Control Plane endpoint URL for data planes. | |
isCloudGateway * | boolean | null | Whether the Control Plane can be used for cloud gateways. | |
telemetryEndpoint * | string | null | The telemetry endpoint URL for data planes. |
Kong Plugin
kong_plugin inherits from Configuration
| Property | Type | Description | Specifications |
|---|---|---|---|
consumerGroupId * | string | null | The id of the Consumer Group the Plugin is scoped to, if any. | |
instanceName * | string | null | An optional unique instance name for the Plugin. | |
isEnabled * | boolean | null | Whether the Plugin is enabled. | |
pluginName * | string | The Kong plugin type name (e.g. 'rate-limiting', 'key-auth', 'cors'). | |
protocols * | array | null | Protocols the Plugin applies to. |
Kong Route
kong_route inherits from Configuration
| Property | Type | Description | Specifications |
|---|---|---|---|
expression * | string | null | Router Expression used to match the Route (expressions router flavor). | |
hosts * | array | null | Domain names that match this Route. | |
httpsRedirectStatusCode * | number | null | Status code Kong responds with to redirect HTTP requests to HTTPS. | |
isPreserveHostEnabled * | boolean | null | Whether the request Host header is used in the upstream request. | |
isStripPathEnabled * | boolean | null | Whether the matching path prefix is stripped from the upstream request URL. | |
methods * | array | null | HTTP methods that match this Route. | |
pathHandling * | string | null | How Service and Route paths are combined ('v0' or 'v1'). | |
paths * | array | null | Paths that match this Route. | |
protocols * | array | null | Protocols this Route allows (e.g. http, https, grpc). | |
snis * | array | null | SNIs that match this Route (for tls/tls_passthrough). |
Kong Service
kong_service inherits from ApplicationEndpoint
| Property | Type | Description | Specifications |
|---|---|---|---|
connectTimeout * | number | null | Timeout in milliseconds for establishing a connection to the upstream. | |
host * | string | The host of the upstream server. | |
isEnabled * | boolean | null | Whether the Service is active. | |
isTlsVerificationEnabled * | boolean | null | Whether verification of the upstream TLS certificate is enabled. | |
path * | string | null | The path used in requests to the upstream server. | |
port * | number | null | The upstream server port. | |
protocol * | string | null | The protocol used to communicate with the upstream (e.g. 'http', 'https', 'grpc'). | |
readTimeout * | number | null | Timeout in milliseconds between two successive read operations. | |
retries * | number | null | The number of retries to execute upon proxy failure. | |
writeTimeout * | number | null | Timeout in milliseconds between two successive write operations. |