From cc0e5cd3de184ef89c11601e060491a0d1c8536b Mon Sep 17 00:00:00 2001 From: PrasadBoke Date: Thu, 28 Nov 2024 17:53:47 +0530 Subject: [PATCH] Added missing connector --- .../Cortex XDR/Data/Solution_CortexXDR.json | 5 +- Solutions/Cortex XDR/Package/3.0.1.zip | Bin 18924 -> 20858 bytes .../Package/createUiDefinition.json | 26 +- .../Cortex XDR/Package/mainTemplate.json | 375 +++++++++++++++++- 4 files changed, 394 insertions(+), 12 deletions(-) diff --git a/Solutions/Cortex XDR/Data/Solution_CortexXDR.json b/Solutions/Cortex XDR/Data/Solution_CortexXDR.json index d7044e3e057..4825237b971 100644 --- a/Solutions/Cortex XDR/Data/Solution_CortexXDR.json +++ b/Solutions/Cortex XDR/Data/Solution_CortexXDR.json @@ -11,7 +11,10 @@ "Parsers":[ "Parsers/PaloAltoCortexXDR.yaml" ], - "Data Connectors": ["Data Connectors/CortexXDR_ccp/DataConnectorDefinition.json"], + "Data Connectors": [ + "Data Connectors/CortexXDR_ccp/DataConnectorDefinition.json", + "Data Connectors/CortexXDR_DataConnector.json" + ], "BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\Cortex XDR", "Version": "3.0.0", "Metadata": "SolutionMetadata.json", diff --git a/Solutions/Cortex XDR/Package/3.0.1.zip b/Solutions/Cortex XDR/Package/3.0.1.zip index 991e1f41dddcb63514ee63807a6b41a7ac0a6db3..881555edbb3646dd928d0be1b68f2915b27aa3d4 100644 GIT binary patch literal 20858 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\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/Cortex%20XDR/ReleaseNotes.md)\n\n • There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing.\n\nThe [Palo Alto Networks](https://www.paloaltonetworks.com/) Cortex XDR Microsoft Sentinel Solution pulls log directly from the Cortex XDR platform via API. The solution is configured to pull the Incidents from the Cortex XDR platform every 5 minutes and ingest them into Microsoft Sentinel. The solution is dependent on the Cortex XDR API Key and API Key ID. The API Key ID is used as the polling key path and the API Key is used as the header for the API request. The solution also includes 3 analytics rules to detect the creation of incidents based on the severities (High, Medium, Low).\n\n**Data Connectors:** 1, **Parsers:** 1, **Analytic Rules:** 3\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)", + "description": "\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/Cortex%20XDR/ReleaseNotes.md)\n\n • There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing.\n\nThe [Palo Alto Networks](https://www.paloaltonetworks.com/) Cortex XDR Microsoft Sentinel Solution pulls log directly from the Cortex XDR platform via API. The solution is configured to pull the Incidents from the Cortex XDR platform every 5 minutes and ingest them into Microsoft Sentinel. The solution is dependent on the Cortex XDR API Key and API Key ID. The API Key ID is used as the polling key path and the API Key is used as the header for the API request. The solution also includes 3 analytics rules to detect the creation of incidents based on the severities (High, Medium, Low).\n\n**Data Connectors:** 2, **Parsers:** 1, **Analytic Rules:** 3\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)", "subscription": { "resourceProviders": [ "Microsoft.OperationsManagement/solutions", @@ -63,6 +63,30 @@ "text": "This Solution installs the data connector for Cortex XDR. You can get Cortex XDR data in your Microsoft Sentinel workspace. After installing the solution, configure and enable this data connector by following guidance in Manage solution view." } }, + { + "name": "dataconnectors-link2", + "type": "Microsoft.Common.TextBlock", + "options": { + "link": { + "label": "Learn more about connecting data sources", + "uri": "https://docs.microsoft.com/azure/sentinel/connect-data-sources" + } + } + }, + { + "name": "dataconnectors2-text", + "type": "Microsoft.Common.TextBlock", + "options": { + "text": "This Solution installs the data connector for Cortex XDR. You can get Cortex XDR custom log data in your Microsoft Sentinel workspace. After installing the solution, configure and enable this data connector by following guidance in Manage solution view." + } + }, + { + "name": "dataconnectors-parser-text", + "type": "Microsoft.Common.TextBlock", + "options": { + "text": "The Solution installs a parser that transforms the ingested data into Microsoft Sentinel normalized format. The normalized format enables better correlation of different types of data from different data sources to drive end-to-end outcomes seamlessly in security monitoring, hunting, incident investigation and response scenarios in Microsoft Sentinel." + } + }, { "name": "dataconnectors-link2", "type": "Microsoft.Common.TextBlock", diff --git a/Solutions/Cortex XDR/Package/mainTemplate.json b/Solutions/Cortex XDR/Package/mainTemplate.json index c5c8f92e8b5..b9a71640390 100644 --- a/Solutions/Cortex XDR/Package/mainTemplate.json +++ b/Solutions/Cortex XDR/Package/mainTemplate.json @@ -83,7 +83,18 @@ "_dataConnectorContentIdConnections1": "CortexXDRDataConnectorConnections", "dataConnectorTemplateNameConnections1": "[concat(parameters('workspace'),'-dc-',uniquestring(variables('_dataConnectorContentIdConnections1')))]", "blanks": "[replace('b', 'b', '')]", - "_solutioncontentProductId": "[concat(take(variables('_solutionId'),50),'-','sl','-', uniqueString(concat(variables('_solutionId'),'-','Solution','-',variables('_solutionId'),'-', variables('_solutionVersion'))))]" + "uiConfigId2": "[variables('_dataconnectorId')]", + "_uiConfigId2": "[variables('uiConfigId2')]", + "dataConnectorContentId2": "[variables('_dataconnectorId')]", + "_dataConnectorContentId2": "[variables('dataConnectorContentId2')]", + "dataConnectorId2": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId2'))]", + "_dataConnectorId2": "[variables('dataConnectorId2')]", + "dataConnectorTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-dc-',uniquestring(variables('_dataConnectorContentId2'))))]", + "dataConnectorVersion2": "1.0.0", + "_dataConnectorcontentProductId2": "[concat(take(variables('_solutionId'),50),'-','dc','-', uniqueString(concat(variables('_solutionId'),'-','DataConnector','-',variables('_dataConnectorContentId2'),'-', variables('dataConnectorVersion2'))))]", + "_solutioncontentProductId": "[concat(take(variables('_solutionId'),50),'-','sl','-', uniqueString(concat(variables('_solutionId'),'-','Solution','-',variables('_solutionId'),'-', variables('_solutionVersion'))))]", + "xdrAuthId": "{{apiKeyId}}", + "_xdrAuthId": "[variables('xdrAuthId')]" }, "resources": [ { @@ -709,8 +720,6 @@ "isPreview": false }, "permissions": { - "tenant": null, - "licenses": null, "resourceProvider": [ { "provider": "Microsoft.OperationalInsights/workspaces", @@ -781,8 +790,7 @@ }, "type": "ConnectionToggleButton" } - ], - "innerSteps": null + ] } ], "isConnectivityCriteriasMatchSome": false @@ -2968,8 +2976,6 @@ "isPreview": false }, "permissions": { - "tenant": null, - "licenses": null, "resourceProvider": [ { "provider": "Microsoft.OperationalInsights/workspaces", @@ -3040,8 +3046,7 @@ }, "type": "ConnectionToggleButton" } - ], - "innerSteps": null + ] } ], "isConnectivityCriteriasMatchSome": false @@ -3389,6 +3394,351 @@ "version": "[variables('dataConnectorCCPVersion')]" } }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('dataConnectorTemplateSpecName2')]", + "location": "[parameters('workspace-location')]", + "dependsOn": [ + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" + ], + "properties": { + "description": "Cortex XDR data connector with template version 3.0.1", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('dataConnectorVersion2')]", + "parameters": {}, + "variables": {}, + "resources": [ + { + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId2'))]", + "apiVersion": "2021-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors", + "location": "[parameters('workspace-location')]", + "kind": "APIPolling", + "properties": { + "connectorUiConfig": { + "id": "[variables('_uiConfigId2')]", + "publisher": "DEFEND Ltd.", + "title": "Cortex XDR - Incidents", + "descriptionMarkdown": "Custom Data connector from DEFEND to utilise the Cortex API to ingest incidents from Cortex XDR platform into Microsoft Sentinel.", + "graphQueriesTableName": "CortexXDR_Incidents_CL", + "sampleQueries": [ + { + "description": "All Cortex XDR Incidents", + "query": "{{graphQueriesTableName}}\n| sort by TimeGenerated desc" + } + ], + "availability": { + "isPreview": false, + "status": 1 + }, + "connectivityCriteria": [ + { + "type": "SentinelKindsV2", + "value": [ + "APIPolling" + ] + } + ], + "dataTypes": [ + { + "lastDataReceivedQuery": "{{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)", + "name": "{{graphQueriesTableName}}" + } + ], + "graphQueries": [ + { + "baseQuery": "{{graphQueriesTableName}}", + "legend": "Cortex XDR Incidents", + "metricName": "Total data received" + } + ], + "instructionSteps": [ + { + "description": "Connect Cortex XDR to Microsoft Sentinel via Cortex API to process Cortex Incidents.", + "instructions": [ + { + "parameters": { + "enable": "true", + "userRequestPlaceHoldersInput": [ + { + "displayText": "API Endpoint, excluding the 'api-' portion (example.xdr.au.paloaltonetworks.com)", + "placeHolderName": "{{fqdn}}", + "requestObjectKey": "apiEndpoint" + }, + { + "displayText": "API Key Id", + "placeHolderName": "{{apiKeyId}}", + "pollingKeyPaths": [ + "$.request.headers.x-xdr-auth-id" + ] + } + ] + }, + "type": "APIKey" + } + ], + "title": "Enable Cortex XDR API" + } + ], + "permissions": { + "customs": [ + { + "description": "**Cortex API Token** is required for REST API. [See the documentation to learn more about API](https://docs.paloaltonetworks.com/cortex/cortex-xdr/cortex-xdr-api.html). Check all requirements and follow the instructions for obtaining credentials.", + "name": "Cortex API credentials" + } + ], + "resourceProvider": [ + { + "permissionsDisplayText": "read and write permissions are required.", + "provider": "Microsoft.OperationalInsights/workspaces", + "providerDisplayName": "Workspace", + "requiredPermissions": { + "delete": true, + "read": true, + "write": true + }, + "scope": "Workspace" + }, + { + "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)", + "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", + "providerDisplayName": "Keys", + "requiredPermissions": { + "action": true + }, + "scope": "Workspace" + } + ] + } + }, + "pollingConfig": { + "auth": { + "apiKeyName": "Authorization", + "authType": "APIKey" + }, + "isActive": true, + "paging": { + "pagingType": "None" + }, + "request": { + "apiEndpoint": "https://api-{{fqdn}}/public_api/v1/incidents/get_incidents/", + "headers": { + "x-xdr-auth-id": "[variables('_xdrAuthId')]" + }, + "httpMethod": "Post", + "queryParametersTemplate": "{ 'request_data': { 'filters': [ { 'field': 'modification_time', 'operator': 'gte', 'value': {_QueryWindowStartTime} } ], 'sort': { 'field': 'modification_time', 'keyword': 'desc' } } }", + "queryTimeFormat": "UnixTimestampInMills", + "queryWindowInMin": 5 + }, + "response": { + "eventsJsonPaths": [ + "$..incidents" + ] + } + } + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2023-04-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', last(split(variables('_dataConnectorId2'),'/'))))]", + "properties": { + "parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId2'))]", + "contentId": "[variables('_dataConnectorContentId2')]", + "kind": "DataConnector", + "version": "[variables('dataConnectorVersion2')]", + "source": { + "kind": "Solution", + "name": "Cortex XDR", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + } + } + } + ] + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_dataConnectorContentId2')]", + "contentKind": "DataConnector", + "displayName": "Cortex XDR - Incidents", + "contentProductId": "[variables('_dataConnectorcontentProductId2')]", + "id": "[variables('_dataConnectorcontentProductId2')]", + "version": "[variables('dataConnectorVersion2')]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2023-04-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', last(split(variables('_dataConnectorId2'),'/'))))]", + "dependsOn": [ + "[variables('_dataConnectorId2')]" + ], + "location": "[parameters('workspace-location')]", + "properties": { + "parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId2'))]", + "contentId": "[variables('_dataConnectorContentId2')]", + "kind": "DataConnector", + "version": "[variables('dataConnectorVersion2')]", + "source": { + "kind": "Solution", + "name": "Cortex XDR", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + } + } + }, + { + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId2'))]", + "apiVersion": "2021-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors", + "location": "[parameters('workspace-location')]", + "kind": "APIPolling", + "properties": { + "connectorUiConfig": { + "id": "[variables('_uiConfigId2')]", + "publisher": "DEFEND Ltd.", + "title": "Cortex XDR - Incidents", + "descriptionMarkdown": "Custom Data connector from DEFEND to utilise the Cortex API to ingest incidents from Cortex XDR platform into Microsoft Sentinel.", + "graphQueriesTableName": "CortexXDR_Incidents_CL", + "sampleQueries": [ + { + "description": "All Cortex XDR Incidents", + "query": "{{graphQueriesTableName}}\n| sort by TimeGenerated desc" + } + ], + "availability": { + "isPreview": false, + "status": 1 + }, + "connectivityCriteria": [ + { + "type": "SentinelKindsV2", + "value": [ + "APIPolling" + ] + } + ], + "dataTypes": [ + { + "lastDataReceivedQuery": "{{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)", + "name": "{{graphQueriesTableName}}" + } + ], + "graphQueries": [ + { + "baseQuery": "{{graphQueriesTableName}}", + "legend": "Cortex XDR Incidents", + "metricName": "Total data received" + } + ], + "instructionSteps": [ + { + "description": "Connect Cortex XDR to Microsoft Sentinel via Cortex API to process Cortex Incidents.", + "instructions": [ + { + "parameters": { + "enable": "true", + "userRequestPlaceHoldersInput": [ + { + "displayText": "API Endpoint, excluding the 'api-' portion (example.xdr.au.paloaltonetworks.com)", + "placeHolderName": "{{fqdn}}", + "requestObjectKey": "apiEndpoint" + }, + { + "displayText": "API Key Id", + "placeHolderName": "{{apiKeyId}}", + "pollingKeyPaths": [ + "$.request.headers.x-xdr-auth-id" + ] + } + ] + }, + "type": "APIKey" + } + ], + "title": "Enable Cortex XDR API" + } + ], + "permissions": { + "customs": [ + { + "description": "**Cortex API Token** is required for REST API. [See the documentation to learn more about API](https://docs.paloaltonetworks.com/cortex/cortex-xdr/cortex-xdr-api.html). Check all requirements and follow the instructions for obtaining credentials.", + "name": "Cortex API credentials" + } + ], + "resourceProvider": [ + { + "permissionsDisplayText": "read and write permissions are required.", + "provider": "Microsoft.OperationalInsights/workspaces", + "providerDisplayName": "Workspace", + "requiredPermissions": { + "delete": true, + "read": true, + "write": true + }, + "scope": "Workspace" + }, + { + "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)", + "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", + "providerDisplayName": "Keys", + "requiredPermissions": { + "action": true + }, + "scope": "Workspace" + } + ] + } + }, + "pollingConfig": { + "auth": { + "apiKeyName": "Authorization", + "authType": "APIKey" + }, + "isActive": true, + "paging": { + "pagingType": "None" + }, + "request": { + "apiEndpoint": "https://api-{{fqdn}}/public_api/v1/incidents/get_incidents/", + "headers": { + "x-xdr-auth-id": "[variables('_xdrAuthId')]" + }, + "httpMethod": "Post", + "queryParametersTemplate": "{ 'request_data': { 'filters': [ { 'field': 'modification_time', 'operator': 'gte', 'value': {_QueryWindowStartTime} } ], 'sort': { 'field': 'modification_time', 'keyword': 'desc' } } }", + "queryTimeFormat": "UnixTimestampInMills", + "queryWindowInMin": 5 + }, + "response": { + "eventsJsonPaths": [ + "$..incidents" + ] + } + } + } + }, { "type": "Microsoft.OperationalInsights/workspaces/providers/contentPackages", "apiVersion": "2023-04-01-preview", @@ -3399,7 +3749,7 @@ "contentSchemaVersion": "3.0.0", "displayName": "Cortex XDR", "publisherDisplayName": "Microsoft Sentinel, Microsoft Corporation", - "descriptionHtml": "

Note: Please refer to the following before installing the solution:

\n

• Review the solution Release Notes

\n

• There may be known issues pertaining to this Solution, please refer to them before installing.

\n

The Palo Alto Networks Cortex XDR Microsoft Sentinel Solution pulls log directly from the Cortex XDR platform via API. The solution is configured to pull the Incidents from the Cortex XDR platform every 5 minutes and ingest them into Microsoft Sentinel. The solution is dependent on the Cortex XDR API Key and API Key ID. The API Key ID is used as the polling key path and the API Key is used as the header for the API request. The solution also includes 3 analytics rules to detect the creation of incidents based on the severities (High, Medium, Low).

\n

Data Connectors: 1, Parsers: 1, Analytic Rules: 3

\n

Learn more about Microsoft Sentinel | Learn more about Solutions

\n", + "descriptionHtml": "

Note: Please refer to the following before installing the solution:

\n

• Review the solution Release Notes

\n

• There may be known issues pertaining to this Solution, please refer to them before installing.

\n

The Palo Alto Networks Cortex XDR Microsoft Sentinel Solution pulls log directly from the Cortex XDR platform via API. The solution is configured to pull the Incidents from the Cortex XDR platform every 5 minutes and ingest them into Microsoft Sentinel. The solution is dependent on the Cortex XDR API Key and API Key ID. The API Key ID is used as the polling key path and the API Key is used as the header for the API request. The solution also includes 3 analytics rules to detect the creation of incidents based on the severities (High, Medium, Low).

\n

Data Connectors: 2, Parsers: 1, Analytic Rules: 3

\n

Learn more about Microsoft Sentinel | Learn more about Solutions

\n", "contentKind": "Solution", "contentProductId": "[variables('_solutioncontentProductId')]", "id": "[variables('_solutioncontentProductId')]", @@ -3447,6 +3797,11 @@ "kind": "DataConnector", "contentId": "[variables('_dataConnectorContentIdConnections1')]", "version": "[variables('dataConnectorCCPVersion')]" + }, + { + "kind": "DataConnector", + "contentId": "[variables('_dataConnectorContentId2')]", + "version": "[variables('dataConnectorVersion2')]" } ] },