Cato Networks solution: CCF Push data connector for Cato Cloud events - #15004
Cato Networks solution: CCF Push data connector for Cato Cloud events#15004yoelk wants to merge 2 commits into
Conversation
|
@microsoft-github-policy-service agree company="Cato Networks" |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a new Microsoft Sentinel solution for Cato Networks implementing a CCF Push data connector that ingests Cato Cloud events into a custom Log Analytics table.
Changes:
- Introduces the new solution scaffold (
Solutions/CatoNetworks) including metadata, release notes, and ARM UI/parameters. - Adds the Push connector definition/resources (DCR, custom table schema, connector definition + instance).
- Registers the connector ID and custom table schema in repo validation lists.
Reviewed changes
Copilot reviewed 11 out of 14 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| Solutions/CatoNetworks/SolutionMetadata.json | Adds solution marketplace metadata (publisher/offer/support/categories/dates). |
| Solutions/CatoNetworks/ReleaseNotes.md | Adds initial release notes entry for the solution. |
| Solutions/CatoNetworks/Package/testParameters.json | Adds ARM test parameters used for validation/deployment. |
| Solutions/CatoNetworks/Package/createUiDefinition.json | Adds the Sentinel solution install UI (workspace selector + copyable setup values). |
| Solutions/CatoNetworks/Data/Solution_CatoNetworks.json | Adds solution packaging descriptor pointing to connector definition and metadata. |
| Solutions/CatoNetworks/Data Connectors/CatoNetworks_PUSH_CCP/table.json | Defines the custom table CatoNetworksEvents_CL schema. |
| Solutions/CatoNetworks/Data Connectors/CatoNetworks_PUSH_CCP/dataConnector.json | Defines the Push data connector instance wiring to DCR/DCE + auth outputs. |
| Solutions/CatoNetworks/Data Connectors/CatoNetworks_PUSH_CCP/connectorDefinition.json | Defines connector UI, instructions, queries, and permissions. |
| Solutions/CatoNetworks/Data Connectors/CatoNetworks_PUSH_CCP/DCR.json | Defines stream + transformKql mapping from Cato payload to custom table. |
| .script/tests/detectionTemplateSchemaValidation/ValidConnectorIds.json | Registers the connector ID for schema validation. |
| .script/tests/KqlvalidationsTests/CustomTables/CatoNetworksEvents_CL.json | Registers the custom table schema for KQL validation tests. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Adds Solutions/CatoNetworks, a Codeless Connector Framework (CCF) Push data connector that ingests Cato Cloud security and networking events into the CatoNetworksEvents_CL custom table. Also registers the custom table with the KQL validator and adds CatoNetworksEventsPush to ValidConnectorIds.json.
664410e to
65d40b0
Compare
|
Thanks for the review. I rebased onto current I checked each of the five findings against what is already merged in this repo rather than answer from first principles. Four of them describe the repo's own conventions or the packager's own output, so I have not changed them; the fifth is a deliberate design choice I would rather explain than quietly alter. Happy to be overruled on any of these.
The ReleaseNotes table has an extra leading pipe — I do not think it does. The row is The update template is linked from an external repo on a mutable branch — this one is a real design decision, so it deserves a real answer. Cato's event schema grows more often than a solution version is published. Under CCF Push we hold Pinning it to a commit SHA would freeze customers on whichever schema existed at release and defeat the purpose. The template is desired-state and strictly append-only — columns are added, never removed or retyped, enforced by a checked-in baseline on our side — so "latest" is always the correct thing to apply, and applying an older one could only ever remove columns a customer already has. I did originally ship this template inside If there is a supported pattern for shipping a customer-applied schema update inside a solution, I would much rather use it — that question is open with the App Assure team and I have no strong attachment to the current approach. |
|
Hi yoelk Kindly ensure all CCF files follow the naming convention: Thanks! |
Per review: all CCF files now carry the solution name as their prefix, matching the convention in merged solutions such as Databahn. connectorDefinition.json -> CatoNetworks_ConnectorDefinition.json dataConnector.json -> CatoNetworks_dataConnector.json DCR.json -> CatoNetworks_DCR.json table.json -> CatoNetworks_table.json Data/Solution_CatoNetworks.json points at the renamed connector definition. Nothing else referenced the old names: the packager enumerates the connector folder and classifies each file by its JSON 'type' rather than by file name (get-ccp-details.ps1), so the generated package is unchanged.
|
Thanks v-maheshbh (@v-maheshbh) — done, pushed in b2cbc04. All four CCF files under
I prefixed The only other change is the corresponding path in Let me know if anything else needs adjusting. |
|
Small correction to my previous comment: I said the packager was re-run after the rename and produced identical output. That was imprecise — the packager was not re-run; The conclusion still holds, and here is the actual basis for it rather than an inference:
So the committed |

Change(s):
Solutions/CatoNetworks), a CCF Push data connector for Cato Cloud security and networking events.CatoNetworksEvents_CLand declares the streamCustom-CatoNetworksEvents;transformKqlmaps the Cato event schema onto the table, derivingTimeGeneratedfrom Cato's epoch-millisecondtimefield and renamingtitletoactivity_title.Logos/catonetworks.svg..script/tests/KqlvalidationsTests/CustomTables/CatoNetworksEvents_CL.json.CatoNetworksEventsPushto.script/tests/detectionTemplateSchemaValidation/ValidConnectorIds.json(append only; 351 -> 352 entries, nothing removed).Reason for Change(s):
Version Updated:
Testing Completed:
Package/mainTemplate.jsonwas deployed into a Microsoft Sentinel workspace with no custom parsers, functions or tables. The connector page renders, Deploy provisions the Entra application, data collection endpoint, data collection rule, custom table and the role assignment, a batch of events is accepted, rows land inCatoNetworksEvents_CL, and the connector reports Connected.Package/was produced byTools/Create-Azure-Sentinel-Solution/V3/createSolutionV3.ps1incatalogversion mode, not hand written.Checked that the validations are passing and have addressed any issues that are present:
node .script/local-validation/validate.js --path "Solutions/CatoNetworks"reports 47 passed, 3 failed, 40 skipped. The Solution checks (9 passed) and ARM-TTK (2 passed) pass.netcoreapp3.1, which requires an x64 .NET host and this is arm64, and the third needs the .NET 8 runtime, which is not installed. Each aborts withCould not find 'dotnet' host for the 'X64' architectureorYou must install or update .NET to run this applicationbefore running a single test.