Skip to content

Add Menlo Security solution - #14964

Open
ahteshampatel wants to merge 1 commit into
Azure:masterfrom
ahteshampatel:menlo-security-solution
Open

Add Menlo Security solution#14964
ahteshampatel wants to merge 1 commit into
Azure:masterfrom
ahteshampatel:menlo-security-solution

Conversation

@ahteshampatel

Copy link
Copy Markdown

Change(s):

  • Adds a new Menlo Security data connector solution under Solutions/MenloSecurity/.
  • Ingests Audit, Bandwidth, and Web proxy logs from the Menlo Security Log Fetch API into the custom Log Analytics tables MenloAudit_CL, MenloBandwidth_CL, and MenloWeb_CL.
  • Delivered as three timer-triggered Azure Functions using the Azure Monitor Logs Ingestion API (Data Collection Endpoint + Data Collection Rule). Includes the GenericUI connector definition, the deployable azuredeploy_MenloSecurity_API_FunctionApp.json (with a "Deploy to Azure" button + createUiDefinition wizard that auto-derives the workspace region), the function code zip, SolutionMetadata.json, ReleaseNotes.md, README.md, and the V3-tool-generated Package/.

Reason for Change(s):

  • New solution contribution — brings Menlo Security web-isolation / secure-web-gateway telemetry into Microsoft Sentinel. Initial release, version 3.0.0.

Version Updated:

  • N/A — new solution (initial version 3.0.0).

Testing Completed:

  • Yes. Package generated with the V3 packaging tool. Passed ARM-TTK (only the standard IDs Should Be Derived From ResourceIDs / contentProductId exception common to all Sentinel solutions) and az deployment group validate. Performed an end-to-end deployment into a test Microsoft Sentinel workspace: infrastructure deploys, function code is delivered via the deployment script, the three custom tables are created, and the DCE/DCR are wired using a system-assigned managed identity with least-privilege RBAC. Verified cross-region behavior (connector resources co-locate with the selected workspace via the createUiDefinition wizard).

Checked that the validations are passing and have addressed any issues that are present:

  • Yes.

@ahteshampatel
ahteshampatel force-pushed the menlo-security-solution branch from b10f242 to e378db0 Compare August 23, 2026 17:11
@v-maheshbh v-maheshbh (v-maheshbh) added the Solution Solution specialty review needed label Aug 24, 2026
@ahteshampatel
ahteshampatel force-pushed the menlo-security-solution branch from e378db0 to efcf231 Compare August 24, 2026 09:54
Adds the Menlo Security data connector solution. It ingests Audit, Bandwidth,
and Web proxy logs from the Menlo Security Log Fetch API into the MenloAudit_CL,
MenloBandwidth_CL, and MenloWeb_CL custom Log Analytics tables via three
timer-triggered Azure Functions and the Azure Monitor Logs Ingestion API
(Data Collection Endpoint + Data Collection Rule).
@ahteshampatel
ahteshampatel force-pushed the menlo-security-solution branch from efcf231 to bbc2083 Compare August 26, 2026 10:03
@ahteshampatel

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree [company="Menlo Security"]

@ahteshampatel

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Menlo Security"

@ahteshampatel
ahteshampatel marked this pull request as ready for review August 28, 2026 10:30
@ahteshampatel
ahteshampatel requested review from a team as code owners August 28, 2026 10:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a new Menlo Security Microsoft Sentinel solution that deploys an Azure Functions–based connector to ingest Menlo Audit, Bandwidth, and Web proxy logs into custom Log Analytics tables via the Azure Monitor Logs Ingestion API (DCE/DCR).

Changes:

  • Introduces Menlo Security solution metadata/docs and Content Hub packaging artifacts under Solutions/MenloSecurity/.
  • Adds ARM templates + createUiDefinition to deploy connector infrastructure and custom tables.
  • Adds custom table schemas for KQL validation tests.

Reviewed changes

