diff --git a/Solutions/IllumioSaaS/Package/3.2.3.zip b/Solutions/IllumioSaaS/Package/3.2.3.zip new file mode 100644 index 00000000000..c88c576b4b4 Binary files /dev/null and b/Solutions/IllumioSaaS/Package/3.2.3.zip differ diff --git a/Solutions/IllumioSaaS/Package/createUiDefinition.json b/Solutions/IllumioSaaS/Package/createUiDefinition.json index 26b06ba08b5..d5238de2525 100644 --- a/Solutions/IllumioSaaS/Package/createUiDefinition.json +++ b/Solutions/IllumioSaaS/Package/createUiDefinition.json @@ -6,7 +6,7 @@ "config": { "isWizard": false, "basics": { - "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/IllumioSaaS/ReleaseNotes.md)\n\n • There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing.\n\n[IllumioSaaS](https://www.illumio.com/) solution provides ability to ingest auditable and flow events from AWS S3 bucket.\n\n**Data Connectors:** 1, **Workbooks:** 3, **Analytic Rules:** 6\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/IllumioSaaS/ReleaseNotes.md)\n\n • There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing.\n\n[IllumioSaaS](https://www.illumio.com/) solution provides ability to ingest auditable and flow events from AWS S3 bucket.\n\n**Data Connectors:** 1, **Workbooks:** 3, **Analytic Rules:** 6, **Function Apps:** 1, **Playbooks:** 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", @@ -256,6 +256,34 @@ ] } ] + }, + { + "name": "playbooks", + "label": "Playbooks", + "subLabel": { + "preValidation": "Configure the playbooks", + "postValidation": "Done" + }, + "bladeTitle": "Playbooks", + "elements": [ + { + "name": "playbooks-text", + "type": "Microsoft.Common.TextBlock", + "options": { + "text": "This solution installs the Playbook templates to help implement your Security Orchestration, Automation and Response (SOAR) operations. After installing the solution, these will be deployed under Playbook Templates in the Automation blade in Microsoft Sentinel. They can be configured and managed from the Manage solution view in Content Hub." + } + }, + { + "name": "playbooks-link", + "type": "Microsoft.Common.TextBlock", + "options": { + "link": { + "label": "Learn more", + "uri": "https://docs.microsoft.com/azure/sentinel/tutorial-respond-threats-playbook?WT.mc_id=Portal-Microsoft_Azure_CreateUIDef" + } + } + } + ] } ], "outputs": { diff --git a/Solutions/IllumioSaaS/Package/mainTemplate.json b/Solutions/IllumioSaaS/Package/mainTemplate.json index d47e9ec4df1..ac0995a44f9 100644 --- a/Solutions/IllumioSaaS/Package/mainTemplate.json +++ b/Solutions/IllumioSaaS/Package/mainTemplate.json @@ -55,7 +55,7 @@ }, "variables": { "_solutionName": "IllumioSaaS", - "_solutionVersion": "3.2.2", + "_solutionVersion": "3.2.3", "solutionId": "illumioinc1629822633689.illumio_sentinel", "_solutionId": "[variables('solutionId')]", "uiConfigId1": "IllumioSaaSDataConnector", @@ -128,6 +128,38 @@ "analyticRuleTemplateSpecName6": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('7379f752-18a2-43ca-8b74-70747dd792f8')))]", "_analyticRulecontentProductId6": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','7379f752-18a2-43ca-8b74-70747dd792f8','-', '1.0.5')))]" }, + "IllumioSaaS_FunctionAppConnector": "IllumioSaaS_FunctionAppConnector", + "_IllumioSaaS_FunctionAppConnector": "[variables('IllumioSaaS_FunctionAppConnector')]", + "TemplateEmptyArray": "[json('[]')]", + "playbookVersion1": "1.0", + "playbookContentId1": "IllumioSaaS_FunctionAppConnector", + "_playbookContentId1": "[variables('playbookContentId1')]", + "playbookTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-fa-',uniquestring(variables('_playbookContentId1'))))]", + "_playbookcontentProductId1": "[concat(take(variables('_solutionId'),50),'-','fa','-', uniqueString(concat(variables('_solutionId'),'-','AzureFunction','-',variables('_playbookContentId1'),'-', variables('playbookVersion1'))))]", + "Illumio-Get-Ven-Details": "Illumio-Get-Ven-Details", + "_Illumio-Get-Ven-Details": "[variables('Illumio-Get-Ven-Details')]", + "playbookVersion2": "1.0", + "playbookContentId2": "Illumio-Get-Ven-Details", + "_playbookContentId2": "[variables('playbookContentId2')]", + "playbookId2": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId2'))]", + "playbookTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId2'))))]", + "_playbookcontentProductId2": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId2'),'-', variables('playbookVersion2'))))]", + "Illumio-Port-Blocking-Switch": "Illumio-Port-Blocking-Switch", + "_Illumio-Port-Blocking-Switch": "[variables('Illumio-Port-Blocking-Switch')]", + "playbookVersion3": "1.0", + "playbookContentId3": "Illumio-Port-Blocking-Switch", + "_playbookContentId3": "[variables('playbookContentId3')]", + "playbookId3": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId3'))]", + "playbookTemplateSpecName3": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId3'))))]", + "_playbookcontentProductId3": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId3'),'-', variables('playbookVersion3'))))]", + "Illumio-Quarantine-Workload": "Illumio-Quarantine-Workload", + "_Illumio-Quarantine-Workload": "[variables('Illumio-Quarantine-Workload')]", + "playbookVersion4": "1.0", + "playbookContentId4": "Illumio-Quarantine-Workload", + "_playbookContentId4": "[variables('playbookContentId4')]", + "playbookId4": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId4'))]", + "playbookTemplateSpecName4": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId4'))))]", + "_playbookcontentProductId4": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId4'),'-', variables('playbookVersion4'))))]", "_solutioncontentProductId": "[concat(take(variables('_solutionId'),50),'-','sl','-', uniqueString(concat(variables('_solutionId'),'-','Solution','-',variables('_solutionId'),'-', variables('_solutionVersion'))))]" }, "resources": [ @@ -140,7 +172,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "IllumioSaaS data connector with template version 3.2.2", + "description": "IllumioSaaS data connector with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('dataConnectorVersion1')]", @@ -486,7 +518,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "IllumioAuditableEvents Workbook with template version 3.2.2", + "description": "IllumioAuditableEvents Workbook with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('workbookVersion1')]", @@ -504,7 +536,7 @@ }, "properties": { "displayName": "[parameters('workbook1-name')]", - "serializedData": "{\"version\":\"Notebook/1.0\",\"items\":[{\"type\":9,\"content\":{\"version\":\"KqlParameterItem/1.0\",\"parameters\":[{\"id\":\"9875bc24-f51c-4151-96f0-2e4af7039364\",\"version\":\"KqlParameterItem/1.0\",\"name\":\"Time\",\"type\":4,\"typeSettings\":{\"selectableValues\":[{\"durationMs\":1800000},{\"durationMs\":3600000},{\"durationMs\":14400000},{\"durationMs\":86400000},{\"durationMs\":604800000}],\"allowCustom\":true},\"timeContext\":{\"durationMs\":86400000},\"value\":{\"durationMs\":86400000}}],\"style\":\"above\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"parameters - 5\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| summarize count()\",\"size\":4,\"title\":\"Audit Events\",\"noDataMessage\":\"0\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"card\",\"textSettings\":{\"style\":\"bignumber\"}},\"customWidth\":\"30\",\"name\":\"Audit Events\",\"styleSettings\":{\"maxWidth\":\"30\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"table('Illumio_Auditable_Events_CL')\\n| where event_type has 'tampering'\\n| summarize count()\",\"size\":4,\"title\":\"Tampering Events\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"card\",\"tileSettings\":{\"showBorder\":false},\"textSettings\":{\"style\":\"bignumber\"}},\"customWidth\":\"30\",\"name\":\"Tampering Events\",\"styleSettings\":{\"maxWidth\":\"30\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"table('Illumio_Auditable_Events_CL')\\n| where event_type has 'port_scan'\\n| summarize count()\",\"size\":4,\"title\":\"Port Scan Events\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"card\",\"textSettings\":{\"style\":\"bignumber\"}},\"customWidth\":\"30\",\"name\":\"Port Scan Events\",\"styleSettings\":{\"maxWidth\":\"30\"}}]},\"name\":\"group - 5\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| summarize distinct_count = dcount(href) by event_type\\n| order by distinct_count \\n| top 10 by distinct_count\",\"size\":0,\"title\":\"Top Auditable events\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"categoricalbar\"},\"name\":\"query - 0\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"title\":\"Change Monitoring\",\"items\":[{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| summarize arg_max(TimeGenerated, *) by href\\n| where event_type == 'sec_policy.create' \\n| mv-expand resource_change = resource_changes\\n| project TimeGenerated,\\n workloads_affected_after_change = resource_change.changes.workloads_affected.after,\\n policy_version = resource_change.resource.sec_policy.version,\\n commit_message = resource_change.resource.sec_policy.commit_message,\\n modified_objects = resource_change.resource.sec_policy.modified_objects,\\n change_type = resource_change.change_type\\n\",\"size\":0,\"title\":\"Workloads affected by policy changes\",\"noDataMessage\":\"No workloads were affected by policy changes\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"gridSettings\":{\"sortBy\":[{\"itemKey\":\"TimeGenerated\",\"sortOrder\":1}]},\"sortBy\":[{\"itemKey\":\"TimeGenerated\",\"sortOrder\":1}]},\"name\":\"Workloads affected by policy changes\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| where resource_changes != '[]' and isnotempty(resource_changes) // ensure resource changes are not empty\\n| summarize arg_max(TimeGenerated, *) by href\\n| mv-expand parse_json(resource_changes)\\n| project resource_type = tostring(bag_keys(resource_changes.resource)[0])\\n| summarize Count=count() by resource_type\",\"size\":0,\"title\":\"Changes by Resource Type\",\"noDataMessage\":\"No changes by resource type\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"gridSettings\":{\"sortBy\":[{\"itemKey\":\"Count\",\"sortOrder\":2}]},\"sortBy\":[{\"itemKey\":\"Count\",\"sortOrder\":2}]},\"customWidth\":\"35\",\"name\":\"Changes by Resource Type\",\"styleSettings\":{\"maxWidth\":\"35\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| where resource_changes != '[]' and isnotempty(resource_changes) and not(event_type matches regex '^user.*') and (event_type has '.create' or event_type has '.update' or event_type has '.delete') and (created_by !has \\\"agent\\\" and created_by !has \\\"ven\\\" and created_by !has \\\"container\\\")\\n| extend User = tostring(parse_json(created_by)['user']['username'])\\n| summarize Count = count() by User\",\"size\":0,\"title\":\"Changes by User\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"customWidth\":\"35\",\"name\":\"Changes by User\",\"styleSettings\":{\"maxWidth\":\"35\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| where created_by has \\\"agent\\\" or created_by has \\\"ven\\\"\\n| project user = tostring(parse_json(created_by)['agent']['hostname'])\\n| summarize count() by user\",\"size\":0,\"title\":\"Events generated by agents\",\"noDataMessage\":\"Agents have not generated any events\",\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"customWidth\":\"20\",\"name\":\"Events generated by agents\",\"styleSettings\":{\"maxWidth\":\"20\"}}]},\"name\":\"ChangeMonitoring\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| summarize arg_max(TimeGenerated, *) by href // try to filter what event_type to prioritize in bar chart\\n| make-series events = count() default = 0 on TimeGenerated from {Time:start} to {Time:end} step 1h by event_type //from ago(1d) to now() step 1h by event_type \",\"size\":0,\"title\":\"PCE events breakdown - every hour\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"unstackedbar\",\"tileSettings\":{\"showBorder\":false},\"graphSettings\":{\"type\":0},\"mapSettings\":{\"locInfo\":\"LatLong\"}},\"name\":\"PCE events breakdown - every hour\"},{\"type\":1,\"content\":{\"json\":\"### Authentication events \\nChoose from below drop down to filter authentication events.\"},\"name\":\"text - 7\"},{\"type\":9,\"content\":{\"version\":\"KqlParameterItem/1.0\",\"parameters\":[{\"id\":\"1ee7c425-b1b5-4a71-8dc3-9b447fa1f316\",\"version\":\"KqlParameterItem/1.0\",\"name\":\"EventType\",\"label\":\"Include Event Type\",\"type\":2,\"description\":\"Types of events to be included \",\"isRequired\":true,\"isGlobal\":true,\"multiSelect\":true,\"quote\":\"'\",\"delimiter\":\",\",\"typeSettings\":{\"additionalResourceOptions\":[\"value::all\"],\"selectAllValue\":\"*\",\"showDefault\":false},\"jsonData\":\"[\\n { \\\"value\\\":\\\"user.logout\\\", \\\"label\\\":\\\"User logout\\\" },\\n { \\\"value\\\":\\\"user.sign_in\\\", \\\"label\\\":\\\"User signin\\\" },\\n { \\\"value\\\":\\\"user.sign_out\\\", \\\"label\\\":\\\"User signout\\\" },\\n { \\\"value\\\":\\\"user.login\\\", \\\"label\\\":\\\"User login\\\"},\\n { \\\"value\\\":\\\"user.pce_session_terminated\\\", \\\"label\\\":\\\"User session terminated\\\"},\\n { \\\"value\\\":\\\"request.authentication_failed\\\", \\\"label\\\":\\\"Authentication failed\\\"},\\n { \\\"value\\\":\\\"user.authenticate\\\", \\\"label\\\":\\\"User Authentication\\\"},\\n { \\\"value\\\":\\\"user.create_session\\\", \\\"label\\\":\\\"User create session\\\"}\\n]\",\"timeContext\":{\"durationMs\":86400000},\"value\":[\"value::all\"]},{\"id\":\"4f1ca215-f902-4fac-9bf0-834e4988a107\",\"version\":\"KqlParameterItem/1.0\",\"name\":\"ExcludeEventType\",\"label\":\"Exclude Event Type\",\"type\":2,\"description\":\"Types of events to be excluded\",\"isRequired\":true,\"isGlobal\":true,\"multiSelect\":true,\"quote\":\"'\",\"delimiter\":\",\",\"typeSettings\":{\"showDefault\":false},\"jsonData\":\"[\\n { \\\"value\\\":\\\"user.logout\\\", \\\"label\\\":\\\"User logout\\\" },\\n { \\\"value\\\":\\\"user.sign_in\\\", \\\"label\\\":\\\"User signin\\\" },\\n { \\\"value\\\":\\\"user.sign_out\\\", \\\"label\\\":\\\"User signout\\\" },\\n { \\\"value\\\":\\\"user.login\\\", \\\"label\\\":\\\"User login\\\"},\\n { \\\"value\\\":\\\"user.pce_session_terminated\\\", \\\"label\\\":\\\"User session terminated\\\"},\\n { \\\"value\\\":\\\"request.authentication_failed\\\", \\\"label\\\":\\\"Authentication failed\\\"},\\n { \\\"value\\\":\\\"user.authenticate\\\", \\\"label\\\":\\\"User Authentication\\\"},\\n { \\\"value\\\":\\\"user.create_session\\\", \\\"label\\\":\\\"User create session\\\"},\\n { \\\"value\\\":\\\"None\\\", \\\"label\\\":\\\"None\\\", \\\"selected\\\": true}\\n]\",\"timeContext\":{\"durationMs\":86400000},\"value\":[\"None\"]},{\"version\":\"KqlParameterItem/1.0\",\"name\":\"Status\",\"type\":2,\"description\":\"Status values\",\"isRequired\":true,\"isGlobal\":true,\"multiSelect\":true,\"quote\":\"'\",\"delimiter\":\",\",\"typeSettings\":{\"additionalResourceOptions\":[\"value::all\"],\"selectAllValue\":\"*\",\"showDefault\":false},\"jsonData\":\"[\\n { \\\"value\\\":\\\"failure\\\", \\\"label\\\":\\\"Failure\\\" },\\n { \\\"value\\\":\\\"success\\\", \\\"label\\\":\\\"Success\\\", \\\"selected\\\": true },\\n { \\\"value\\\":\\\"None\\\", \\\"label\\\":\\\"None\\\"}\\n]\",\"timeContext\":{\"durationMs\":86400000},\"id\":\"c8996627-2e77-4386-9c23-1eb5d50df311\",\"value\":[\"value::all\"]},{\"version\":\"KqlParameterItem/1.0\",\"name\":\"Severity\",\"type\":2,\"description\":\"Status values\",\"isRequired\":true,\"isGlobal\":true,\"multiSelect\":true,\"quote\":\"'\",\"delimiter\":\",\",\"typeSettings\":{\"additionalResourceOptions\":[\"value::all\"],\"selectAllValue\":\"*\",\"showDefault\":false},\"jsonData\":\"[\\n { \\\"value\\\":\\\"err\\\", \\\"label\\\":\\\"Error\\\" },\\n { \\\"value\\\":\\\"info\\\", \\\"label\\\":\\\"Info\\\", \\\"selected\\\": true } \\n]\",\"timeContext\":{\"durationMs\":86400000},\"id\":\"79d0945d-d0f8-4293-8dc2-3c57391cde95\",\"value\":[\"value::all\"]}],\"style\":\"pills\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"parameters - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"let included_event_types = iif(\\\"*\\\" in ({EventType}), dynamic(['user.login','user.logout', 'user.sign_in', 'user.sign_out', 'user.authenticate','user.create_session','user.pce_session_terminated']), dynamic([{EventType}]) );\\nIllumio_Auditable_Events_CL\\n| where event_type in (included_event_types)\\n| where \\\"*\\\" in ({Status}) or status in ({Status}) and \\\"*\\\" in ({Severity}) or severity in ({Severity})\\n| where not(event_type in ({ExcludeEventType}))\\n| project TimeGenerated, pce_fqdn, event_type, status, notification_type = parse_json(notifications)[0].notification_type,severity, created_by_username = iif(created_by == '{\\\"system\\\":{}}', parse_json(notifications)[0].info.user.username, parse_json(created_by).user.username)\",\"size\":0,\"title\":\"PCE Authentication Events\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"gridSettings\":{\"rowLimit\":100,\"filter\":true,\"sortBy\":[{\"itemKey\":\"severity\",\"sortOrder\":1}]},\"sortBy\":[{\"itemKey\":\"severity\",\"sortOrder\":1}]},\"name\":\"PCE Authentication Events\"}],\"fromTemplateId\":\"sentinel-AuditableEventsWorkbook\",\"$schema\":\"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"}\n", + "serializedData": "{\"version\":\"Notebook/1.0\",\"items\":[{\"type\":9,\"content\":{\"version\":\"KqlParameterItem/1.0\",\"parameters\":[{\"id\":\"9875bc24-f51c-4151-96f0-2e4af7039364\",\"version\":\"KqlParameterItem/1.0\",\"name\":\"Time\",\"type\":4,\"typeSettings\":{\"selectableValues\":[{\"durationMs\":1800000},{\"durationMs\":3600000},{\"durationMs\":14400000},{\"durationMs\":86400000},{\"durationMs\":604800000}],\"allowCustom\":true},\"timeContext\":{\"durationMs\":86400000},\"value\":{\"durationMs\":86400000}}],\"style\":\"above\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"parameters - 5\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| summarize count()\",\"size\":4,\"title\":\"Audit Events\",\"noDataMessage\":\"0\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"card\",\"textSettings\":{\"style\":\"bignumber\"}},\"customWidth\":\"30\",\"name\":\"Audit Events\",\"styleSettings\":{\"maxWidth\":\"30\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"table('Illumio_Auditable_Events_CL')\\n| where event_type has 'tampering'\\n| summarize count()\",\"size\":4,\"title\":\"Tampering Events\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"card\",\"tileSettings\":{\"showBorder\":false},\"textSettings\":{\"style\":\"bignumber\"}},\"customWidth\":\"30\",\"name\":\"Tampering Events\",\"styleSettings\":{\"maxWidth\":\"30\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"table('Illumio_Auditable_Events_CL')\\n| where event_type has 'port_scan'\\n| summarize count()\",\"size\":4,\"title\":\"Port Scan Events\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"card\",\"textSettings\":{\"style\":\"bignumber\"}},\"customWidth\":\"30\",\"name\":\"Port Scan Events\",\"styleSettings\":{\"maxWidth\":\"30\"}}]},\"name\":\"group - 5\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| summarize distinct_count = dcount(href) by event_type\\n| order by distinct_count \\n| top 10 by distinct_count\",\"size\":0,\"title\":\"Top Auditable events\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"categoricalbar\"},\"name\":\"query - 0\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"title\":\"Change Monitoring\",\"items\":[{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| summarize arg_max(TimeGenerated, *) by href\\n| where event_type == 'sec_policy.create' \\n| mv-expand resource_change = resource_changes\\n| project TimeGenerated,\\n workloads_affected_after_change = resource_change.changes.workloads_affected.after,\\n policy_version = resource_change.resource.sec_policy.version,\\n commit_message = resource_change.resource.sec_policy.commit_message,\\n modified_objects = resource_change.resource.sec_policy.modified_objects,\\n change_type = resource_change.change_type\\n\",\"size\":0,\"title\":\"Workloads affected by policy changes\",\"noDataMessage\":\"No workloads were affected by policy changes\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"gridSettings\":{\"sortBy\":[{\"itemKey\":\"TimeGenerated\",\"sortOrder\":1}]},\"sortBy\":[{\"itemKey\":\"TimeGenerated\",\"sortOrder\":1}]},\"name\":\"Workloads affected by policy changes\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| where resource_changes != '[]' and isnotempty(resource_changes) // ensure resource changes are not empty\\n| summarize arg_max(TimeGenerated, *) by href\\n| mv-expand parse_json(resource_changes)\\n| project resource_type = tostring(bag_keys(resource_changes.resource)[0])\\n| summarize Count=count() by resource_type\",\"size\":0,\"title\":\"Changes by Resource Type\",\"noDataMessage\":\"No changes by resource type\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"gridSettings\":{\"sortBy\":[{\"itemKey\":\"Count\",\"sortOrder\":2}]},\"sortBy\":[{\"itemKey\":\"Count\",\"sortOrder\":2}]},\"customWidth\":\"35\",\"name\":\"Changes by Resource Type\",\"styleSettings\":{\"maxWidth\":\"35\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| where resource_changes != '[]' and isnotempty(resource_changes) and not(event_type matches regex '^user.*') and (event_type has '.create' or event_type has '.update' or event_type has '.delete') and (created_by !has \\\"agent\\\" and created_by !has \\\"ven\\\" and created_by !has \\\"container\\\")\\n| extend User = tostring(parse_json(created_by)['user']['username'])\\n| summarize Count = count() by User\",\"size\":0,\"title\":\"Changes by User\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"customWidth\":\"35\",\"name\":\"Changes by User\",\"styleSettings\":{\"maxWidth\":\"35\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| where created_by has \\\"agent\\\" or created_by has \\\"ven\\\"\\n| project user = tostring(parse_json(created_by)['agent']['hostname'])\\n| summarize count() by user\",\"size\":0,\"title\":\"Events generated by agents\",\"noDataMessage\":\"Agents have not generated any events\",\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"customWidth\":\"20\",\"name\":\"Events generated by agents\",\"styleSettings\":{\"maxWidth\":\"20\"}}]},\"name\":\"ChangeMonitoring\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"Illumio_Auditable_Events_CL\\n| summarize arg_max(TimeGenerated, *) by href // try to filter what event_type to prioritize in bar chart\\n| make-series events = count() default = 0 on TimeGenerated from {Time:start} to {Time:end} step 1h by event_type //from ago(1d) to now() step 1h by event_type \",\"size\":0,\"title\":\"PCE events breakdown - every hour\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"unstackedbar\",\"tileSettings\":{\"showBorder\":false},\"graphSettings\":{\"type\":0},\"mapSettings\":{\"locInfo\":\"LatLong\"}},\"name\":\"PCE events breakdown - every hour\"},{\"type\":1,\"content\":{\"json\":\"### Authentication events \\nChoose from below drop down to filter authentication events.\"},\"name\":\"text - 7\"},{\"type\":9,\"content\":{\"version\":\"KqlParameterItem/1.0\",\"parameters\":[{\"id\":\"1ee7c425-b1b5-4a71-8dc3-9b447fa1f316\",\"version\":\"KqlParameterItem/1.0\",\"name\":\"EventType\",\"label\":\"Include Event Type\",\"type\":2,\"description\":\"Types of events to be included \",\"isRequired\":true,\"isGlobal\":true,\"multiSelect\":true,\"quote\":\"'\",\"delimiter\":\",\",\"typeSettings\":{\"additionalResourceOptions\":[\"value::all\"],\"selectAllValue\":\"*\",\"showDefault\":false},\"jsonData\":\"[\\n { \\\"value\\\":\\\"user.logout\\\", \\\"label\\\":\\\"User logout\\\" },\\n { \\\"value\\\":\\\"user.sign_in\\\", \\\"label\\\":\\\"User signin\\\" },\\n { \\\"value\\\":\\\"user.sign_out\\\", \\\"label\\\":\\\"User signout\\\" },\\n { \\\"value\\\":\\\"user.login\\\", \\\"label\\\":\\\"User login\\\"},\\n { \\\"value\\\":\\\"user.pce_session_terminated\\\", \\\"label\\\":\\\"User session terminated\\\"},\\n { \\\"value\\\":\\\"request.authentication_failed\\\", \\\"label\\\":\\\"Authentication failed\\\"},\\n { \\\"value\\\":\\\"user.authenticate\\\", \\\"label\\\":\\\"User Authentication\\\"},\\n { \\\"value\\\":\\\"user.create_session\\\", \\\"label\\\":\\\"User create session\\\"}\\n]\",\"timeContext\":{\"durationMs\":86400000},\"value\":[\"value::all\"]},{\"id\":\"4f1ca215-f902-4fac-9bf0-834e4988a107\",\"version\":\"KqlParameterItem/1.0\",\"name\":\"ExcludeEventType\",\"label\":\"Exclude Event Type\",\"type\":2,\"description\":\"Types of events to be excluded\",\"isRequired\":true,\"isGlobal\":true,\"multiSelect\":true,\"quote\":\"'\",\"delimiter\":\",\",\"typeSettings\":{\"showDefault\":false},\"jsonData\":\"[\\n { \\\"value\\\":\\\"user.logout\\\", \\\"label\\\":\\\"User logout\\\" },\\n { \\\"value\\\":\\\"user.sign_in\\\", \\\"label\\\":\\\"User signin\\\" },\\n { \\\"value\\\":\\\"user.sign_out\\\", \\\"label\\\":\\\"User signout\\\" },\\n { \\\"value\\\":\\\"user.login\\\", \\\"label\\\":\\\"User login\\\"},\\n { \\\"value\\\":\\\"user.pce_session_terminated\\\", \\\"label\\\":\\\"User session terminated\\\"},\\n { \\\"value\\\":\\\"request.authentication_failed\\\", \\\"label\\\":\\\"Authentication failed\\\"},\\n { \\\"value\\\":\\\"user.authenticate\\\", \\\"label\\\":\\\"User Authentication\\\"},\\n { \\\"value\\\":\\\"user.create_session\\\", \\\"label\\\":\\\"User create session\\\"},\\n { \\\"value\\\":\\\"None\\\", \\\"label\\\":\\\"None\\\", \\\"selected\\\": true}\\n]\",\"timeContext\":{\"durationMs\":86400000},\"value\":[\"None\"]},{\"version\":\"KqlParameterItem/1.0\",\"name\":\"Status\",\"type\":2,\"description\":\"Status values\",\"isRequired\":true,\"isGlobal\":true,\"multiSelect\":true,\"quote\":\"'\",\"delimiter\":\",\",\"typeSettings\":{\"additionalResourceOptions\":[\"value::all\"],\"selectAllValue\":\"*\",\"showDefault\":false},\"jsonData\":\"[\\n { \\\"value\\\":\\\"failure\\\", \\\"label\\\":\\\"Failure\\\" },\\n { \\\"value\\\":\\\"success\\\", \\\"label\\\":\\\"Success\\\", \\\"selected\\\": true },\\n { \\\"value\\\":\\\"None\\\", \\\"label\\\":\\\"None\\\"}\\n]\",\"timeContext\":{\"durationMs\":86400000},\"id\":\"c8996627-2e77-4386-9c23-1eb5d50df311\",\"value\":[\"value::all\"]},{\"version\":\"KqlParameterItem/1.0\",\"name\":\"Severity\",\"type\":2,\"description\":\"Status values\",\"isRequired\":true,\"isGlobal\":true,\"multiSelect\":true,\"quote\":\"'\",\"delimiter\":\",\",\"typeSettings\":{\"additionalResourceOptions\":[\"value::all\"],\"selectAllValue\":\"*\",\"showDefault\":false},\"jsonData\":\"[\\n { \\\"value\\\":\\\"err\\\", \\\"label\\\":\\\"Error\\\" },\\n { \\\"value\\\":\\\"info\\\", \\\"label\\\":\\\"Info\\\", \\\"selected\\\": true } \\n]\",\"timeContext\":{\"durationMs\":86400000},\"id\":\"79d0945d-d0f8-4293-8dc2-3c57391cde95\",\"value\":[\"value::all\"]}],\"style\":\"pills\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"parameters - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"let included_event_types = iif(\\\"*\\\" in ({EventType}), dynamic(['user.login','user.logout', 'user.sign_in', 'user.sign_out', 'user.authenticate','user.create_session','user.pce_session_terminated']), dynamic([{EventType}]) );\\nIllumio_Auditable_Events_CL\\n| where event_type in (included_event_types)\\n| where \\\"*\\\" in ({Status}) or status in ({Status}) and \\\"*\\\" in ({Severity}) or severity in ({Severity})\\n| where not(event_type in ({ExcludeEventType}))\\n| project TimeGenerated, pce_fqdn, event_type, status, notification_type = parse_json(notifications)[0].notification_type,severity, created_by_username = iif(created_by == '', parse_json(notifications)[0].info.user.username, parse_json(created_by).user.username)\",\"size\":0,\"title\":\"PCE Authentication Events\",\"timeContextFromParameter\":\"Time\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"gridSettings\":{\"rowLimit\":100,\"filter\":true,\"sortBy\":[{\"itemKey\":\"severity\",\"sortOrder\":1}]},\"sortBy\":[{\"itemKey\":\"severity\",\"sortOrder\":1}]},\"name\":\"PCE Authentication Events\"}],\"fromTemplateId\":\"sentinel-AuditableEventsWorkbook\",\"$schema\":\"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"}\n", "version": "1.0", "sourceId": "[variables('workspaceResourceId')]", "category": "sentinel" @@ -573,7 +605,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "IllumioFlowData Workbook with template version 3.2.2", + "description": "IllumioFlowData Workbook with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('workbookVersion2')]", @@ -660,7 +692,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "IllumioWorkloadsStats Workbook with template version 3.2.2", + "description": "IllumioWorkloadsStats Workbook with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('workbookVersion3')]", @@ -747,7 +779,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Illumio_VEN_Firewall_Tampering_Detection_Query_AnalyticalRules Analytics Rule with template version 3.2.2", + "description": "Illumio_VEN_Firewall_Tampering_Detection_Query_AnalyticalRules Analytics Rule with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject1').analyticRuleVersion1]", @@ -789,22 +821,22 @@ ], "entityMappings": [ { - "entityType": "Host", "fieldMappings": [ { - "columnName": "hostname", - "identifier": "HostName" + "identifier": "HostName", + "columnName": "hostname" } - ] + ], + "entityType": "Host" }, { - "entityType": "IP", "fieldMappings": [ { - "columnName": "ipaddress", - "identifier": "Address" + "identifier": "Address", + "columnName": "ipaddress" } - ] + ], + "entityType": "IP" } ], "eventGroupingSettings": { @@ -866,7 +898,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Illumio_VEN_Enforcement_Change_Detection_Query_AnalyticalRules Analytics Rule with template version 3.2.2", + "description": "Illumio_VEN_Enforcement_Change_Detection_Query_AnalyticalRules Analytics Rule with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject2').analyticRuleVersion2]", @@ -908,31 +940,31 @@ ], "entityMappings": [ { - "entityType": "Host", "fieldMappings": [ { - "columnName": "workload_name", - "identifier": "HostName" + "identifier": "HostName", + "columnName": "workload_name" } - ] + ], + "entityType": "Host" }, { - "entityType": "Account", "fieldMappings": [ { - "columnName": "created_by", - "identifier": "Name" + "identifier": "Name", + "columnName": "created_by" } - ] + ], + "entityType": "Account" }, { - "entityType": "IP", "fieldMappings": [ { - "columnName": "ipaddress", - "identifier": "Address" + "identifier": "Address", + "columnName": "ipaddress" } - ] + ], + "entityType": "IP" } ], "eventGroupingSettings": { @@ -994,7 +1026,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Illumio_VEN_Offline_Detection_Query_AnalyticalRules Analytics Rule with template version 3.2.2", + "description": "Illumio_VEN_Offline_Detection_Query_AnalyticalRules Analytics Rule with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject3').analyticRuleVersion3]", @@ -1036,13 +1068,13 @@ ], "entityMappings": [ { - "entityType": "Host", "fieldMappings": [ { - "columnName": "hostname", - "identifier": "HostName" + "identifier": "HostName", + "columnName": "hostname" } - ] + ], + "entityType": "Host" } ], "eventGroupingSettings": { @@ -1104,7 +1136,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Illumio_VEN_Clone_Detection_Query_AnalyticalRules Analytics Rule with template version 3.2.2", + "description": "Illumio_VEN_Clone_Detection_Query_AnalyticalRules Analytics Rule with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject4').analyticRuleVersion4]", @@ -1146,13 +1178,13 @@ ], "entityMappings": [ { - "entityType": "Host", "fieldMappings": [ { - "columnName": "hostname", - "identifier": "HostName" + "identifier": "HostName", + "columnName": "hostname" } - ] + ], + "entityType": "Host" } ], "eventGroupingSettings": { @@ -1214,7 +1246,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Illumio_VEN_Deactivated_Query_AnalyticalRules Analytics Rule with template version 3.2.2", + "description": "Illumio_VEN_Deactivated_Query_AnalyticalRules Analytics Rule with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject5').analyticRuleVersion5]", @@ -1256,22 +1288,22 @@ ], "entityMappings": [ { - "entityType": "Host", "fieldMappings": [ { - "columnName": "hostname", - "identifier": "HostName" + "identifier": "HostName", + "columnName": "hostname" } - ] + ], + "entityType": "Host" }, { - "entityType": "IP", "fieldMappings": [ { - "columnName": "ipaddress", - "identifier": "Address" + "identifier": "Address", + "columnName": "ipaddress" } - ] + ], + "entityType": "IP" } ], "eventGroupingSettings": { @@ -1333,7 +1365,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Illumio_VEN_Suspend_Query_AnalyticalRules Analytics Rule with template version 3.2.2", + "description": "Illumio_VEN_Suspend_Query_AnalyticalRules Analytics Rule with template version 3.2.3", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('analyticRuleObject6').analyticRuleVersion6]", @@ -1375,22 +1407,22 @@ ], "entityMappings": [ { - "entityType": "Host", "fieldMappings": [ { - "columnName": "hostname", - "identifier": "HostName" + "identifier": "HostName", + "columnName": "hostname" } - ] + ], + "entityType": "Host" }, { - "entityType": "IP", "fieldMappings": [ { - "columnName": "ipaddress", - "identifier": "Address" + "identifier": "Address", + "columnName": "ipaddress" } - ] + ], + "entityType": "IP" } ], "eventGroupingSettings": { @@ -1443,17 +1475,1113 @@ "version": "[variables('analyticRuleObject6').analyticRuleVersion6]" } }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('playbookTemplateSpecName1')]", + "location": "[parameters('workspace-location')]", + "dependsOn": [ + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" + ], + "properties": { + "description": "IllumioSaaS_FunctionAppConnector Playbook with template version 3.2.3", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('playbookVersion1')]", + "parameters": { + "FunctionAppName": { + "defaultValue": "illumiopbfuncapp", + "type": "String", + "metadata": { + "description": "Function app Name" + } + }, + "StorageAccountName": { + "type": "String", + "metadata": { + "description": "Storage name should be globally unique name" + } + }, + "PCE_FQDN": { + "type": "String", + "metadata": { + "description": "FQDN of PCE" + } + }, + "PORT": { + "type": "String", + "metadata": { + "description": "Port that PCE connects to, like 443" + } + }, + "ORG_ID": { + "type": "String", + "metadata": { + "description": "Customer's org id" + } + }, + "API_KEY": { + "type": "String", + "metadata": { + "description": "API key" + } + }, + "API_SECRET": { + "type": "String", + "metadata": { + "description": "API secret" + } + } + }, + "variables": { + "hostingPlanName": "[[parameters('FunctionAppName')]", + "storageAccountName": "[[parameters('StorageAccountName')]", + "functionAppName": "[[parameters('FunctionAppName')]", + "applicationInsightsName": "[[parameters('FunctionAppName')]", + "pceFQDN": "[[parameters('PCE_FQDN')]", + "port": "[[parameters('PORT')]", + "orgId": "[[parameters('ORG_ID')]", + "apiKey": "[[parameters('API_KEY')]", + "apiSecret": "[[parameters('API_SECRET')]", + "workspace-location-inline": "[concat('[resourceGroup().locatio', 'n]')]", + "playbookContentId1": "IllumioSaaS_FunctionAppConnector", + "playbookId1": "[[resourceId('Microsoft.Logic/workflows', variables('playbookContentId1'))]", + "workspace-name": "[parameters('workspace')]", + "workspaceResourceId": "[[resourceId('microsoft.OperationalInsights/Workspaces', variables('workspace-name'))]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2022-03-01", + "name": "[[variables('hostingPlanName')]", + "location": "[[variables('workspace-location-inline')]", + "sku": { + "name": "Y1", + "tier": "Dynamic" + }, + "properties": { + "name": "[[variables('hostingPlanName')]", + "computeMode": "Dynamic" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2023-04-01", + "name": "[[variables('storageAccountName')]", + "location": "[[variables('workspace-location-inline')]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "minimumTlsVersion": "TLS1_2", + "supportsHttpsTrafficOnly": "true", + "allowBlobPublicAccess": "false", + "allowSharedKeyAccess": "true", + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow", + "ipRules": "[variables('TemplateEmptyArray')]" + } + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[[variables('applicationInsightsName')]", + "location": "[[variables('workspace-location-inline')]", + "tags": { + "[[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" + }, + "properties": { + "Application_Type": "web" + }, + "kind": "web" + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[[variables('functionAppName')]", + "location": "[[variables('workspace-location-inline')]", + "kind": "functionapp,linux", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "[[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]" + ], + "properties": { + "serverFarmId": "[[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-04-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~4" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~20" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02').InstrumentationKey]" + }, + { + "name": "WEBSITE_RUN_FROM_PACKAGE", + "value": "https://raw.githubusercontent.com/illumio-shield/Azure-Sentinel/illumio-sentinel-playbook-v2/Solutions/IllumioSaaS/Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/IllumioSaaS_FunctionAppForPlaybooks.zip" + }, + { + "name": "PCE_FQDN", + "value": "[[variables('pceFQDN')]" + }, + { + "name": "PORT", + "value": "[[variables('port')]" + }, + { + "name": "ORG_ID", + "value": "[[variables('orgId')]" + }, + { + "name": "API_KEY", + "value": "[[variables('apiKey')]" + }, + { + "name": "API_SECRET", + "value": "[[variables('apiSecret')]" + } + ] + }, + "cors": { + "allowedOrigins": [ + "https://functions.azure.com", + "https://functions-staging.azure.com", + "https://functions-next.azure.com" + ], + "supportCredentials": false + } + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", + "name": "[[concat(variables('workspace-name'),'/Microsoft.SecurityInsights/',concat('AzureFunction-', last(split(variables('playbookId1'),'/'))))]", + "properties": { + "parentId": "[[variables('playbookId1')]", + "contentId": "[variables('_playbookContentId1')]", + "kind": "AzureFunction", + "version": "[variables('playbookVersion1')]", + "source": { + "kind": "Solution", + "name": "IllumioSaaS", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "app-integrations@illumio.com" + }, + "support": { + "name": "Illumio", + "email": "app-integrations@illumio.com", + "tier": "Partner", + "link": "https://www.illumio.com/support/support" + } + } + } + ] + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId1')]", + "contentKind": "AzureFunction", + "displayName": "IllumioSaaS_FunctionAppConnector", + "contentProductId": "[variables('_playbookcontentProductId1')]", + "id": "[variables('_playbookcontentProductId1')]", + "version": "[variables('playbookVersion1')]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('playbookTemplateSpecName2')]", + "location": "[parameters('workspace-location')]", + "dependsOn": [ + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" + ], + "properties": { + "description": "Illumio-Ven-Details Playbook with template version 3.2.3", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('playbookVersion2')]", + "parameters": { + "PlaybookName": { + "defaultValue": "Illumio-Ven-Details", + "type": "String", + "metadata": { + "description": "PlayBook Name" + } + }, + "DeployersUserName": { + "defaultValue": "@", + "type": "string" + }, + "FunctionAppName": { + "defaultValue": "illumiopbfuncapp", + "type": "String", + "metadata": { + "description": "Function app Name" + } + } + }, + "variables": { + "o365ConnectionName": "[[concat('o365-', parameters('PlaybookName'))]", + "sentinelConnectionName": "[[concat('azuresentinel-', parameters('PlaybookName'))]", + "connection-1": "[[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', variables('workspace-location-inline'), '/managedApis/office365')]", + "_connection-1": "[[variables('connection-1')]", + "connection-2": "[[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', variables('workspace-location-inline'), '/managedApis/azuresentinel')]", + "_connection-2": "[[variables('connection-2')]", + "workspace-location-inline": "[concat('[resourceGroup().locatio', 'n]')]", + "workspace-name": "[parameters('workspace')]", + "workspaceResourceId": "[[resourceId('microsoft.OperationalInsights/Workspaces', variables('workspace-name'))]" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2016-06-01", + "name": "[[variables('o365ConnectionName')]", + "location": "[[variables('workspace-location-inline')]", + "properties": { + "displayName": "[[parameters('DeployersUserName')]", + "api": { + "id": "[[variables('_connection-1')]" + } + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2016-06-01", + "name": "[[variables('sentinelConnectionName')]", + "location": "[[variables('workspace-location-inline')]", + "properties": { + "displayName": "[[parameters('DeployersUserName')]", + "api": { + "id": "[[variables('_connection-2')]" + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2017-07-01", + "location": "[[variables('workspace-location-inline')]", + "name": "[[parameters('PlaybookName')]", + "dependsOn": [ + "[[resourceId('Microsoft.Web/connections', variables('o365ConnectionName'))]" + ], + "properties": { + "state": "Enabled", + "definition": { + "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "type": "Object" + } + }, + "triggers": { + "Microsoft_Sentinel_alert": { + "type": "ApiConnectionWebhook", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "body": { + "callback_url": "@listCallbackUrl()" + }, + "path": "/subscribe" + } + } + }, + "actions": { + "IllumioVenDetails-fetchVenDetails": { + "type": "Function", + "inputs": { + "body": "@triggerBody()", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/fetchVenDetails')]" + } + } + }, + "Initialize_variable": { + "runAfter": { + "IllumioVenDetails-fetchVenDetails": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "varStyle", + "type": "object", + "value": { + "cellStyle": "style=\"font-family: Calibri; padding: 5px; border: 1px solid black;\"", + "headerStyle": "style=\"font-family: Helvetica; padding: 5px; border: 1px solid black;\"", + "numcellStyle": "style=\"font-family: Calibri; padding: 5px; border: 1px solid black;text-align: center;\"", + "rowStyleHighValues": "style=\"font-size:110%;background-color:#b32400; padding: 5px; border: 1px solid black;text-align: center;\"", + "rowStyleInfoValues": "style=\"background-color:#a6a6a6; padding: 5px; border: 1px solid black;text-align: center;\"", + "rowStyleLowValues": "style=\"background-color:#ffcc00; padding: 5px; border: 1px solid black;text-align: center;\"", + "rowStyleMedValues": "style=\"background-color:#ff6600; padding: 5px; border: 1px solid black;text-align: center;\"", + "tableStyle": "style=\"border-collapse: collapse;\"" + } + } + ] + } + }, + "Initialize_variable_1": { + "runAfter": { + "Initialize_variable": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "varHTMLTable", + "type": "string", + "value": "\n \n \n \n \n \n " + } + ] + } + }, + "Initialize_variable_2": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "varSeverityColour", + "type": "string", + "value": "@triggerBody()?['Severity']" + } + ] + }, + "runAfter": { + "Initialize_variable_3": [ + "Succeeded" + ] + } + }, + "Parse_JSON": { + "runAfter": { + "Initialize_variable_2": [ + "Succeeded" + ] + }, + "type": "ParseJson", + "inputs": { + "content": "@body('IllumioVenDetails-fetchVenDetails')", + "schema": { + "type": "object", + "properties": { + "response": { + "type": "array", + "items": { + "type": "object", + "properties": { + "public_ip": { + "type": [ + "string", + "null" + ] + }, + "hostname": { + "type": [ + "string", + "null" + ] + }, + "labels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "href": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "href", + "key", + "value" + ] + } + } + }, + "required": [ + "public_ip", + "hostname", + "labels" + ] + } + } + } + } + } + }, + "For_each": { + "type": "Foreach", + "foreach": "@body('Parse_JSON')?['response']", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "EntityTable", + "value": "\n \n \n \n" + } + } + }, + "runAfter": { + "Parse_JSON": [ + "Succeeded" + ] + } + }, + "Append_to_string_variable_2": { + "type": "AppendToStringVariable", + "inputs": { + "name": "varHTMLTable", + "value": "
Created TimeTitleSeverityDescription
@{item()?['public_ip']}@{item()?['hostname']}@{item()?['labels']}
" + }, + "runAfter": { + "Append_to_string_variable_1": [ + "SUCCEEDED" + ] + } + }, + "Condition": { + "type": "If", + "expression": { + "and": [ + { + "greater": [ + "@length(body('Parse_JSON')?['response'])", + 0 + ] + } + ] + }, + "actions": { + "Send_an_email_(V2)": { + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "body": { + "To": "user@domain.com", + "Subject": "Microsoft Sentinel: @{triggerBody()?['AlertDisplayName']}", + "Body": "

In the following, is more information, about the new Azure Sentinel alert:


@{variables('varHTMLTable')}


And VEN details pertaining to entities are


@{variables('EntityTable')}

Illumio

", + "Importance": "Normal" + }, + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + } + }, + "Initialize_variable_3": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "EntityTable", + "type": "string", + "value": "\n \n \n \n \n " + } + ] + }, + "runAfter": { + "Initialize_variable_1": [ + "Succeeded" + ] + } + }, + "Append_to_string_variable_3": { + "type": "AppendToStringVariable", + "inputs": { + "name": "EntityTable", + "value": "
IP AddressHostnameLabels
" + }, + "runAfter": { + "Append_to_string_variable_2": [ + "SUCCEEDED" + ] + } + }, + "Append_to_string_variable_1": { + "type": "AppendToStringVariable", + "inputs": { + "name": "varHTMLTable", + "value": " \n @{triggerBody()?['TimeGenerated']}\n @{triggerBody()?['AlertDisplayName']}\n @{triggerBody()?['Severity']}\n @{triggerBody()?['Description']}\n " + }, + "runAfter": { + "For_each": [ + "Succeeded" + ] + } + } + } + }, + "parameters": { + "$connections": { + "value": { + "azuresentinel": { + "connectionId": "[[resourceId('Microsoft.Web/connections', variables('sentinelConnectionName'))]", + "connectionName": "[[variables('sentinelConnectionName')]", + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', variables('workspace-location-inline'), '/managedApis/azuresentinel')]" + }, + "office365": { + "connectionId": "[[resourceId('Microsoft.Web/connections', variables('o365ConnectionName'))]", + "connectionName": "[[variables('o365ConnectionName')]", + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', variables('workspace-location-inline'), '/managedApis/office365')]" + } + } + } + } + }, + "tags": { + "hidden-SentinelWorkspaceId": "[[variables('workspaceResourceId')]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Playbook-', last(split(variables('playbookId2'),'/'))))]", + "properties": { + "parentId": "[variables('playbookId2')]", + "contentId": "[variables('_playbookContentId2')]", + "kind": "Playbook", + "version": "[variables('playbookVersion2')]", + "source": { + "kind": "Solution", + "name": "IllumioSaaS", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "app-integrations@illumio.com" + }, + "support": { + "name": "Illumio", + "email": "app-integrations@illumio.com", + "tier": "Partner", + "link": "https://www.illumio.com/support/support" + }, + "dependencies": { + "criteria": [ + { + "kind": "AzureFunction", + "contentId": "[variables('_IllumioSaaS_FunctionAppConnector')]", + "version": "[variables('playbookVersion1')]" + } + ] + } + } + } + ], + "metadata": { + "title": "Illumio Get Ven Details Playbook", + "description": "This playbook leverages Illumio workloads API to enrich IP, Hostname and Labels, found in Microsoft Sentinel alerts. .", + "prerequisites": [ + "To use this playbook, ensure that you have valid API key and secret, org id and pce fqdn. Ensure that you deploy the template with the required context." + ], + "postDeployment": [ + "After deployment open the playbook in edit mode and configure/authorize all connections and press save. " + ], + "lastUpdateTime": "2024-11-21T00:00:00Z", + "entities": [ + "ip", + "host" + ], + "tags": [ + "Enrichment" + ], + "releaseNotes": [ + { + "version": "1.0", + "title": "Illumio Get Ven Details", + "notes": [ + "Initial version" + ] + } + ] + } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId2')]", + "contentKind": "Playbook", + "displayName": "Illumio-Ven-Details", + "contentProductId": "[variables('_playbookcontentProductId2')]", + "id": "[variables('_playbookcontentProductId2')]", + "version": "[variables('playbookVersion2')]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('playbookTemplateSpecName3')]", + "location": "[parameters('workspace-location')]", + "dependsOn": [ + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" + ], + "properties": { + "description": "Illumio-Port-Blocking-Switch Playbook with template version 3.2.3", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('playbookVersion3')]", + "parameters": { + "PlaybookName": { + "defaultValue": "Illumio-Port-Blocking-Switch", + "type": "String", + "metadata": { + "description": "PlayBook Name" + } + }, + "FunctionAppName": { + "defaultValue": "illumiopbfuncapp", + "type": "String", + "metadata": { + "description": "Function app Name" + } + } + }, + "variables": { + "hostingPlanName": "[[parameters('FunctionAppName')]", + "storageAccountName": "[[parameters('FunctionAppName')]", + "functionAppName": "[[parameters('FunctionAppName')]", + "applicationInsightsName": "[[parameters('FunctionAppName')]", + "workspace-location-inline": "[concat('[resourceGroup().locatio', 'n]')]", + "workspace-name": "[parameters('workspace')]", + "workspaceResourceId": "[[resourceId('microsoft.OperationalInsights/Workspaces', variables('workspace-name'))]" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2017-07-01", + "name": "[[parameters('PlaybookName')]", + "location": "[[variables('workspace-location-inline')]", + "properties": { + "state": "Enabled", + "definition": { + "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "type": "Object" + } + }, + "triggers": { + "When_a_HTTP_request_is_received": { + "type": "Request", + "kind": "Http", + "inputs": { + "method": "POST", + "schema": { + "type": "object", + "properties": { + "protocol": { + "type": "integer" + }, + "port": { + "type": "integer" + } + } + } + } + } + }, + "actions": { + "PortBlockingFunction-runTrafficQuery": { + "type": "Function", + "inputs": { + "body": "@triggerBody()", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/runTrafficQuery')]" + } + } + }, + "PortBlockingFunction-fetchVisibilityOnlyWorkloadsFromTrafficResults": { + "runAfter": { + "PortBlockingFunction-runTrafficQuery": [ + "Succeeded" + ] + }, + "type": "Function", + "inputs": { + "body": "@body('PortBlockingFunction-runTrafficQuery')", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/fetchVisibilityOnlyWorkloadsFromTrafficResults')]" + } + } + }, + "PortBlockingFunction-createVirtualService": { + "runAfter": { + "PortBlockingFunction-fetchVisibilityOnlyWorkloadsFromTrafficResults": [ + "Succeeded" + ] + }, + "type": "Function", + "inputs": { + "body": "@body('PortBlockingFunction-fetchVisibilityOnlyWorkloadsFromTrafficResults')", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/createVirtualService')]" + } + } + }, + "PortBlockingFunction-bindWorkloadsToVirtualService": { + "runAfter": { + "PortBlockingFunction-createVirtualService": [ + "Succeeded" + ] + }, + "type": "Function", + "inputs": { + "body": "@body('PortBlockingFunction-createVirtualService')", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/bindWorkloadsToVirtualService')]" + } + } + }, + "PortBlockingFunction-createAllowRuleForVirtualService": { + "runAfter": { + "PortBlockingFunction-bindWorkloadsToVirtualService": [ + "Succeeded" + ] + }, + "type": "Function", + "inputs": { + "body": "@body('PortBlockingFunction-bindWorkloadsToVirtualService')", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/createAllowRuleForVirtualService')]" + } + } + }, + "PortBlockingFunction-changeWorkloadEnforcementState": { + "runAfter": { + "PortBlockingFunction-fetchVisibilityOnlyWorkloadsFromTrafficResults": [ + "Succeeded" + ] + }, + "type": "Function", + "inputs": { + "body": "@body('PortBlockingFunction-fetchVisibilityOnlyWorkloadsFromTrafficResults')", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/changeWorkloadEnforcementState')]" + } + } + }, + "PortBlockingFunction-createDenyRule": { + "runAfter": { + "PortBlockingFunction-fetchVisibilityOnlyWorkloadsFromTrafficResults": [ + "Succeeded" + ] + }, + "type": "Function", + "inputs": { + "body": "@body('PortBlockingFunction-fetchVisibilityOnlyWorkloadsFromTrafficResults')", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/createDenyRule')]" + } + } + } + } + } + }, + "tags": { + "hidden-SentinelWorkspaceId": "[[variables('workspaceResourceId')]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Playbook-', last(split(variables('playbookId3'),'/'))))]", + "properties": { + "parentId": "[variables('playbookId3')]", + "contentId": "[variables('_playbookContentId3')]", + "kind": "Playbook", + "version": "[variables('playbookVersion3')]", + "source": { + "kind": "Solution", + "name": "IllumioSaaS", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "app-integrations@illumio.com" + }, + "support": { + "name": "Illumio", + "email": "app-integrations@illumio.com", + "tier": "Partner", + "link": "https://www.illumio.com/support/support" + }, + "dependencies": { + "criteria": [ + { + "kind": "AzureFunction", + "contentId": "[variables('_IllumioSaaS_FunctionAppConnector')]", + "version": "[variables('playbookVersion1')]" + } + ] + } + } + } + ], + "metadata": { + "title": "Illumio Containment Switch Playbook", + "description": "This playbook leverages Illumio workloads API to contain and isolate a workload based on user inputs. .", + "prerequisites": [ + "To use this playbook, ensure that you have valid API key and secret, org id and pce fqdn. Ensure that you deploy the template with the required context." + ], + "postDeployment": [ + "After deployment open the playbook in edit mode and configure/authorize all connections and press save. " + ], + "lastUpdateTime": "2024-11-21T00:00:00Z", + "tags": [ + "Remediation" + ], + "releaseNotes": [ + { + "version": "1.0", + "title": "Illumio Containment Switch", + "notes": [ + "Initial version" + ] + } + ] + } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId3')]", + "contentKind": "Playbook", + "displayName": "Illumio-Port-Blocking-Switch", + "contentProductId": "[variables('_playbookcontentProductId3')]", + "id": "[variables('_playbookcontentProductId3')]", + "version": "[variables('playbookVersion3')]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('playbookTemplateSpecName4')]", + "location": "[parameters('workspace-location')]", + "dependsOn": [ + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" + ], + "properties": { + "description": "Illumio-Quarantine-Workload Playbook with template version 3.2.3", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('playbookVersion4')]", + "parameters": { + "PlaybookName": { + "defaultValue": "Illumio-Quarantine-Workload", + "type": "String", + "metadata": { + "description": "PlayBook Name" + } + }, + "FunctionAppName": { + "defaultValue": "illumiopbfuncapp", + "type": "String", + "metadata": { + "description": "Function app Name" + } + } + }, + "variables": { + "functionAppName": "[[parameters('FunctionAppName')]", + "workspace-location-inline": "[concat('[resourceGroup().locatio', 'n]')]", + "workspace-name": "[parameters('workspace')]", + "workspaceResourceId": "[[resourceId('microsoft.OperationalInsights/Workspaces', variables('workspace-name'))]" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2017-07-01", + "name": "[[parameters('PlaybookName')]", + "location": "[[variables('workspace-location-inline')]", + "properties": { + "state": "Enabled", + "definition": { + "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "type": "Object" + } + }, + "triggers": { + "When_a_HTTP_request_is_received": { + "type": "Request", + "kind": "Http", + "inputs": { + "method": "POST", + "schema": { + "type": "object", + "properties": { + "workloads": { + "type": "array", + "items": { + "type": "string" + } + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "actions": { + "QuarantineWorkloadFuncApp-quarantineWorkloadHTTPTrigger": { + "type": "Function", + "inputs": { + "body": "@triggerBody()", + "function": { + "id": "[[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/quarantineWorkloadHTTPTrigger')]" + } + } + } + } + } + }, + "tags": { + "hidden-SentinelWorkspaceId": "[[variables('workspaceResourceId')]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Playbook-', last(split(variables('playbookId4'),'/'))))]", + "properties": { + "parentId": "[variables('playbookId4')]", + "contentId": "[variables('_playbookContentId4')]", + "kind": "Playbook", + "version": "[variables('playbookVersion4')]", + "source": { + "kind": "Solution", + "name": "IllumioSaaS", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "app-integrations@illumio.com" + }, + "support": { + "name": "Illumio", + "email": "app-integrations@illumio.com", + "tier": "Partner", + "link": "https://www.illumio.com/support/support" + }, + "dependencies": { + "criteria": [ + { + "kind": "AzureFunction", + "contentId": "[variables('_IllumioSaaS_FunctionAppConnector')]", + "version": "[variables('playbookVersion1')]" + } + ] + } + } + } + ], + "metadata": { + "title": "Illumio Workload Quarantine Playbook", + "description": "This playbook leverages Illumio workloads API to quarantine a workload based on user inputs. .", + "prerequisites": [ + "To use this playbook, ensure that you have valid API key and secret, org id and pce fqdn. Ensure that you deploy the template with the required context." + ], + "postDeployment": [ + "After deployment open the playbook in edit mode and configure/authorize all connections and press save. " + ], + "lastUpdateTime": "2024-12-10T00:00:00Z", + "tags": [ + "Remediation" + ], + "releaseNotes": [ + { + "version": "1.0", + "title": "Illumio Quarantine Workload", + "notes": [ + "Initial version" + ] + } + ] + } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId4')]", + "contentKind": "Playbook", + "displayName": "Illumio-Quarantine-Workload", + "contentProductId": "[variables('_playbookcontentProductId4')]", + "id": "[variables('_playbookcontentProductId4')]", + "version": "[variables('playbookVersion4')]" + } + }, { "type": "Microsoft.OperationalInsights/workspaces/providers/contentPackages", "apiVersion": "2023-04-01-preview", "location": "[parameters('workspace-location')]", "properties": { - "version": "3.2.2", + "version": "3.2.3", "kind": "Solution", "contentSchemaVersion": "3.0.0", "displayName": "IllumioSaaS", "publisherDisplayName": "Illumio", - "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

