New Solution: Upwind Logs Loader#13778
Conversation
Add new Microsoft Sentinel data connector that ingests compute platform assets from the Upwind cloud security platform into a custom log table (UpwindLogs_CL) using an Azure Function and the Azure Monitor Ingestion API (DCE/DCR). Includes: - ARM template with DCE, DCR, custom table, user-assigned managed identity, optional Key Vault support, and zipdeploy - Timer-triggered Python 3.11 Azure Function with OAuth2 auth, cursor-based pagination, and exponential backoff retry - Connector UI definition with createUiDef.json deployment wizard - Solution package (v3.0.0) for Sentinel Content Hub Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
BasePath Format: The release notes should include the version number, release date, and the corresponding commit details. The validation error is due to unsupported values in the Domains / Verticals section. Kindly update these fields to use only valid, predefined values by referring to any existing solution’s SolutionMetadata.json. Update the permissions in Solutions/Upwind/Data Connectors/UpwindLogsLoader_API_FunctionApp.json to match the Azure Function Connector Template for validation to pass. Kindly review and validate the KQL query to ensure it is correct and working as expected. Thanks! |
There was a problem hiding this comment.
Pull request overview
Adds the Upwind Logs Loader Microsoft Sentinel solution package, including deployment artifacts and an Azure Function-based ingestion pipeline to load Upwind compute platform assets into a custom Log Analytics table via DCE/DCR.
Changes:
- Introduces solution metadata, README, and release notes for the new Upwind solution.
- Adds ARM templates + CreateUiDefinition files for deploying DCE/DCR, custom table, identity, Key Vault integration, and Function App zipdeploy.
- Adds Python Azure Function implementation (config, auth, pagination, retries, DCR upload) and connector definition artifacts.
Reviewed changes
Copilot reviewed 17 out of 20 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| Solutions/Upwind/SolutionMetadata.json | Adds Content Hub solution metadata (publisher/offer/support/categories). |
| Solutions/Upwind/ReleaseNotes.md | Introduces initial release notes for v3.0.0. |
| Solutions/Upwind/README.md | Documents deployment, parameters, schema, and sample KQL queries. |
| Solutions/Upwind/Package/testParameters.json | Adds ARM TTK-friendly test parameters for solution packaging. |
| Solutions/Upwind/Package/mainTemplate.json | Adds solution package template (content packages/templates + connector resources). |
| Solutions/Upwind/Package/createUiDefinition.json | Adds Content Hub deployment wizard (workspace selection + outputs). |
| Solutions/Upwind/Data/Solution_UpwindLogsLoader.json | Adds solution build manifest for packaging/publishing. |
| Solutions/Upwind/Data Connectors/requirements.txt | Pins Python dependencies for the Function connector package. |
| Solutions/Upwind/Data Connectors/host.json | Configures Azure Functions host settings (logging, bundle, timeout). |
| Solutions/Upwind/Data Connectors/createUiDef.json | Adds data connector ARM Wizard UI (auth method, schedule, advanced knobs). |
| Solutions/Upwind/Data Connectors/azuredeploy_UpwindLogsLoader_API_FunctionApp.json | ARM template to deploy infra (Key Vault, DCE/DCR/table, identity, Function App). |
| Solutions/Upwind/Data Connectors/UpwindLogsLoader_API_FunctionApp.json | Adds Sentinel Data Connector definition (queries, instructions, permissions). |
| Solutions/Upwind/Data Connectors/UpwindLogsLoader/upwind_client.py | Implements base Upwind API client (OAuth2 + retry + cursor pagination). |
| Solutions/Upwind/Data Connectors/UpwindLogsLoader/upwind_catalog_client.py | Implements asset fetcher for Upwind inventory catalog endpoint. |
| Solutions/Upwind/Data Connectors/UpwindLogsLoader/function.json | Declares timer trigger binding using env-configured CRON schedule. |
| Solutions/Upwind/Data Connectors/UpwindLogsLoader/config.py | Loads env + Key Vault secret, validates required config, parses ints. |
| Solutions/Upwind/Data Connectors/UpwindLogsLoader/init.py | Timer-triggered function: fetch assets and upload to DCR via ingestion SDK. |
Solutions/Upwind/Data Connectors/UpwindLogsLoader_API_FunctionApp.json
Outdated
Show resolved
Hide resolved
Solutions/Upwind/Data Connectors/UpwindLogsLoader_API_FunctionApp.json
Outdated
Show resolved
Hide resolved
Solutions/Upwind/Data Connectors/UpwindLogsLoader_API_FunctionApp.json
Outdated
Show resolved
Hide resolved
Solutions/Upwind/Data Connectors/UpwindLogsLoader_API_FunctionApp.json
Outdated
Show resolved
Hide resolved
Solutions/Upwind/Data Connectors/azuredeploy_UpwindLogsLoader_API_FunctionApp.json
Outdated
Show resolved
Hide resolved
|
kindly accept CLA by adding comment @microsoft-github-policy-service agree company="company name" Please refer link https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/sentinel/sentinel-solutions.md?msclkid=9a240b52b11411ec99ae6736bd089c4a#categories-for-microsoft-sentinel-out-of-the-box-content-and-solutions for valid Domains and Verticals. Thanks! |
|
@microsoft-github-policy-service agree company="Upwind" |
|
Since the Function App template has been updated, kindly repackage the solution so that the changes are reflected in the main template. and Kindly include the following short links in the Function App configuration. These will be created once the PR is merged. Thanks! |
|
to be specific, mahesh needs these links swapped with the provided aka.ms links File 1: Solutions/Upwind/Data Connectors/azuredeploy_UpwindLogsLoader_API_FunctionApp.json https://aka.ms/sentinel-Upwind-azuredeploy "packageUri": { File 2: Solutions/Upwind/Data Connectors/UpwindLogsLoader_API_FunctionApp.json |
|
You need to repackage the solution. Maintemplate.json needs to be updated once you made a change to Solutions/Upwind/Data Connectors/UpwindLogsLoader_API_FunctionApp.json. You should have new files for package. @v-maheshbh can review once he's back in the office. |
This is not correct. The Function App package (UpwindLogsLoader.zip) is available at https://aka.ms/sentinel-Upwind-functionapp. The Azure deployment link is https://aka.ms/sentinel-Upwind-azuredeploy. Please update accordingly.. Thanks! |
|
Kindly deploy the latest main template and attach a testing screenshot of the Azure data connector. Thanks! |








Summary
UpwindLogs_CLtable using an Azure Function and the Azure Monitor Ingestion API (DCE/DCR)Components
Test plan
UpwindLogs_CLtable🤖 Generated with Claude Code