Zylo v1.0.0 Plugin for Risk Exchange

Zylo v1.0.0 Plugin for Risk Exchange

This document explains how to configure the Zylov1.0.0 plugin with the Risk Exchange module of the Netskope Cloud Exchange platform. This plugin is used to fetch applications from the Inventory > Applications page in Zylo. The plugin does not support performing any actions on applications in Zylo.

Prerequisites

To complete this integration, you need:

  • A Netskope tenant (or multiple, for example, production and development/test instances).
  • A Netskope Cloud Exchange tenant with the Tenant plugin and Risk Exchange module already configured.
  • Connectivity to the Zylo platform (https://app.zylo.com)
CE Version Compatibility

Netskope v5.1.0

Zylo Plugin Support

This plugin is used to fetch applications from the Inventory > Applications page in Zylo. The plugin does not support performing any actions on applications in Zylo.

Type of data pulled Applications
Actions Supported No Action
Mappings

Mappings are used to view the pulled Hosts and their respective details. Fields mapped during plugin configuration are visible on the Records page after the data is pulled. Here are the suggested mappings that should be used while configuring the plugin.

Pull Mappings
Netskope CE Fields Zylo API Fields Suggested Field Label Suggested Aggregate Strategy
Subscription ID id Subscription ID Unique
Application ID appId Application ID Append
Application Description appDescription Application Description Append
Application Name name Application Name Append
Launch URL launchUrl Launch URL Append
Tags tags Tags Append
Application Owner Email owners.app Application Owner Email Append
Business Owner Email owners.business Business Owner Email Append
IT Owners Email owners.it IT Owners Email Append
Status status Status Append
Permissions

Read Only

API Details
List of APIs used
API Endpoint Method Use Case
v1/subscriptions GET Fetch Applications
Fetch Applications

API Endpoint: https://api.zylo.com/v1/subscriptions

Method: GET

Headers

Key Value
Authorization Bearer <API Token>

Params

Key Value
pageSize 1
pageToken <next_page_token> or null

Sample API Response

{
    "nextPageToken": "MQ==",
    "subscriptions": [
        {
            "appId": "application/669fcc2b-c4a2-4b72-aed2-2f2dbe22f428",
            "appDescription": "1Password is a password management tool that securely stores and organizes passwords, credit card information, and other sensitive data. It helps users create strong, unique passwords for all their accounts and access them with a single master password.",
            "id": "subscription/891a2dd1-d22e-4583-8107-29bb7b6ed218",
            "name": "1Password",
            "createTime": "2020-08-03T23:59:57.624Z",
            "updateTime": "2024-12-31T08:37:05.186Z",
            "category": "IT Infrastructure",
            "subcategory": "Identity Management",
            "status": "active",
            "businessUnit": "IT",
            "ssoEnforced": false,
            "launchUrl": "1password.com",
            "sources": [
                "Batch Expense Import"
            ],
            "itSupported": false,
            "type": "monthly",
            "businessGoals": "",
            "tags": [
                "Unsanctioned",
                "sanctioned"
            ],
            "supplierName": "Agilebits",
            "holdsPii": false,
            "notes": [],
            "functionalities": [
                "Password Management"
            ],
            "cloud": true,
            "nextAction": null,
            "trueUp": null,
            "primaryContract": {
                "startDate": "2024-02-17T00:00:00.000Z",
                "contractEndDate": null,
                "totalContractValue": {
                    "currencyCode": "USD",
                    "amount": 3894
                },
                "billFrequency": "monthly",
                "cancellationNotificationLength": 0,
                "licensesPurchased": 178
            },
            "usageStats": {
                "uniqueActiveUsers": 143,
                "uniqueProvisionedUsers": 178,
                "activityThreshold": 90,
                "provisionedUsers": 0,
                "activeUsers": 0,
                "percentActiveUsers": 0.8033707865168539,
                "percentLicensesProvisioned": 1
            },
            "payment": {
                "yearToDateSpend": 3894,
                "annualSpend": {
                    "currencyCode": "USD",
                    "amount": 3894
                },
                "apSpend": {
                    "currencyCode": "USD",
                    "amount": 0
                },
                "expenseSpend": {
                    "currencyCode": "USD",
                    "amount": 3894
                },
                "lastTransactionDate": "2024-11-12T00:00:00.000Z",
                "lastApTransactionDate": null,
                "lastExpenseTransactionDate": "2024-11-12T00:00:00.000Z",
                "numberOfTransactions": 10,
                "numberOfUsersExpensing": 10,
                "numberOfCostCenters": 6,
                "primaryCostCenter": {
                    "name": "Cost of Goods Sold",
                    "annualSpend": {
                        "currencyCode": "USD",
                        "amount": 1168.2
                    },
                    "numberOfCostCenters": 6
                }
            },
            "owners": {
                "app": "hailey.stracke@klowd.io",
                "business": "florencehorton@klowd.io",
                "it": "adalberto.heller@klowd.io"
            },
            "customFields": [
                {
                    "key": "default_category",
                    "value": "IT Infrastructure"
                },
                {
                    "key": "default_subcategory",
                    "value": "Identity Management"
                },
                {
                    "key": "external_id",
                    "value": null
                },
                {
                    "key": "search_terms",
                    "value": "\n1Password\n1Password\nAgilebits\nhailey.stracke@klowd.io\nflorencehorton@klowd.io\nadalberto.heller@klowd.io"
                },
                {
                    "key": "custom_values",
                    "value": {
                        "renewalOwner": null,
                        "renewalStatus": null
                    }
                },
                {
                    "key": "realized_savings",
                    "value": null
                },
                {
                    "key": "identified_savings",
                    "value": null
                },
                {
                    "key": "last_contract_expiration_date",
                    "value": null
                },
                {
                    "key": "number_of_active_contracts",
                    "value": 1
                },
                {
                    "key": "realized_avoidance",
                    "value": null
                },
                {
                    "key": "identified_avoidance",
                    "value": null
                },
                {
                    "key": "total_contract_line_value",
                    "value": 3893.76
                },
                {
                    "key": "contract_status",
                    "value": "active"
                },
                {
                    "key": "inactive_user_count",
                    "value": null
                },
                {
                    "key": "users_not_in_employee_roster",
                    "value": null
                },
                {
                    "key": "renewalOwner",
                    "value": null
                },
                {
                    "key": "renewalStatus",
                    "value": null
                },
                {
                    "key": "current_fiscal_year_q_1_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_2_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_3_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_4_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_1_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_2_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_3_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_4_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_1_ap_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_2_ap_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_3_ap_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_4_ap_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_1_ap_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_2_ap_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_3_ap_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_4_ap_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_1_expense_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_2_expense_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_3_expense_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_q_4_expense_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_1_expense_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_2_expense_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_3_expense_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_q_4_expense_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_ap_spend",
                    "value": 0
                },
                {
                    "key": "current_fiscal_year_expense_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_ap_spend",
                    "value": 0
                },
                {
                    "key": "last_fiscal_year_expense_spend",
                    "value": 0
                },
                {
                    "key": "current_and_last_fiscal_quarter_spend",
                    "value": 0
                },
                {
                    "key": "last_2_fiscal_quarters_spend",
                    "value": 0
                },
                {
                    "key": "last_3_fiscal_quarters_spend",
                    "value": 0
                },
                {
                    "key": "current_and_last_2_fiscal_quarters_spend",
                    "value": 0
                },
                {
                    "key": "current_and_last_3_fiscal_quarters_spend",
                    "value": 0
                },
                {
                    "key": "current_and_last_fiscal_year_spend",
                    "value": 0
                },
                {
                    "key": "current_and_last_2_fiscal_years_spend",
                    "value": 0
                },
                {
                    "key": "last_2_fiscal_years_spend",
                    "value": 0
                },
                {
                    "key": "last_3_fiscal_years_spend",
                    "value": 0
                }
            ]
        }
    ]
}
Performance Matrix

Below is the performance matrix conducted on a Large CE Stack with below-mentioned specifications by pulling 500K applications.

Stack details Size: Large

RAM: 32 GB

CPU: 16 Cores

Time taken to store the pulled and updated applications records ~15 mins
User Agent

netskope-ce-5.1.0-cre-zylo–v1.0.0

Workflow

  1. Get your Zylo Token ID and Token Secret.
  2. Configure the Zylo plugin.
  3. Add a Risk Exchange Business Rule for Zylo.
  4. Add Risk Exchange Actions for Zylo.
  5. Validate the Zylo plugin.

Click play to watch a video.

 

Get your Token ID and Token Secret

  1. Log in to Zylo and click the username icon in the top right corner.
  2. Click Admin and go to the Company Tokens tab.
  3. Click Request Token and provide the Token Name and Token Scope. Select Read Only in the Token Scope, and click Submit.
  4. Copy the Token ID and Token Secret; these are used to configure the Zylo plugin.

Configure the Zylo Plugin

  1. Log in to Cloud Exchange and go to Settings > Plugins. Search for and select the Zylo v1.0.0 (CRE) plugin box.
  2. Add a plugin configuration name, and change sync interval if needed.
  3. Click Next. Enter your Token ID and Token Secret.
  4. Click Next. Select the Applications Entity from the Entity dropdown, and enter the field mappings per your requirements.
  5. Click Save.

Add a Risk Exchange Business Rule for Zylo

  1. In Risk Exchange, go to Business Rules.
  2. Click Create New Rule in the top right corner.
  3. Enter a Rule Name. Select the Entity for the Field Mappings configured for the Zylo plugin, and configure the query based on your requirements.
  4. Click Save.

Add a Risk Exchange Action for Zylo

No Action

No action will be performed for this action. You can generate UBA alerts in Ticket Orchestrator by using this action, and enabling the Generate Alerts toggle.

  1. In Risk Exchange, go to Actions and click Add Action Configuration.
  2. Select a Business Rule and Target Plugin. For the Action, select No Action.
    A screenshot of a computer

AI-generated content may be incorrect.
  3. If only No Action is performed for a plugin, make sure to enable the Ticket Orchestrator module for generating the alerts.
  4. To perform Netskope actions on the applications pulled from Zylo, refer to the Netskope Risk exchange plugin guide.

Validate the Zylo Plugin

Validate on CE

To validate the pulling, follow these steps:

Go to Risk Exchange and click Records. Select the Entity that was selected while configuring the field mappings for Applications to view the pulled apps.

Go to Logging to check the pulled records via logs. Filter the logs using the plugin name, like CRE Zylo.

Validate on Zylo

To validate the records pulled from Zylo, log in to Zylo and go to Inventory > Applications.

Troubleshooting the Zylo Plugin

Unable to configure the plugin

If you are unable to configure the CRE Zylo plugin, it could be due to providing an incorrect Token ID or Token Secret.

What to do: To get the Token ID andToken Secret, follows the steps mentioned above in Get Token ID and Token Secret.

Unable to pull Application

If you are unable to pull Hosts from the CRE Zylo plugin, it could be due to one of these reasons:

  • No apps are present on the platform.
  • An error is received while pulling an application from the platform.
  • Mapping is not added while configuring the plugin in the entity source page.

What to do:

  1. Check if you have data available on Zylo to pull.
  2. Check the logs from Logging if you have received any error in the plugin workflow.
  3. Check the plugin configuration, and make sure the mapping is added in the plugin in order to pull the application records.
Share this Doc

Zylo v1.0.0 Plugin for Risk Exchange

Or copy link

In this topic ...