IllumioSaaS solution provides ability to ingest auditable and flow events from AWS S3 bucket.

\n

Data Connectors: 1, Workbooks: 3, Analytic Rules: 6

\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

IllumioSaaS solution provides ability to ingest auditable and flow events from AWS S3 bucket.

\n

Data Connectors: 1, Workbooks: 3, Analytic Rules: 6, Function Apps: 1, Playbooks: 3

\n

Learn more about Microsoft Sentinel | Learn more about Solutions

\n", "contentKind": "Solution", "contentProductId": "[variables('_solutioncontentProductId')]", "id": "[variables('_solutioncontentProductId')]", @@ -1526,6 +2654,26 @@ "kind": "AnalyticsRule", "contentId": "[variables('analyticRuleObject6')._analyticRulecontentId6]", "version": "[variables('analyticRuleObject6').analyticRuleVersion6]" + }, + { + "kind": "AzureFunction", + "contentId": "[variables('_IllumioSaaS_FunctionAppConnector')]", + "version": "[variables('playbookVersion1')]" + }, + { + "kind": "Playbook", + "contentId": "[variables('_Illumio-Get-Ven-Details')]", + "version": "[variables('playbookVersion2')]" + }, + { + "kind": "Playbook", + "contentId": "[variables('_Illumio-Port-Blocking-Switch')]", + "version": "[variables('playbookVersion3')]" + }, + { + "kind": "Playbook", + "contentId": "[variables('_Illumio-Quarantine-Workload')]", + "version": "[variables('playbookVersion4')]" } ] }, diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/illumio-containment-switch.zip b/Solutions/IllumioSaaS/Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/IllumioSaaS_FunctionAppForPlaybooks.zip similarity index 83% rename from Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/illumio-containment-switch.zip rename to Solutions/IllumioSaaS/Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/IllumioSaaS_FunctionAppForPlaybooks.zip index 236e9adc689..6e6ab297770 100644 Binary files a/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/illumio-containment-switch.zip and b/Solutions/IllumioSaaS/Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/IllumioSaaS_FunctionAppForPlaybooks.zip differ diff --git a/Solutions/IllumioSaaS/Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/azuredeploy.json b/Solutions/IllumioSaaS/Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/azuredeploy.json new file mode 100644 index 00000000000..29f4b6f2c60 --- /dev/null +++ b/Solutions/IllumioSaaS/Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/azuredeploy.json @@ -0,0 +1,186 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "FunctionAppName": { + "defaultValue": "illumiopbfuncapp", + "type": "String", + "metadata": { + "description": "Function app Name" + } + }, + "StorageAccountName": { + "type": "String", + "metadata": { + "description": "Storage name should be globally unique name" + } + }, + "PCE_FQDN": { + "type": "String", + "metadata": { + "description": "FQDN of PCE" + } + }, + "PORT": { + "type": "String", + "metadata": { + "description": "Port that PCE connects to, like 443" + } + }, + "ORG_ID": { + "type": "String", + "metadata": { + "description": "Customer's org id" + } + }, + "API_KEY": { + "type": "String", + "metadata": { + "description": "API key" + } + }, + "API_SECRET": { + "type": "String", + "metadata": { + "description": "API secret" + } + } + }, + "variables": { + "hostingPlanName": "[parameters('FunctionAppName')]", + "storageAccountName": "[parameters('StorageAccountName')]", + "functionAppName": "[parameters('FunctionAppName')]", + "applicationInsightsName": "[parameters('FunctionAppName')]", + "pceFQDN": "[parameters('PCE_FQDN')]", + "port": "[parameters('PORT')]", + "orgId": "[parameters('ORG_ID')]", + "apiKey": "[parameters('API_KEY')]", + "apiSecret": "[parameters('API_SECRET')]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2022-03-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Y1", + "tier": "Dynamic" + }, + "properties": { + "name": "[variables('hostingPlanName')]", + "computeMode": "Dynamic" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2023-04-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "minimumTlsVersion": "TLS1_2", + "supportsHttpsTrafficOnly": "true", + "allowBlobPublicAccess": "false", + "allowSharedKeyAccess": "true", + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow", + "ipRules": [] + } + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[variables('applicationInsightsName')]", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" + }, + "properties": { + "Application_Type": "web" + }, + "kind": "web" + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[variables('functionAppName')]", + "location": "[resourceGroup().location]", + "kind": "functionapp,linux", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]" + ], + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-04-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~4" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~20" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02').InstrumentationKey]" + }, + { + "name": "WEBSITE_RUN_FROM_PACKAGE", + "value": "https://raw.githubusercontent.com/illumio-shield/Azure-Sentinel/illumio-sentinel-playbook-v2/Solutions/IllumioSaaS/Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/IllumioSaaS_FunctionAppForPlaybooks.zip" + }, + { + "name": "PCE_FQDN", + "value": "[variables('pceFQDN')]" + }, + { + "name": "PORT", + "value": "[variables('port')]" + }, + { + "name": "ORG_ID", + "value": "[variables('orgId')]" + }, + { + "name": "API_KEY", + "value": "[variables('apiKey')]" + }, + { + "name": "API_SECRET", + "value": "[variables('apiSecret')]" + } + ] + }, + "cors": { + "allowedOrigins": [ + "https://functions.azure.com", + "https://functions-staging.azure.com", + "https://functions-next.azure.com" + ], + "supportCredentials": false + } + } + } + ] +} \ No newline at end of file diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/README.md b/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/README.md index e69de29bb2d..5679ebc0209 100644 --- a/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/README.md +++ b/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/README.md @@ -0,0 +1,31 @@ +# Microsoft Sentinel Playbooks for Illumio Integration + +Playbooks are collections of procedures that can be run from Microsoft Sentinel. + +--- + +## Get VEN Details Playbook + +This playbook can be configured to respond to Microsoft Sentinel alerts. + +1. Once an alert is triggered, its body is sent to a function app. +2. The function talks to the PCE with the help of api key/secret. +3. Once VEN details are fetched from PCE, then the playbook constructs a table with the relevant information. +4. Table comprises of, alert title, severity, ven details like ip address, hostname and labels and alert description. +5. This is sent out as an email. + +# To deploy, follow the below link +Deploy the function app first: +[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fillumio-shield%2FAzure-Sentinel%2Frefs%2Fheads%2Fillumio-sentinel-playbooks-v2%2FSolutions%2FIllumioSaaS%2FPlaybooks%2FCustomConnector%2FIllumioSaaS_FunctionAppConnector%2Fazuredeploy.json) + +Deploy logic app next: +[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Frefs%2Fheads%2Fmaster%2FSolutions%2FIllumioSaaS%2FPlaybooks%2FIllumio-Get-Ven-Details%2Fazuredeploy.json) + + +This playbook creates API connections, since it needs to query/interact with Outlook 365 and Microsoft Sentinel. + +Hence, ensure to provide "Deployers User name" as an email address. + +Provide PCE fqdn, port, org id, api key and secret, click Next and follow next steps to deploy playbook. + +Once deployed, authorize the api connections. \ No newline at end of file diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/azuredeploy.json b/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/azuredeploy.json index c28be9c2538..a07ddfc2d56 100644 --- a/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/azuredeploy.json +++ b/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/azuredeploy.json @@ -3,18 +3,18 @@ "contentVersion": "1.0.0.0", "metadata": { "title": "Illumio Get Ven Details Playbook", - "description": "This playbook leverages Illumio workloads API to enrich IP, Hostname and Labels, found in Microsoft Sentinel alerts. .", + "description": "This playbook leverages Illumio workloads API to enrich IP, Hostname and Labels, found in Microsoft Sentinel alerts. .", "prerequisites": [ "To use this playbook, ensure that you have valid API key and secret, org id and pce fqdn. Ensure that you deploy the template with the required context." ], "postDeployment": [ - "After deployment open the playbook in edit mode and configure/authorize all connections and press save. " + "After deployment open the playbook in edit mode and configure/authorize all connections and press save. " ], "prerequisitesDeployTemplateFile": "", "lastUpdateTime": "2024-11-21T00:00:00.000Z", "entities": [ "ip", - "host" + "host" ], "tags": [ "Enrichment" ], "support": { @@ -30,7 +30,7 @@ "notes": [ "Initial version" ] } ] - }, + }, "parameters": { "PlaybookName": { "defaultValue": "Illumio-Ven-Details", @@ -44,54 +44,14 @@ "type": "string" }, "FunctionAppName": { - "defaultValue": "IllumioVenDetails", + "defaultValue": "illumiopbfuncapp", "type": "String", "metadata": { "description": "Function app Name" } - }, - "PCE_FQDN": { - "type": "String", - "metadata": { - "description": "FQDN of PCE" - } - }, - "PORT": { - "type": "String", - "metadata": { - "description": "Port that PCE connects to, like 443" - } - }, - "ORG_ID": { - "type": "String", - "metadata": { - "description": "Customer's org id" - } - }, - "API_KEY": { - "type": "String", - "metadata": { - "description": "API key" - } - }, - "API_SECRET": { - "type": "String", - "metadata": { - "description": "API secret" - } } }, - "variables": { - "location": "[resourceGroup().location]", - "hostingPlanName": "[parameters('FunctionAppName')]", - "storageAccountName": "vendetailsstorage", - "functionAppName": "[parameters('FunctionAppName')]", - "applicationInsightsName": "[parameters('FunctionAppName')]", - "pceFQDN": "[parameters('PCE_FQDN')]", - "port": "[parameters('PORT')]", - "orgId": "[parameters('ORG_ID')]", - "apiKey": "[parameters('API_KEY')]", - "apiSecret": "[parameters('API_SECRET')]", + "variables": { "o365ConnectionName": "[concat('o365-', parameters('PlaybookName'))]", "sentinelConnectionName": "[concat('azuresentinel-', parameters('PlaybookName'))]" }, @@ -122,140 +82,12 @@ } } }, - { - "type": "Microsoft.Web/serverfarms", - "apiVersion": "2020-06-01", - "name": "[variables('hostingPlanName')]", - "location": "[variables('location')]", - "sku": { - "name": "Y1", - "tier": "Dynamic" - }, - "properties": { - "name": "[variables('hostingPlanName')]", - "computeMode": "Dynamic" - } - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-06-01", - "name": "[variables('storageAccountName')]", - "location": "[variables('location')]", - "sku": { - "name": "Standard_LRS", - "tier": "Standard" - }, - "kind": "StorageV2", - "properties": { - "accessTier": "Hot", - "minimumTlsVersion": "TLS1_2", - "supportsHttpsTrafficOnly": "true", - "allowBlobPublicAccess": "false", - "allowSharedKeyAccess": "true", - "networkAcls": { - "bypass": "AzureServices", - "defaultAction": "Allow", - "ipRules": [] - } - } - }, - { - "type": "Microsoft.Insights/components", - "apiVersion": "2020-02-02", - "name": "[variables('applicationInsightsName')]", - "location": "[resourceGroup().location]", - "tags": { - "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" - }, - "properties": { - "Application_Type": "web" - }, - "kind": "web" - }, - { - "type": "Microsoft.Web/sites", - "apiVersion": "2020-06-01", - "name": "[variables('functionAppName')]", - "location": "[variables('location')]", - "kind": "functionapp,linux", - "identity": { - "type": "SystemAssigned" - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", - "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", - "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]" - ], - "properties": { - "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", - "siteConfig": { - "appSettings": [ - { - "name": "AzureWebJobsStorage", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" - }, - { - "name": "FUNCTIONS_EXTENSION_VERSION", - "value": "~4" - }, - { - "name": "FUNCTIONS_WORKER_RUNTIME", - "value": "node" - }, - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "~20" - }, - { - "name": "APPINSIGHTS_INSTRUMENTATIONKEY", - "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]" - }, - { - "name": "WEBSITE_RUN_FROM_PACKAGE", - "value": "https://raw.githubusercontent.com/illumio-shield/Azure-Sentinel/illumio-sentinel-playbook/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/illumio-ven-details.zip" - }, - { - "name": "PCE_FQDN", - "value": "[variables('pceFQDN')]" - }, - { - "name": "PORT", - "value": "[variables('port')]" - }, - { - "name": "ORG_ID", - "value": "[variables('orgId')]" - }, - { - "name": "API_KEY", - "value": "[variables('apiKey')]" - }, - { - "name": "API_SECRET", - "value": "[variables('apiSecret')]" - } - ] - }, - "cors": { - "allowedOrigins": [ - "https://functions.azure.com", - "https://functions-staging.azure.com", - "https://functions-next.azure.com" - ], - "supportCredentials": false - } - } - }, { "type": "Microsoft.Logic/workflows", "apiVersion": "2017-07-01", - "location": "[variables('location')]", + "location": "[resourceGroup().location]", "name": "[parameters('PlaybookName')]", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", - "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", - "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]", - "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]", + "dependsOn": [ "[resourceId('Microsoft.Web/connections', variables('o365ConnectionName'))]" ], "properties": { @@ -335,7 +167,7 @@ { "name": "varHTMLTable", "type": "string", - "value": "\n \n \n \n \n \n \n \n " + "value": "
Incident NumberCreated TimeTitleVen DetailsDescriptionIncident URL
\n \n \n \n \n \n " } ] } @@ -428,7 +260,7 @@ "type": "AppendToStringVariable", "inputs": { "name": "EntityTable", - "value": "\n \n \n \n" + "value": "\n \n \n \n" } } }, @@ -438,15 +270,15 @@ ] } }, - "Append_to_string_variable_1": { + "Append_to_string_variable_2": { "type": "AppendToStringVariable", "inputs": { - "name": "EntityTable", + "name": "varHTMLTable", "value": "
Created TimeTitleSeverityDescription
@{item()?['public_ip']}@{item()?['hostname']}@{item()?['labels']}
@{item()?['public_ip']}@{item()?['hostname']}@{item()?['labels']}
" }, "runAfter": { - "Append_to_string_variable_2": [ - "Succeeded" + "Append_to_string_variable_1": [ + "SUCCEEDED" ] } }, @@ -473,9 +305,9 @@ }, "method": "post", "body": { - "To": "[parameters('DeployersUserName')]", - "Subject": "Test Alert details", - "Body": "

