Integrate Versa SASE with Microsoft Defender
For supported software information, click here.
This document describes the end-to-end architecture for integrating Microsoft Defender for Endpoint (MDE)—Microsoft's enterprise-grade Endpoint Detection & Response (EDR) platform—into Versa's Unified Risk Scoring (URS) framework within the SASE partner-services microservice.
The integration authenticates via OAuth 2.0 client credentials using an Azure App Registration, polls the Microsoft Security Center API for device health and vulnerability data, computes a per-device Zero Trust Access (ZTA) risk score using a configurable weighted model, stores the results, and publishes aggregated scores so that the Versa Management System (VMS) can enforce adaptive, risk-aware network policies in real time.
Defender requires an Azure App Registration with specific Microsoft Graph / Defender API application permissions, and uses the standard OAuth 2.0 client credentials flow to obtain short-lived bearer tokens automatically.
Prerequisites
To obtain the Tenant ID, Client ID, and Client Secret values required by the Versa Concerto EDR connector, you must register an application in Microsoft Entra ID (formerly Azure Active Directory). The application uses OAuth 2.0 client credentials to access the Microsoft Defender for Endpoint API without a user context.
You must have a Microsoft Entra role that allows creating applications in Azure, such as Application Administrator.
License Requirements
The Versa SASE Defender connector requires an Azure Active Directory App Registration in the customer's tenant with specific application permissions (not Delegated — the service runs as a background daemon, not on behalf of a signed-in user). A global administrator must grant admin consent before the integration can authenticate.
Access to the Microsoft Security Center APIs used by this integration requires the following license:
Note: Microsoft Defender for Endpoint has two license plans: Plan 1 and Plan 2. Versa recommends using Plan 2 for full integration.
- Microsoft Defender for Endpoint, Plan 2—Full Integration (Recommended):
- Next-generation protection (Antivirus)
- Attack surface reduction
- Device inventory API ( /api/machines )
- Endpoint Detection & Response (EDR)
- Threat & Vulnerability Management (TVM)
- Vulnerabilities API ( /api/machines/{id}/vulnerabilities )
- Advanced hunting and threat Intelligence
- Automated investigation and remediation
- Full API access (device inventory, threat intelligence, TVM)
Note: Plan 2 unlocks all APIs used by this integration. All six scoring indicators (risk score, exposure level, AV status, health, onboarding, and vulnerabilities) are available.
The following table lists the APIs and features used by license plan 2.
| API / Feature | Plan 2 |
|---|---|
|
GET /api/machines—Device inventory |
Available |
| riskScore, healthStatus, defenderAvStatus fields | Available |
| GET /api/machines/{id}/vulnerabilities—TVM CVE data | Available |
| exposureLevel field (TVM exposure) | Available |
| Advanced Hunting / KQL queries | Available |
Configure Microsoft Defender in Azure
- Create the App Registration by navigating to Home > Azure Active Directory > App registrations > New registration, then enter the required information.

- Create a Client Secret (Certificates & secrets).
- Navigate to Home > Defender-PP > Certificates & secrets > Client secrets, then click + New client secret. The page initially shows an empty state with no secrets created.

- Click + New client secret. A panel slides in from the right. Enter a description and expiry period, then click Add.

- Navigate to Home > Defender-PP > Certificates & secrets > Client secrets, then click + New client secret. The page initially shows an empty state with no secrets created.
Caution: The secret value is displayed only once immediately after creation. Copy it to a vault before navigating away. It cannot be retrieved again. The secret ID is not used by Versa SASE. Only the value is used.
- Copy the Value. Once the secret is created the Value column shows the full string. This is the Client Secret to paste into the Versa SASE configuration screen.

- Add API Permissions.
- Navigate to Home > Defender-app > API permissions, then click Add a permission..
- Add permissions from two APIs: Microsoft Cloud App Security and WindowsDefenderATP.
- Select Application permissions (not Delegated) for each, then grant admin consent.

-
Grant Admin Consent (Result). After the Global Administrator clicks Grant admin consent for Versa Networks and confirms in the dialog, both permission statuses change to Granted for Versa Networks. The connector is now authorized to authenticate.

