Purpose
This guide explains how to register an application in Microsoft Entra ID and use its credentials in Logsign USO to pull per-device software vulnerability findings (CVE exposure, new/fixed/updated status) from Microsoft Defender Vulnerability Management via the Microsoft Defender for Endpoint REST API, for security analytics and forensic purposes.
Microsoft Defender Vulnerability Management is a cloud-only capability of Microsoft Defender for Endpoint; there is no on-premises component and no syslog export path, so this integration is a poller that calls Microsoft's REST API directly.
Prerequisites
- Access to the Azure portal (https://portal.azure.com) with permission to register an application in Microsoft Entra ID.
- Permission to grant the application the Vulnerability.Read.All application permission on the WindowsDefenderATP API (Microsoft Defender for Endpoint), and to grant admin consent for it.
- Know which regional API host your tenant should use (see Step 2); most tenants use the global default and do not need to set this explicitly.
Step 1: Register an Application in Microsoft Entra ID
- Log into the Azure portal: https://portal.azure.com
- Go to Microsoft Entra ID > App registrations > New registration, give the application a name (for example
Logsign_DefenderVulnerabilityManagement), and click Register. - From the Overview page, note the Application (client) ID and Directory (tenant) ID.
- Go to Certificates & secrets, click New client secret, and generate one. Copy the Value immediately; it cannot be retrieved again once you leave the page.
- Go to API permissions > Add a permission > APIs my organization uses, search for and select WindowsDefenderATP (this is the API name Microsoft uses for Defender for Endpoint, including its Vulnerability Management data).
- Choose Application permissions, select Vulnerability.Read.All, and click Add permissions.
- Click Grant admin consent for the permission. Without this step, every call returns a 403 even though the token request itself succeeds.
Step 2: Identify Your API Host
Microsoft Defender for Endpoint exposes one global API host plus optional regional hosts. This is a fixed list from Microsoft's own documentation, not a value specific to your tenant; use the regional host only if your organization has a documented reason to (for example a data-residency requirement), otherwise leave this field blank and Logsign uses the global default.
| Region | API Host |
|---|---|
| Global (default) | api.security.microsoft.com |
| United States | us.api.security.microsoft.com |
| Europe | eu.api.security.microsoft.com |
| United Kingdom | uk.api.security.microsoft.com |
| Australia | au.api.security.microsoft.com |
| Southwest Asia | swa.api.security.microsoft.com |
| India | ina.api.security.microsoft.com |
| East Asia | aea.api.security.microsoft.com |
Step 3: Configure the Integration in Logsign USO
Add a new Microsoft Defender Vulnerability Management data source in Logsign USO and provide:
| Field | Required | Description |
|---|---|---|
| Client ID | Yes | The Application (client) ID from Step 1. |
| Client Secret | Yes | The client secret value from Step 1. Stored encrypted at rest. |
| Tenant ID | Yes | The Directory (tenant) ID from Step 1. |
| Scope | Yes | The OAuth2 token scope. Enter exactly: https://securitycenter.onmicrosoft.com/windowsatpservice/.default |
| Base URL | No | The regional API host from Step 2, for example eu.api.security.microsoft.com. Leave blank to use the global default (api.security.microsoft.com). Accepts either a bare host or a full https:// URL. |
| Request Verify | No | TLS certificate verification for outbound calls. Defaults to enabled; only disable this if your organization routes outbound traffic through a TLS-inspecting proxy. |
What Gets Collected
Logsign polls the SoftwareVulnerabilityChangesByMachine delta endpoint, which returns one record per device/software/CVE combination that changed since the last poll, with a status of New, Fixed, or Updated. Each event carries the device ID and name, OS platform/version, the affected software vendor/name/version, the CVE ID (when the finding maps to one), severity and exploitability level, and the recommended security update where Microsoft provides one.
Notes and Limits
- Only the vulnerability change feed is implemented. Exposure score, security recommendations, and the full CVE catalog (separate Defender for Endpoint endpoints) are not collected by this integration.
- Microsoft's API accepts a
sinceTimelookback of at most 14 days; Logsign clamps its polling position to this window automatically, so a source that has been disabled for longer than 14 days resumes from 14 days back rather than failing. - Microsoft regenerates the underlying delta data approximately every 6 hours; polling more frequently than that will not surface new records sooner.
- Pagination follows the API's
@odata.nextLinkto completion on every poll cycle (up to 100 pages per window), so results are not capped at the first page. - A device that changes RBAC group membership can appear twice in a single delta response (once as
Fixedunder its previous group, once asNewunder its current group); this is Microsoft's documented behavior, not a Logsign artifact.
Troubleshooting
| Symptom | Likely cause | What to check |
|---|---|---|
| 401 Unauthorized | Wrong Client ID, Client Secret, or Tenant ID, or the client secret has expired. | Re-verify the three credential fields, and regenerate the client secret in Entra ID if needed. |
| 403 Forbidden | The application has the Vulnerability.Read.All permission listed but admin consent was never granted, or the permission was added under the wrong API (Microsoft Graph instead of WindowsDefenderATP). | In API permissions, confirm Vulnerability.Read.All is listed under WindowsDefenderATP with a green "Granted" status. |
| 400 Bad Request | The poller's internal sinceTime value reaches further back than the API's 14-day limit, or the Scope field was not entered exactly as documented. | Confirm the Scope field matches https://securitycenter.onmicrosoft.com/windowsatpservice/.default exactly. |
| 429 Too Many Requests | The delta endpoint's rate limit (documented by Microsoft as 30 calls/minute, 1,000/hour) was exceeded. | No action needed; Logsign picks up the remaining pages on the next poll cycle. |
| No new events despite known vulnerabilities existing | The underlying delta data has not regenerated yet (Microsoft refreshes it roughly every 6 hours), or the affected devices are outside the RBAC scope of the permission granted. | Wait for the next Microsoft-side regeneration cycle, and confirm the app's permission scope covers the devices you expect to see. |