Cato Networks
Bring your Cato Networks SASE account into the JupiterOne graph. The integration always ingests the Cato account and the Cato SASE Cloud service it provides. On top of that you can turn on three data sources: access governance, with the account administrators, the access roles defined in the account and which admin holds which role; sites, with the connectivity, operational and high-availability status of each site and the Socket appliances behind it; and SDP users, the remote users who connect through Cato, with their point-in-time connectivity status and the device they connect from. Use it to review who administers your Cato account, find admins without MFA, and keep an inventory of your sites, Sockets and remote users next to the rest of your environment. Cato events and audit trail feeds are not ingested.
- Installation
- Authorization
- Data Model
- Types
Installation
This integration connects to the Cato API (https://<API Host>/api/v1/graphql2) and ingests your Cato account, its administrators and roles, its sites and Sockets, and its SDP users. It authenticates with a Cato API key, sent in the x-api-key header, and every request is a read-only GraphQL query. The integration is managed by JupiterOne and runs in the JupiterOne cloud, so no collector is needed.
Prerequisites
- A Cato Networks account and access to the Cato Management Application (CMA).
- A CMA administrator who can create Service Principals and service API keys.
- Access to JupiterOne with permission to configure integrations.
Configuration in Cato Networks
The integration uses a service API key. Service keys belong to a Service Principal rather than to an individual admin, so they keep working when people change roles or leave, and they cannot be used to sign in to the CMA. A service key inherits the permissions of its Service Principal.
Create a Service Principal
If you do not have a Service Principal for JupiterOne yet:
- In the CMA, open Account > Administrators and click New.
- Select Create New and Create as Service Principal.
- Enter the General settings, for example the name
JupiterOne. - Select the Role for the Service Principal. A role with view (read-only) access to the account is enough, because the integration never changes your configuration.
- Click Apply.
Create the service API key
- In the CMA, open Resources > Service API Keys and click New.
- Select the Service Principal you created.
- Enter a Key Name, such as
JupiterOne. - Select Downgrade to View. This limits the key to query (read-only) API calls, whatever role the Service Principal has.
- In Allow access from IPs, leave Any IP, or select Specific IP list to restrict the key to known addresses. See IP allowlisting below.
- Optionally, select an Expires at date. When the key expires, the integration stops ingesting until you add a new key to the instance.
- Click Apply, copy the key from the pop-up and store it somewhere safe. Cato shows the key value only once.
- Click OK.
Find your Account ID
The integration needs your numeric Cato Account ID. In the CMA, open Account > Account Info and copy the Account ID. In older versions of the CMA, the same value is under Administration > General Info.
Find your API host
The API host depends on where your CMA is hosted. Look at the address you use to sign in to the CMA:
cc.catonetworks.com(no prefix): the API host isapi.catonetworks.com, which is the default.- A regional prefix, such as
cc.us1.catonetworks.com: use the same prefix for the API host, for exampleapi.us1.catonetworks.com.
IP allowlisting
If you restrict the API key with Specific IP list, Cato rejects requests from addresses that are not on the list. Contact JupiterOne support to get the egress IP addresses the integration uses, and add them to the key before you create the instance.
Configuration in JupiterOne
To install the Cato Networks integration in JupiterOne, navigate to the Integrations tab in JupiterOne and select Cato Networks. Click New Instance to begin configuring your integration.
Creating an instance requires the following:
-
The Account Name used to identify the Cato Networks 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. -
The Authentication fields below.
Authentication fields
| Field | Required | Description |
|---|---|---|
| API Key | Yes | The Cato service API key created above. It is masked in JupiterOne and sent in the x-api-key header. |
| Account ID | Yes | The numeric Cato Account ID, from Account > Account Info in the CMA. |
| API Host | No | The Cato API host for your CMA region. Defaults to api.catonetworks.com. Accounts on a regional CMA set the regional host, for example api.us1.catonetworks.com. |
When you save the instance, JupiterOne checks that API Key and Account ID are set and sends a test query to the Cato API for that account. A wrong key, a key for a different account, a wrong API host or a blocked IP address fails the check.
Click Create once all values are provided to finalize the integration.
Data Sources
Each data source can be enabled or disabled on its own. All data sources are disabled by default, so a new instance ingests only the cato_account and cato_service entities until you enable the ones you want. To enable them, open the instance, turn on the data sources under Data Sources, and save. They are ingested on the next run.
| Data Source | Description | Entities Created |
|---|---|---|
| Access Governance (Admins & Roles) | Account administrators, with their status, admin type (person or Service Principal) and whether MFA is enabled; the access roles defined in the account, predefined or custom; and which admin holds which role. | cato_admin, cato_role |
| Sites & Sockets | Sites configured in the account, with their connectivity, operational and high-availability status, and the Socket appliances behind each site, with their version, connection state and whether they are the primary Socket of an HA pair. | cato_site, cato_socket |
| SDP Users | SDP (remote) users who connect through Cato, with their connectivity status and the device they connect from. | cato_vpn_user |
To ingest everything the integration supports, enable all three data sources.
Relationships are built only when the data source they need is enabled:
| Relationship | Requires |
|---|---|
cato_account PROVIDES cato_service | Always created |
cato_account HAS cato_admin | Access Governance (Admins & Roles) |
cato_account HAS cato_role | Access Governance (Admins & Roles) |
cato_admin ASSIGNED cato_role | Access Governance (Admins & Roles) |
cato_account HAS cato_site | Sites & Sockets |
cato_site HAS cato_socket | Sites & Sockets |
SDP users are not linked to the account by a relationship, because an account can have a very large number of them. Each cato_vpn_user carries the Cato account ID in accountId instead.
Required permissions
The API key only needs to read your account. A key created with Downgrade to View, or a Service Principal with a view-only role, is enough: Cato limits view permissions to query API calls, and the integration only sends queries.
Notes
- Connectivity status is a point-in-time value. Site, Socket and SDP user status comes from the Cato account snapshot taken during the run. Cato reports SDP users in the snapshot only while they are connected, so
connectivityStatusanddeviceNameare set only for SDP users who were connected when the integration ran. Users who were not connected are still ingested, without those values. - Events and audit trail are not ingested. The integration does not read Cato events, the audit trail or network metrics.
- Every run is a full sync. Admins, roles, sites, Sockets and SDP users that Cato no longer reports are removed from the graph on the next run.
Rate limits
Cato applies rate limits per query and per account, and every API key that calls the same query on your account shares one counter. If another tool, such as a SIEM or log forwarder, uses the Cato API on the same account, it shares those limits with JupiterOne. Most queries allow 120 calls per minute, accountSnapshot allows 30 per minute, and entityLookup, which the integration uses to list sites and SDP users, allows 30 per minute and 1,500 per 5 hours. The integration reads up to 1,000 entities per entityLookup call. When Cato reports a rate limit, the integration waits and retries. If runs hit rate limits often, lower the polling frequency or schedule them away from other tools that use the Cato API.
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
- Generating API Keys for the Cato API
- What is the Cato API — API endpoints by CMA region and the
x-api-keyheader - Understanding Cato API Rate Limiting
- Viewing the Account Info
- Cato API reference
Permissions
IAM permissions that must be granted to the integration principal for data ingestion.
Show Permissions (8)
AccountsAdministratorsAuthenticationNetwork DashboardSDP Users OverviewSites OverviewTopologyUsers & User Groups
Endpoints
API endpoints that the integration makes requests to.
Show Endpoints (1)
POST /api/v1/graphql2
Documentation Links
Links to provider documentation relevant to setup and configuration.
Show Documentation Links (5)
- https://api.catonetworks.com/documentation/#query-account
- https://api.catonetworks.com/documentation/#query-accountRoles
- https://api.catonetworks.com/documentation/#query-accountSnapshot
- https://api.catonetworks.com/documentation/#query-admins
- https://api.catonetworks.com/documentation/#query-entityLookup
Per-Step Breakdown
Detailed authorization requirements for each ingestion step.
Show all steps (1)
| Step | Permissions | Endpoints |
|---|---|---|
| Fetch Admins | Administrators, Authentication | POST /api/v1/graphql2 |
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Account | cato_account | Account |
| Admin | cato_admin | User |
| Role | cato_role | AccessRole |
| SDP User | cato_vpn_user | User |
| Service | cato_service | Service |
| Site | cato_site | Site |
| Socket | cato_socket | Device |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
cato_account | PROVIDES | cato_service |
cato_account | HAS | cato_role |
cato_account | HAS | cato_admin |
cato_account | HAS | cato_site |
cato_admin | ASSIGNED | cato_role |
cato_site | HAS | cato_socket |
Cato Account
cato_account inherits from Account
| Property | Type | Description | Specifications |
|---|---|---|---|
accountType | string | null | Cato account type (e.g. CUSTOMER, RESELLER). | |
apiHost * | string | Cato API host (CMA region) this account was ingested through, e.g. api.catonetworks.com. | |
tenancy | string | null | Account tenancy model reported by Cato (e.g. SINGLE_TENANT). | |
timeZone | string | null | IANA time zone configured for the account. |
Cato Admin
cato_admin inherits from User
| Property | Type | Description | Specifications |
|---|---|---|---|
adminStatus | string | null | Cato operational status of the admin (active, disabled, locked, new, pending_*). | |
adminType | string | null | Cato admin type: LOGIN (a person) or SERVICE_PRINCIPLE (a service principal). |
Cato Role
cato_role inherits from AccessRole
| Property | Type | Description | Specifications |
|---|---|---|---|
isPredefined | boolean | null | Whether the role is a Cato-predefined role (true) or custom (false). |
Cato Service
cato_service inherits from Service
Cato Site
cato_site inherits from Site
| Property | Type | Description | Specifications |
|---|---|---|---|
connectivityStatus | string | null | Point-in-time connectivity status of the site (e.g. 'connected', 'disconnected'). | |
haReadiness | string | null | High-availability readiness status reported by Cato. | |
operationalStatus | string | null | Point-in-time operational status of the site (e.g. 'active'). |
Cato Socket
cato_socket inherits from Device
| Property | Type | Description | Specifications |
|---|---|---|---|
isConnected | boolean | null | Whether the Socket is currently connected to Cato Cloud. | |
isPrimary | boolean | null | For HA sites, whether this Socket is the primary one. |
Cato Vpn User
cato_vpn_user inherits from User
| Property | Type | Description | Specifications |
|---|---|---|---|
accountId * | string | ID of the Cato account the SDP user belongs to. | |
connectivityStatus | string | null | Point-in-time connectivity status of the SDP user. | |
deviceName | string | null | Name of the device the SDP user is currently connecting from. | |
isConnectedInOffice | boolean | null | Whether the SDP user is connected from inside an office site. |