Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .script/utils/workbookCheckers/previewImageChecker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ function isAllPng(previewImagesFileNames: Array<string>): boolean {

function isAllIncludeBlackOrWhite(previewImagesFileNames: Array<string>): boolean {
return previewImagesFileNames.every((previewImageFileName: string) =>
["Black", "black", "white", "White"].some(color => previewImageFileName.includes(color))
["Black", "black", "white", "White", "Light", "light", "Dark", "dark"].some(color => previewImageFileName.includes(color))
);
}

function isMissingImages(previewImagesFileNames: Array<string>): boolean {
let blackImageCount: number = 0;
let whiteImageCount: number = 0;
previewImagesFileNames.forEach((filename) => {
if (filename.includes("black") || filename.includes("Black")) blackImageCount++;
if (filename.includes("white") || filename.includes("White")) whiteImageCount++;
if (filename.includes("black") || filename.includes("Black") || filename.includes("dark") || filename.includes("Dark")) blackImageCount++;
if (filename.includes("white") || filename.includes("White") || filename.includes("light") || filename.includes("Light")) whiteImageCount++;
});
return blackImageCount === 0 || whiteImageCount === 0;
}
Expand All @@ -37,11 +37,11 @@ export function isValidPreviewImageFileNames(items: Array<WorkbookMetadata>) {
}

if (!isAllIncludeBlackOrWhite(workbookMetadata.previewImagesFileNames)) {
throw new WorkbookValidationError(`Invalid Preview Images for workbook ${workbookMetadata.workbookKey}. All preview image file names must include either "Black" or "White"`);
throw new WorkbookValidationError(`Invalid Preview Images for workbook ${workbookMetadata.workbookKey}. All preview image file names must include either "Black", "Dark", "White" or "Light"`);
}

if (isMissingImages(workbookMetadata.previewImagesFileNames)) {
throw new WorkbookValidationError(`Preview Image Validation failed for ${workbookMetadata.workbookKey}. Preview images must contain at least one white background image and one image black background image.`);
throw new WorkbookValidationError(`Preview Image Validation failed for ${workbookMetadata.workbookKey}. Preview images must contain at least one white or light background image and one black or dark background image.`);
}
});
};
Expand Down
21 changes: 21 additions & 0 deletions Solutions/DPDP Compliance/Data/Solution_DPDPCompliance.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"Name": "DPDP Compliance",
"Author": "Microsoft - [email protected]",
"Logo": "<img src ='https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/Azure_Sentinel.svg' width='75px' height='75px'>",
"Description": "This workbook helps you track, visualize and monitor DPDP (Digital Personal Data Protection) related requirements across your enterprise. It consolidates data from Defender XDR, Microsoft Purview, Azure SQL Databases, Microsoft 365, UEBA and Entra ID solution.",
"Workbooks": [
"Workbooks/DPDPCompliance.json"
],
"dependentDomainSolutionIds": [
"azuresentinel.azure-sentinel-solution-microsoft365defender",
"azuresentinel.azure-sentinel-solution-azurepurview",
"azuresentinel.azure-sentinel-solution-mip",
"azuresentinel.sentinel4sql",
"azuresentinel.azure-sentinel-solution-office365",
"azuresentinel.azure-sentinel-solution-azureactivedirectory"
],
"BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\DPDP Compliance\\",
"Version": "3.0.0",
"TemplateSpec": true,
"Metadata": "SolutionMetadata.json"
}
Binary file added Solutions/DPDP Compliance/Package/3.0.0.zip
Binary file not shown.
103 changes: 103 additions & 0 deletions Solutions/DPDP Compliance/Package/createUiDefinition.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"config": {
"isWizard": false,
"basics": {
"description": "<img src ='https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/Azure_Sentinel.svg' width='75px' height='75px'>\n\n**Note:** Please refer to the following before installing the solution: \n\n• Review the solution [Release Notes](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/DPDP%20Compliance/ReleaseNotes.md)\n\n • There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing.\n\nThis workbook helps you track, visualize and monitor DPDP (Digital Personal Data Protection) related requirements across your enterprise. It consolidates data from Defender XDR, Microsoft Purview, Azure SQL Databases, Microsoft 365, UEBA and Entra ID solution.\n\n**Workbooks:** 1\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)",
"subscription": {
"resourceProviders": [
"Microsoft.OperationsManagement/solutions",
"Microsoft.OperationalInsights/workspaces/providers/alertRules",
"Microsoft.Insights/workbooks",
"Microsoft.Logic/workflows"
]
},
"location": {
"metadata": {
"hidden": "Hiding location, we get it from the log analytics workspace"
},
"visible": false
},
"resourceGroup": {
"allowExisting": true
}
}
},
"basics": [
{
"name": "getLAWorkspace",
"type": "Microsoft.Solutions.ArmApiControl",
"toolTip": "This filters by workspaces that exist in the Resource Group selected",
"condition": "[greater(length(resourceGroup().name),0)]",
"request": {
"method": "GET",
"path": "[concat(subscription().id,'/providers/Microsoft.OperationalInsights/workspaces?api-version=2020-08-01')]"
}
},
{
"name": "workspace",
"type": "Microsoft.Common.DropDown",
"label": "Workspace",
"placeholder": "Select a workspace",
"toolTip": "This dropdown will list only workspace that exists in the Resource Group selected",
"constraints": {
"allowedValues": "[map(filter(basics('getLAWorkspace').value, (filter) => contains(toLower(filter.id), toLower(resourceGroup().name))), (item) => parse(concat('{\"label\":\"', item.name, '\",\"value\":\"', item.name, '\"}')))]",
"required": true
},
"visible": true
}
],
"steps": [
{
"name": "workbooks",
"label": "Workbooks",
"subLabel": {
"preValidation": "Configure the workbooks",
"postValidation": "Done"
},
"bladeTitle": "Workbooks",
"elements": [
{
"name": "workbooks-text",
"type": "Microsoft.Common.TextBlock",
"options": {
"text": "This solution installs workbook(s) to help you gain insights into the telemetry collected in Microsoft Sentinel. After installing the solution, start using the workbook in Manage solution view."
}
},
{
"name": "workbooks-link",
"type": "Microsoft.Common.TextBlock",
"options": {
"link": {
"label": "Learn more",
"uri": "https://docs.microsoft.com/azure/sentinel/tutorial-monitor-your-data"
}
}
},
{
"name": "workbook1",
"type": "Microsoft.Common.Section",
"label": "Digital Personal Data Protection (DPDP) Compliance Dashboard (Preview)",
"elements": [
{
"name": "workbook1-text",
"type": "Microsoft.Common.TextBlock",
"options": {
"text": "This workbook helps you track, visualize and monitor DPDP (Digital Personal Data Protection) related requirements across your enterprise. It consolidates data from Defender XDR, Microsoft Purview, Azure SQL Databases, Microsoft 365, UEBA and Entra ID solution."
}
}
]
}
]
}
],
"outputs": {
"workspace-location": "[first(map(filter(basics('getLAWorkspace').value, (filter) => and(contains(toLower(filter.id), toLower(resourceGroup().name)),equals(filter.name,basics('workspace')))), (item) => item.location))]",
"location": "[location()]",
"workspace": "[basics('workspace')]"
}
}
}
280 changes: 280 additions & 0 deletions Solutions/DPDP Compliance/Package/mainTemplate.json

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions Solutions/DPDP Compliance/Package/testParameters.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"location": {
"type": "string",
"minLength": 1,
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Not used, but needed to pass arm-ttk test `Location-Should-Not-Be-Hardcoded`. We instead use the `workspace-location` which is derived from the LA workspace"
}
},
"workspace-location": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "[concat('Region to deploy solution resources -- separate from location selection',parameters('location'))]"
}
},
"workspace": {
"defaultValue": "",
"type": "string",
"metadata": {
"description": "Workspace name for Log Analytics where Microsoft Sentinel is setup"
}
},
"workbook1-name": {
"type": "string",
"defaultValue": "Digital Personal Data Protection (DPDP) Compliance (Preview)",
"minLength": 1,
"metadata": {
"description": "Name for the workbook"
}
}
}
3 changes: 3 additions & 0 deletions Solutions/DPDP Compliance/ReleaseNote.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|-------------|--------------------------------|-----------------------------------------------------------------------------------------------------|
| 3.0.0 | 26-01-2026 | Initial Solution Release |
19 changes: 19 additions & 0 deletions Solutions/DPDP Compliance/SolutionMetadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"publisherId": "azuresentinel",
"offerId": "azure-sentinel-solution-dpdp-compliance",
"firstPublishDate": "2026-01-26",
"providers": [
"Microsoft"
],
"categories": {
"domains": [
"Compliance"
]
},
"support": {
"name": "Microsoft Corporation",
"email": "[email protected]",
"tier": "Microsoft",
"link": "https://support.microsoft.com"
}
}
Loading
Loading