Note: All 5 permissions must be granted as Application type—not Delegated. Microsoft Cloud App Security (discovery.manage, discovery.read) covers Cloud Discovery data access. WindowsDefenderATP (Machine.Read.All, Vulnerability.Read.All, Alert.Read.All) covers device inventory, TVM vulnerability data, and alert enrichment—all are required for the scoring model. Admin consent from a Global Administrator is mandatory before the OAuth2 token request will succeed.
Application vs Delegated: If you see Delegated permissions listed after adding, remove them and re-add them as Application type. Delegated permissions require an interactive user sign-in and will cause the background daemon connector to fail authentication.
Configure Microsoft Defender in Concerto
To configure Microsoft Defender in Concerto:
- From the Concerto Tenant home page, click Configure > Security Service Edge > Partner Integration > Endpoint Detection & Response in the left menu bar.
Note that for Releases 12.1.1 and earlier, the Partner Integration Profile folder is located at Configure > Security Service Edge > Settings.

- Select the Microsoft Defender tab, then enter information gathered from Azure for the following fields.

Field Description Enabled Click the slider to enable Microsoft Defender. Tenant ID Enter the tenant ID generated by Microsoft Defender. Client ID Enter the client ID generated by Microsoft Defender. Client Secret Enter the client secret generated by Microsoft Defender. Poll Interval Enter the time, in minutes, between polling actions.
Range: 10 through 1440 seconds
Default: None
- Click Save.
After you save and publish the configuration, the following events occur:
| Time After Publish | Event |
|---|---|
| 0 – 5 seconds | Connector registered; OAuth2 token obtained; polling thread started; risk profiles loaded into memory. |
| 5 seconds | First device list pull from Microsoft Security Center API begins. |
| 5 seconds + collection time | Per-device vulnerability data fetched (up to 10 concurrent calls); ZTA risk scores calculated and stored per device. |
| ~1 minute after collection | Aggregated scores published to VMS via Kafka; adaptive network policies take effect. |
| Every Poll Interval thereafter | Full cycle repeats automatically; token is refreshed transparently by the OAuth2 library. |
Microsoft Security Center API Endpoints Called
Two registration paths exist: a Director push (bulk, all tenants) and a direct REST call (per tenant). Both converge into the same internal processing pipeline.
| Method | Microsoft API URL | Purpose | Scope Used |
|---|---|---|---|
|
Post |
https://login.microsoftonline.com/{tenantId}/oauth2/token |
Obtain OAuth2 Bearer token | client credentials grant |
|
Get |
https://api.security.microsoft.com/api/machines |
Fetch all enrolled device records |
Machine.Read.All |
|
Get |
https://api.security.microsoft.com/api/machines/{id}/vulnerabilities |
Fetch CVE list for a specific device (one call per device) |
Vulnerability.Read.All |
Risk Scoring Model
The ZTA risk score uses an implicit, configurable and weighted multi-factor model. All weights and thresholds are specified per tenant in the Director configuration. No code changes are required to tune the model for a customer's security posture.
The risk score is calculated as follows: score = ( critical_score × CriticalRiskWeight ) + ( operational_score × OperationalWeight )
Each sub-score is normalized to [0, 1] before weighting. Weights are integer percentages that must total 100 percent.
The risk scoring model uses the following critical risk indicators and operational health indicators.
| Critical Risk Indicators | Operational Health Indicators |
|---|---|
| Risk Score: Low | Health Status: Inactive |
| Risk Score: Medium | Health Status: ImpairedCommunication |
| Risk Score: High | Inactive < 1 day |
| Exposure Level: Medium | Inactive 1–3 days |
| Exposure Level: High | Inactive 4–7 days |
| AV Status: Disabled | Inactive 8–14 days |
| AV Status: Not Reporting | Inactive > 14 days |
| Onboarding: Not Onboarded | CVE count: Critical CVSS ( >= 9.0 ) |
The risk score is implicitly mapped to the following Versa risk bands:
- Trustworthy (0–20)
- Low Risk (21–40)
- Moderate Risk (41–60)
- Suspicious (61–80)
- High Risk (81–100)
Software Release Information
Releases 12.2.1 and later support all content described in this article.