In the following, is more information, about the new Azure Sentinel incident:


@{variables('varHTMLTable')}


Illumio

", + "To": "user@domain.com", + "Subject": "Microsoft Sentinel: @{triggerBody()?['AlertDisplayName']}", + "Body": "

In the following, is more information, about the new Azure Sentinel alert:


@{variables('varHTMLTable')}


And VEN details pertaining to entities are


@{variables('EntityTable')}

Illumio

", "Importance": "Normal" }, "path": "/v2/Mail" @@ -486,7 +318,7 @@ "actions": {} }, "runAfter": { - "Append_to_string_variable_1": [ + "Append_to_string_variable_3": [ "Succeeded" ] } @@ -508,12 +340,24 @@ ] } }, - "Append_to_string_variable_2": { + "Append_to_string_variable_3": { "type": "AppendToStringVariable", "inputs": { - "name": "varHTMLTable", + "name": "EntityTable", "value": "" }, + "runAfter": { + "Append_to_string_variable_2": [ + "SUCCEEDED" + ] + } + }, + "Append_to_string_variable_1": { + "type": "AppendToStringVariable", + "inputs": { + "name": "varHTMLTable", + "value": " \n @{triggerBody()?['TimeGenerated']}\n @{triggerBody()?['AlertDisplayName']}\n @{triggerBody()?['Severity']}\n @{triggerBody()?['Description']}\n " + }, "runAfter": { "For_each": [ "Succeeded" diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/illumio-ven-details.zip b/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/illumio-ven-details.zip deleted file mode 100644 index c0d6d926594..00000000000 Binary files a/Solutions/IllumioSaaS/Playbooks/Illumio-Get-Ven-Details/illumio-ven-details.zip and /dev/null differ diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/README.md b/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/README.md index e69de29bb2d..189058fb3f6 100644 --- a/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/README.md +++ b/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/README.md @@ -0,0 +1,64 @@ +# Microsoft Sentinel Playbooks for Illumio Integration + +Playbooks are collections of procedures that can be run from Microsoft Sentinel. + +--- + +## Containment Switch Playbook + +The **Containment Switch** playbook is designed to help isolate workloads. It includes the following procedures: + +1. **Run an Explorer Query** + Queries Illumio PCE for potentially blocked or unknown traffic for a given port-protocol combination over the last week. +2. **Get a List of Visibility-Only Workloads** + Parses the query response to identify workloads marked as visibility-only. +3. **Create a Deny Rule** + Creates and provisions a deny rule from all IPs to all workloads for the specified port-protocol combination. +4. **Create a Virtual Service** + Creates and provisions a virtual service for the given port-protocol combination. +5. **Create Workload Bindings** + Binds workloads to the virtual service created in Step 4. +6. **Create an Allow Rule** + Creates and provisions an allow rule from workloads to the virtual service. +7. **Change Enforcement State** + Changes the enforcement state of visibility-only workloads to selective state. + +Each procedure is implemented as a function within an Azure Function App. + +--- + +### How It Works + +The playbook provides the following capabilities: + +- Queries Illumio PCE for traffic matching the specified port-protocol combination. +- Parses the response to identify visibility-only workloads. +- Provisions rules and objects in the PCE based on the parsed data. + +#### Example Input to the Playbook: +```json +{ + "protocol": 17, + "port": 5354, + "applyChanges": true +} +``` + +Regarding "applyChanges": +If true, the playbook will create and provision changes (including workload enforcement changes). +If false, it skips object creation/modification steps and only provides a summary of actions, but traffic query results and parsed workloads will still be available. + + + +# To deploy, follow the below link +Deploy the function app first: +[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fillumio-shield%2FAzure-Sentinel%2Frefs%2Fheads%2Fillumio-sentinel-playbooks-v2%2FSolutions%2FIllumioSaaS%2FPlaybooks%2FCustomConnector%2FIllumioSaaS_FunctionAppConnector%2Fazuredeploy.json) + +Deploy logic app next: +[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Frefs%2Fheads%2Fmaster%2FSolutions%2FIllumioSaaS%2FPlaybooks%2FIllumio-Port-Blocking-Switch%2Fazuredeploy.json) + + +User can modify the playbook name, function app name as per requirements. + +PCE fqdn, port, org id, api key and secret are needed for communicating with the pce. +Once these are entered, click on next and follow steps to deploy. \ No newline at end of file diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/azuredeploy.json b/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/azuredeploy.json index c50d1922fa1..dd3e255161e 100644 --- a/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/azuredeploy.json +++ b/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/azuredeploy.json @@ -3,12 +3,12 @@ "contentVersion": "1.0.0.0", "metadata": { "title": "Illumio Containment Switch Playbook", - "description": "This playbook leverages Illumio workloads API to contain and isolate a workload based on user inputs. .", + "description": "This playbook leverages Illumio workloads API to contain and isolate a workload based on user inputs. .", "prerequisites": [ "To use this playbook, ensure that you have valid API key and secret, org id and pce fqdn. Ensure that you deploy the template with the required context." ], "postDeployment": [ - "After deployment open the playbook in edit mode and configure/authorize all connections and press save. " + "After deployment open the playbook in edit mode and configure/authorize all connections and press save. " ], "prerequisitesDeployTemplateFile": "", "lastUpdateTime": "2024-11-21T00:00:00.000Z", @@ -39,192 +39,25 @@ } }, "FunctionAppName": { - "defaultValue": "IllumioPortBlockingApp", + "defaultValue": "illumiopbfuncapp", "type": "String", "metadata": { "description": "Function app Name" } - }, - "PCE_FQDN": { - "type": "String", - "metadata": { - "description": "FQDN of PCE" - } - }, - "PORT": { - "type": "String", - "metadata": { - "description": "Port that PCE connects to, like 443" - } - }, - "ORG_ID": { - "type": "String", - "metadata": { - "description": "Customer's org id" - } - }, - "API_KEY": { - "type": "String", - "metadata": { - "description": "API key" - } - }, - "API_SECRET": { - "type": "String", - "metadata": { - "description": "API secret" - } } }, "variables": { - "location": "[resourceGroup().location]", "hostingPlanName": "[parameters('FunctionAppName')]", - "storageAccountName": "portblockstorage", + "storageAccountName": "[parameters('FunctionAppName')]", "functionAppName": "[parameters('FunctionAppName')]", - "applicationInsightsName": "[parameters('FunctionAppName')]", - "pceFQDN": "[parameters('PCE_FQDN')]", - "port": "[parameters('PORT')]", - "orgId": "[parameters('ORG_ID')]", - "apiKey": "[parameters('API_KEY')]", - "apiSecret": "[parameters('API_SECRET')]", - "sentinelConnectionName": "[concat('azuresentinel-', parameters('PlaybookName'))]" + "applicationInsightsName": "[parameters('FunctionAppName')]" }, "resources": [ - { - "type": "Microsoft.Web/serverfarms", - "apiVersion": "2020-06-01", - "name": "[variables('hostingPlanName')]", - "location": "[variables('location')]", - "sku": { - "name": "Y1", - "tier": "Dynamic" - }, - "properties": { - "name": "[variables('hostingPlanName')]", - "computeMode": "Dynamic" - } - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-06-01", - "name": "[variables('storageAccountName')]", - "location": "[variables('location')]", - "sku": { - "name": "Standard_LRS", - "tier": "Standard" - }, - "kind": "StorageV2", - "properties": { - "accessTier": "Hot", - "minimumTlsVersion": "TLS1_2", - "supportsHttpsTrafficOnly": "true", - "allowBlobPublicAccess": "false", - "allowSharedKeyAccess": "true", - "networkAcls": { - "bypass": "AzureServices", - "defaultAction": "Allow", - "ipRules": [] - } - } - }, - { - "type": "Microsoft.Insights/components", - "apiVersion": "2020-02-02", - "name": "[variables('applicationInsightsName')]", - "location": "[resourceGroup().location]", - "tags": { - "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" - }, - "properties": { - "Application_Type": "web" - }, - "kind": "web" - }, - { - "type": "Microsoft.Web/sites", - "apiVersion": "2020-06-01", - "name": "[variables('functionAppName')]", - "location": "[variables('location')]", - "kind": "functionapp,linux", - "identity": { - "type": "SystemAssigned" - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", - "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", - "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]" - ], - "properties": { - "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", - "siteConfig": { - "appSettings": [ - { - "name": "AzureWebJobsStorage", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" - }, - { - "name": "FUNCTIONS_EXTENSION_VERSION", - "value": "~4" - }, - { - "name": "FUNCTIONS_WORKER_RUNTIME", - "value": "node" - }, - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "~20" - }, - { - "name": "APPINSIGHTS_INSTRUMENTATIONKEY", - "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]" - }, - { - "name": "WEBSITE_RUN_FROM_PACKAGE", - "value": "https://raw.githubusercontent.com/illumio-shield/Azure-Sentinel/illumio-sentinel-playbook/Solutions/IllumioSaaS/Playbooks/Illumio-Port-Blocking-Switch/illumio-containment-switch.zip" - }, - { - "name": "PCE_FQDN", - "value": "[variables('pceFQDN')]" - }, - { - "name": "PORT", - "value": "[variables('port')]" - }, - { - "name": "ORG_ID", - "value": "[variables('orgId')]" - }, - { - "name": "API_KEY", - "value": "[variables('apiKey')]" - }, - { - "name": "API_SECRET", - "value": "[variables('apiSecret')]" - } - ] - }, - "cors": { - "allowedOrigins": [ - "https://functions.azure.com", - "https://functions-staging.azure.com", - "https://functions-next.azure.com" - ], - "supportCredentials": false - } - } - }, { "type": "Microsoft.Logic/workflows", "apiVersion": "2017-07-01", "name": "[parameters('PlaybookName')]", - "location": "[variables('location')]", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", - "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", - "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]", - "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]" - ], + "location": "[resourceGroup().location]", "properties": { "state": "Enabled", "definition": { @@ -356,13 +189,7 @@ }, "parameters": { "$connections": { - "value": { - "azuresentinel": { - "connectionId": "[resourceId('Microsoft.Web/connections', variables('sentinelConnectionName'))]", - "connectionName": "[variables('sentinelConnectionName')]", - "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuresentinel')]" - } - } + "value": {} } } } diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/Images/illumio-quarantine-workload.png b/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/Images/illumio-quarantine-workload.png new file mode 100644 index 00000000000..b1f0a91c3b2 Binary files /dev/null and b/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/Images/illumio-quarantine-workload.png differ diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/README.md b/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/README.md new file mode 100644 index 00000000000..99065dc816f --- /dev/null +++ b/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/README.md @@ -0,0 +1,20 @@ +# Microsoft Sentinel Playbooks for Illumio Integration + +Playbooks are collections of procedures that can be run from Microsoft Sentinel. + +--- + +## Quarantine Workload Playbook + +1. The logic app can be invoked as a http request. +2. The payload should contain workload hostname/s and label/s. +3. Function app is called with the above payload which makes a call to the PCE and applies labels to the workloads mentioned in payload. + +# To deploy, follow the below steps + +Deploy the function app first +[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fillumio-shield%2FAzure-Sentinel%2Frefs%2Fheads%2Fillumio-sentinel-playbooks-v2%2FSolutions%2FIllumioSaaS%2FPlaybooks%2FCustomConnector%2FIllumioSaaS_FunctionAppConnector%2Fazuredeploy.json) + + +Deploy the logic app next: +[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fillumio-shield%2FAzure-Sentinel%2Frefs%2Fheads%2Fillumio-sentinel-playbooks-v2%2FSolutions%2FIllumioSaaS%2FPlaybooks%2FIllumio-Quarantine-Workload%2Fazuredeploy.json) \ No newline at end of file diff --git a/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/azuredeploy.json b/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/azuredeploy.json new file mode 100644 index 00000000000..291c961400c --- /dev/null +++ b/Solutions/IllumioSaaS/Playbooks/Illumio-Quarantine-Workload/azuredeploy.json @@ -0,0 +1,117 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "title": "Illumio Workload Quarantine Playbook", + "description": "This playbook leverages Illumio workloads API to quarantine a workload based on user inputs. .", + "prerequisites": [ + "To use this playbook, ensure that you have valid API key and secret, org id and pce fqdn. Ensure that you deploy the template with the required context." + ], + "postDeployment": [ + "After deployment open the playbook in edit mode and configure/authorize all connections and press save. " + ], + "prerequisitesDeployTemplateFile": "", + "lastUpdateTime": "2024-12-10T00:00:00.000Z", + "entities": [ + + ], + "tags": [ "Remediation" ], + "support": { + "tier": "Partner" + }, + "author": { + "name": "Illumio" + }, + "releaseNotes": [ + { + "version": "1.0", + "title": "Illumio Quarantine Workload", + "notes": [ "Initial version" ] + } + ] + }, + "parameters": { + "PlaybookName": { + "defaultValue": "Illumio-Quarantine-Workload", + "type": "String", + "metadata": { + "description": "PlayBook Name" + } + }, + "FunctionAppName": { + "defaultValue": "illumiopbfuncapp", + "type": "String", + "metadata": { + "description": "Function app Name" + } + } + }, + "variables": { + "functionAppName": "[parameters('FunctionAppName')]" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2017-07-01", + "name": "[parameters('PlaybookName')]", + "location": "[resourceGroup().location]", + "properties": { + "state": "Enabled", + "definition": { + "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_a_HTTP_request_is_received": { + "type": "Request", + "kind": "Http", + "inputs": { + "method": "POST", + "schema": { + "type": "object", + "properties": { + "workloads": { + "type": "array", + "items": { + "type": "string" + } + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "actions": { + "QuarantineWorkloadFuncApp-quarantineWorkloadHTTPTrigger": { + "runAfter": {}, + "type": "Function", + "inputs": { + "body": "@triggerBody()", + "function": { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/sites/',parameters('Functionappname'), '/functions/quarantineWorkloadHTTPTrigger')]" + } + } + } + }, + "outputs": {} + }, + "parameters": { + "$connections": { + "value": {} + } + } + } + } + ] +} \ No newline at end of file diff --git a/Solutions/IllumioSaaS/data/Solution_IllumioSaaS.json b/Solutions/IllumioSaaS/data/Solution_IllumioSaaS.json index 0272894a8a0..c1c54406a87 100644 --- a/Solutions/IllumioSaaS/data/Solution_IllumioSaaS.json +++ b/Solutions/IllumioSaaS/data/Solution_IllumioSaaS.json @@ -20,8 +20,10 @@ "Analytic Rules/Illumio_VEN_Suspend_Query.yaml" ], "Playbooks": [ + "Playbooks/CustomConnector/IllumioSaaS_FunctionAppConnector/azuredeploy.json", + "Playbooks/Illumio-Get-Ven-Details/azuredeploy.json", "Playbooks/Illumio-Port-Blocking-Switch/azuredeploy.json", - "Playbooks/Illumio-Get-Ven-Details/azuredeploy.json" + "Playbooks/Illumio-Quarantine-Workload/azuredeploy.json" ], "BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\IllumioSaaS", "Version": "3.3.2", diff --git a/Tools/Create-Azure-Sentinel-Solution/common/commonFunctions.ps1 b/Tools/Create-Azure-Sentinel-Solution/common/commonFunctions.ps1 index 57f35fe0276..a2cdcf8dc50 100644 --- a/Tools/Create-Azure-Sentinel-Solution/common/commonFunctions.ps1 +++ b/Tools/Create-Azure-Sentinel-Solution/common/commonFunctions.ps1 @@ -1043,8 +1043,8 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe contentId = "[variables('_$fileName')]"; version = "[variables('playbookVersion$global:playbookCounter')]"; }; - - if($fileName.ToLower() -match "FunctionApp") + + if($IsFunctionAppResource) { $functionAppsPlaybookId = $playbookData.parameters.FunctionAppName.defaultValue