Copilot reviewed 13 out of 16 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
Solutions/MenloSecurity/SolutionMetadata.json Defines solution identity, versioning, support info, and icon.
Solutions/MenloSecurity/ReleaseNotes.md Adds initial release notes entry for v3.0.0.
Solutions/MenloSecurity/README.md Documents connector behavior, deployment, and configuration.
Solutions/MenloSecurity/Package/testParameters.json Provides ARM-TTK-friendly test parameters for packaging.
Solutions/MenloSecurity/Package/mainTemplate.json Content Hub package template wiring content package + connector template.
Solutions/MenloSecurity/Package/createUiDefinition.json Content Hub installer UI for selecting workspace/region.
Solutions/MenloSecurity/Data/Solution_MenloSecurity.json Solution manifest used by Sentinel solution infrastructure.
Solutions/MenloSecurity/Data Connectors/createUiDefinition_MenloSecurity_API_FunctionApp.json “Deploy to Azure” UI for deploying connector resources.
Solutions/MenloSecurity/Data Connectors/azuredeploy_MenloSecurity_API_FunctionApp.json Main ARM template deploying Functions, DCE/DCR, tables, and RBAC.
Solutions/MenloSecurity/Data Connectors/MenloSecurity.json GenericUI data connector definition surfaced in Sentinel.
.script/tests/KqlvalidationsTests/CustomTables/MenloWeb_CL.json Adds schema for MenloWeb_CL table validation.
.script/tests/KqlvalidationsTests/CustomTables/MenloBandwidth_CL.json Adds schema for MenloBandwidth_CL table validation.
.script/tests/KqlvalidationsTests/CustomTables/MenloAudit_CL.json Adds schema for MenloAudit_CL table validation.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +1 to +3
| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|-------------|--------------------------------|---------------------------|
| 3.0.0 | 21-08-2026 | Initial solution release. Adds the **Menlo Security** data connector, which ingests Audit, Bandwidth, and Web proxy logs into the `MenloAudit_CL`, `MenloBandwidth_CL`, and `MenloWeb_CL` custom Log Analytics tables via three timer-triggered Azure Functions and the Azure Monitor Logs Ingestion API (DCE/DCR). |
### Verifying ingestion

After enabling at least one log type, wait 5–10 minutes for the first data to appear, then run in Microsoft Sentinel **Logs**:

Comment on lines +827 to +830
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"scope": "[format('Microsoft.Insights/dataCollectionRules/{0}', variables('dcrName'))]",
"name": "[guid(resourceId('Microsoft.Insights/dataCollectionRules', variables('dcrName')), resourceId('Microsoft.Web/sites', variables('functionAppName')), 'MonitoringMetricsPublisher')]",
Comment on lines +711 to +720
"siteConfig": {
"ipSecurityRestrictions": [
{
"action": "Deny",
"priority": 100,
"name": "DenyAll",
"ipAddress": "Any"
}
],
"scmIpSecurityRestrictionsUseMain": false,
Comment on lines +100 to +112
"type": "int"
},
{
"name": "tx_bytes",
"type": "int"
},
{
"name": "cumulative_bytes",
"type": "int"
},
{
"name": "sum_bytes",
"type": "int"
Comment on lines +79 to +87
{
"provider": "Microsoft.OperationalInsights/workspaces/sharedKeys",
"permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).",
"providerDisplayName": "Keys",
"scope": "Workspace",
"requiredPermissions": {
"action": true
}
}
@v-maheshbh

Copy link
Copy Markdown
Contributor

Hi ahteshampatel

We are putting your PR on hold because your solution uses Azure Function and not Sentinel Codeless Connector Framework (CCF). We would be happy to work with you to migrate your solution to CCF. Please contact the Microsoft Sentinel Partners at AzureSentinelPartner@microsoft.com to discuss available options.

Thanks!

@ahteshampatel

ahteshampatel commented Aug 31, 2026

Copy link
Copy Markdown
Author

Hi v-maheshbh (@v-maheshbh),
The Menlo Security Log Fetch API does not follow a pagination pattern that is supported by CCF. That is the reason we had to choose Azure Functions approach.

We evaluated CCF RestApiPoller (incl. POST bodies and pagingInfoPlacement: RequestBody). Menlo's Log Fetch API paginates with a multi-field pagingIdentifiers object echoed back in the POST body, and terminates on a last_iteration=true flag while still returning that cursor on the final page. CCF's NextPageToken/PersistentToken model a single scalar cursor and offer only a has-next flag (no negation / no "stop on last-page" semantics), so neither the object cursor nor the termination condition is expressible. This is why we implemented the connector as an Azure Function. If there's a supported way to round-trip an object cursor and invert the stop condition, we're glad to reconsider.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Solution Solution specialty review needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants