Skip to content

Add DentiSystems Sentinel Solution - #14965

Open
MD Sadman Shovik (Sadman-TheDentian) wants to merge 20 commits into
Azure:masterfrom
DentiSystems-HQ:feature/dentisystems-solution
Open

Add DentiSystems Sentinel Solution#14965
MD Sadman Shovik (Sadman-TheDentian) wants to merge 20 commits into
Azure:masterfrom
DentiSystems-HQ:feature/dentisystems-solution

Conversation

@Sadman-TheDentian

@Sadman-TheDentian MD Sadman Shovik (Sadman-TheDentian) commented Aug 23, 2026

Copy link
Copy Markdown

Required items, please complete

Change(s):      
                                 
- Added the official DentiSystems Active  Deception integration solution package, including Data Connectors, Analytic Rules, Workbooks, and  ASIM Parsers.                                      
                                                 
Reason for Change(s):  
                      
- New Partner Solution integration for DentiSystems (DentiGrid & GATE telemetry).         

Version Updated:

- Yes (Initial Release 1.0.0)

Testing Completed:

 - Yes (KQL and ARM template schema validated successfully in isolated Sentinel workspace).      

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

@Sadman-TheDentian

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="DentiSystems"

@v-maheshbh v-maheshbh (v-maheshbh) added the New Solution For new Solutions which are new to Microsoft Sentinel label Aug 24, 2026

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 the initial DentiSystems Microsoft Sentinel solution package (v1.0.0) including an ARM deployment template, UI definition, solution metadata, and packaged security content for DentiGrid & GATE telemetry.

Changes:

  • Added ARM mainTemplate.json (and packaged copy) deploying the CCP REST API poller data connector, 4 scheduled analytics rules, a workbook, and saved searches for hunting/ASIM normalization.
  • Added solution documentation and artifacts (workbook JSON, analytic rule JSONs, hunting queries JSON, parser KQL, connector metadata).
  • Added a Python helper script to generate/emit the solution template and content files.

Reviewed changes

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

Show a summary per file
File Description
Solutions/DentiSystems/mainTemplate.json Primary ARM template for deploying solution resources into a Sentinel-enabled workspace.
Solutions/DentiSystems/generate_templates.py Local generator script intended to emit templates/content files for the solution package.
Solutions/DentiSystems/createUiDefinition.json Azure Portal wizard UI definition for collecting workspace and API parameters.
Solutions/DentiSystems/Workbooks/DentiSystems_ThreatOverview.json Workbook definition used by the solution for visualization.
Solutions/DentiSystems/SolutionMetadata.json Solution manifest metadata (publisher, categories, version, package counts).
Solutions/DentiSystems/README.md Solution documentation (architecture, contents, deployment steps, schema).
Solutions/DentiSystems/Parsers/DentiSystems_ASIM_Parser.kql ASIM normalization parser KQL content (intended function body).
Solutions/DentiSystems/Package/mainTemplate.json Packaged copy of the primary ARM template (for Content Hub packaging).
Solutions/DentiSystems/Package/createUiDefinition.json Packaged copy of the Azure Portal wizard UI definition.
Solutions/DentiSystems/Package/README.md Packaged copy of the solution documentation.
Solutions/DentiSystems/HuntingQueries/DentiSystems_HuntingQueries.json Two hunting queries shipped with the solution.
Solutions/DentiSystems/DataConnectors/DentiSystems_CCP.json Data connector metadata artifact for the package.
Solutions/DentiSystems/AnalyticRules/DentiSystems_VolumetricRecon.json Scheduled analytic rule for volumetric recon detection.
Solutions/DentiSystems/AnalyticRules/DentiSystems_SCADA_Tamper.json Scheduled analytic rule for ICS/BMS protocol tampering detection.
Solutions/DentiSystems/AnalyticRules/DentiSystems_HighSeverityBreach.json Scheduled analytic rule for high-severity honeypot breach detection.
Solutions/DentiSystems/AnalyticRules/DentiSystems_GATE_ThreatIntercept.json Scheduled analytic rule for GATE injection/threat interception detection.
Suppressed comments (1)

Solutions/DentiSystems/Package/createUiDefinition.json:1

  • Same issue as the non-packaged createUiDefinition.json: steps('basics') is invalid because "basics" isn’t a step. Update to use basics('workspace') for workspace name/location so the packaged UI definition deploys successfully.

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

Comment on lines +137 to +147
"outputs": {
"workspace": "[steps('basics').workspace.name]",
"workspaceLocation": "[steps('basics').workspace.location]",
"location": "[steps('basics').workspace.location]",
"dentiSystemsApiEndpoint": "[steps('dentiSystemsConfig').apiEndpoint]",
"dentiSystemsApiKey": "[steps('dentiSystemsConfig').apiKey]",
"enableDataConnector": "[steps('dentiSystemsConfig').enableDataConnector]",
"enableAnalyticRules": "[steps('securityContent').enableAnalyticRules]",
"enableWorkbooks": "[steps('securityContent').enableWorkbooks]",
"enableHuntingQueries": "[steps('securityContent').enableHuntingQueries]"
}
Comment on lines +5 to +14
azure_sentinel_dir = "/home/sadmanthedentian/Documents/DENTISYSTEMS/Azure-Sentinel"
package_dir = os.path.join(azure_sentinel_dir, "Package")
connectors_dir = os.path.join(azure_sentinel_dir, "DataConnectors")
rules_dir = os.path.join(azure_sentinel_dir, "AnalyticRules")
workbooks_dir = os.path.join(azure_sentinel_dir, "Workbooks")
hunting_dir = os.path.join(azure_sentinel_dir, "HuntingQueries")
parsers_dir = os.path.join(azure_sentinel_dir, "Parsers")

for d in [azure_sentinel_dir, package_dir, connectors_dir, rules_dir, workbooks_dir, hunting_dir, parsers_dir]:
os.makedirs(d, exist_ok=True)
Comment on lines +1008 to +1011
for filepath, content in files_to_write.items():
with open(filepath, "w", encoding="utf-8") as f:
json.dump(content, f, indent=2)
print(f"Wrote {filepath} ({os.path.getsize(filepath)} bytes)")
Comment on lines +3 to +4
DENTIGRIDThreats_CL
| extend EventVendor = 'DentiSystems', EventProduct = 'DentiGrid', EventProductVersion = '1.0'
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
…tputs, wrap ASIM KQL parser view, and refine generate_templates
@@ -0,0 +1,36 @@
import json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

New Solution For new Solutions which are new to Microsoft Sentinel

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants