Kandji
Visualize Kandji devices and apps, and monitor changes through queries and alerts.
- Installation
- Data Model
- Types
Installation
JupiterOne requires an Access Token and Organization API URL for this integration. You need permission to create users in Kandji that will be used to obtain the Access Token and API URL.
Configuration in Kandji
- Log in to your Kandji subdomain, such as
https://{subdomain}.kandji.io/. - Go to Settings > Access > API Token. If you do not see this, contact the server admin.
- Click Add Token.
- Optionally, enter a token name and description.
- Copy the API Token. You will not see it again.
- Configure these API permissions:
- Device list
GET /devices - Device details
GET /devices/{device_id}/details - Application list
GET /devices/{device_id}/apps
- Device list
Upon completion of the configuration, you should to see the organization API URL under the API token section.
Use the organization API URL for API_URL and API token for ACCESS_TOKEN.
Data Volume Configuration
Control how much data is ingested from Kandji to manage storage and processing.
Ingestion Windows (Time Ranges)
| Field | Description | Default | Options |
|---|---|---|---|
| Threat Ingest Since Days | Number of days to look back for threat ingestion | 90 | 90, 180, 275, 365 |
How it affects data volume: Higher number of days will result in more threats being ingested from Kandji.
Data Filtering Options
| Field | Type | Description | Default |
|---|---|---|---|
| Threat Status | Select | Filter threats by their quarantine status | All statuses |
Available options:
- Quarantined - Only ingest threats that are quarantined
- Not Quarantined - Only ingest threats that are not quarantined
- Released - Only ingest threats that have been released
How it affects data volume: Filtering by status reduces the number of threat entities ingested. By default, all threat statuses are imported.
Configuration in JupiterOne
To install the Kandji integration in JupiterOne, navigate to the Integrations tab in JupiterOne and select Kandji. Click New Instance to begin configuring your integration, providing the following:
-
Account Name used to identify the Kandji account in JupiterOne. Ingested entities will have this value stored in
tag.AccountNamewhen theAccountNameoption 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. -
Kandji Access Token and Kandji API URL generated for use by JupiterOne. Ensure you enter Kandji API URL using the format
https://{yourApiUrl}/api/v1/, addinghttps://at the beginning and/api/v1/at the end of the API URL.
Click Create once all values are provided to finalize the integration.
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.
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Account | kandji_account | Account |
| App | kandji_app | Application |
| Blueprint | kandji_blueprint | Configuration |
| Custom_Profile | kandji_profile | Configuration |
| Device | kandji_device | Device |
| File Threat | kandji_file_threat | Record |
| User | kandji_user | User |
| Vulnerability | kandji_vulnerability | Vulnerability, Finding |
| Vulnerability | kandji_vulnerability | Finding |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
kandji_account | HAS | kandji_device |
kandji_app | HAS | kandji_vulnerability |
kandji_device | INSTALLED | kandji_app |
kandji_device | HAS | kandji_file_threat |
kandji_device | ASSIGNED | kandji_blueprint |
kandji_device | ASSIGNED | kandji_profile |
kandji_user | OWNS | kandji_device |
Kandji Account
kandji_account inherits from Account
| Property | Type | Description | Specifications |
|---|---|---|---|
name * | string |
Kandji App
kandji_app inherits from Application
| Property | Type | Description | Specifications |
|---|---|---|---|
appStoreVendable | string | ||
bundleId * | string | ||
deviceBasedVpp | string | ||
process | string | ||
source | string |
Kandji Blueprint
kandji_blueprint inherits from Configuration
| Property | Type | Description | Specifications |
|---|---|---|---|
computersCount * | string | ||
description * | string | ||
enrollmentCodeActive * | boolean | ||
id * | string | ||
name * | string |
Kandji Device
kandji_device inherits from Device
| Property | Type | Description | Specifications |
|---|---|---|---|
activationLock.activationLockAllowedWhileSupervised | boolean | null | ||
activationLock.activationLockSupported | boolean | ||
activationLock.bypassCodeFailed | boolean | ||
activationLock.deviceActivationLockEnabled | boolean | ||
activationLock.userActivationLockEnabled | boolean | ||
agentInstalled | boolean | ||
agentVersion | string | ||
blueprintId | string | ||
blueprintName | string | ||
filevault.filevaultEnabled | boolean | ||
filevault.filevaultNextRotation | string | ||
filevault.filevaultPrkEscrowed | boolean | ||
filevault.filevaultRecoverykeyType | string | ||
filevault.filevaultRegenRequired | boolean | ||
firstEnrollmentOn | number | ||
general.assignedUserEmail | string | ||
general.assignedUserId | number | ||
general.assignedUserIsArchived | boolean | ||
general.assignedUserName | string | ||
general.blueprintName | string | ||
general.blueprintUuid | string | ||
general.bootVolume | string | ||
general.lastUser | string | ||
general.systemVersion | string | ||
general.timeSinceBoot | string | ||
hardwareOverview.memory | string | ||
hardwareOverview.modelIdentifier | string | ||
hardwareOverview.modelName | string | ||
hardwareOverview.numberOfProcessors | string | ||
hardwareOverview.processorName | string | ||
hardwareOverview.processorSpeed | string | ||
hardwareOverview.totalNumberOfCores | string | ||
installedProfiles | array of strings | ||
isMissing | boolean | ||
isRemoved | boolean | ||
kandjiAgent.agentInstalled | string | ||
kandjiAgent.agentVersion | string | ||
kandjiAgent.installDate | string | ||
kandjiAgent.lastCheckIn | string | ||
lastCheckinOn | number | null | ||
lastEnrollmentOn | number | ||
macAddress | string | ||
mdm.installDate | string | ||
mdm.lastCheckIn | string | ||
mdm.mdmEnabled | string | ||
mdm.mdmEnabledUser | array of strings | ||
mdmEnabled | boolean | ||
network.ipAddress | string | ||
network.localHostname | string | ||
network.macAddress | string | This property is deprecated and will be removed in future versions. Please use the macAddress property instead. | |
network.publicIp | string | ||
platform | string | ||
serialNumber | string | null | ||
user.email | string | null | ||
user.id | number | null | ||
user.isArchived | boolean | null | ||
user.name | string | null | ||
users.regularUsers | array of strings | ||
users.systemUsers | array of strings | ||
volumes | array of strings |
Kandji File Threat
kandji_file_threat inherits from Record
| Property | Type | Description | Specifications |
|---|---|---|---|
classification | string | ||
fileHash | string | ||
filePath | string | ||
status | string |
Kandji Profile
kandji_profile inherits from Configuration
| Property | Type | Description | Specifications |
|---|---|---|---|
active | boolean | ||
mdmIdentifier | string |
Kandji User
kandji_user inherits from User
| Property | Type | Description | Specifications |
|---|---|---|---|
isArchived | boolean |
Kandji Vulnerability
kandji_vulnerability inherits from Vulnerability, Finding
| Property | Type | Description | Specifications |
|---|---|---|---|
cveDescription | string | ||
cveLink | string | ||
cvePublishedOn | number | ||
cveUpdatedOn | number | ||
cvssScore | number | ||
cvssSeverity | string | ||
devicesImpacted | number | ||
firstDetectedOn | number | ||
lastDetectedOn | number |
Kandji Vulnerability
kandji_vulnerability inherits from Finding
| Property | Type | Description | Specifications |
|---|---|---|---|
cveDescription | string | ||
cveLink | string | ||
cvePublishedOn | number | ||
cveUpdatedOn | number | ||
cvssScore | number | ||
cvssSeverity | string | ||
devicesImpacted | number | ||
firstDetectedOn | number | ||
lastDetectedOn | number |