From f73d8e8f27dc2c78a10bced48fb26a27efe49fd2 Mon Sep 17 00:00:00 2001 From: thbanasi <54327442+thbanasi@users.noreply.github.com> Date: Sun, 27 Feb 2022 14:42:43 -0500 Subject: [PATCH 1/2] ZeroTrust_Solution Update Version 2 --- .../ZeroTrustDNSFamilyControlsMonitoring.yaml | 48 - ...ataProtectionFamilyControlsMonitoring.yaml | 48 - ...eroTrustEmailFamilyControlsMonitoring.yaml | 48 - ...ustEnterpriseFamilyControlsMonitoring.yaml | 48 - ...eroTrustFilesFamilyControlsMonitoring.yaml | 48 - ...sionDetectionFamilyControlsMonitoring.yaml | 48 - ...ustNetworkingFamilyControlsMonitoring.yaml | 48 - ...ustResiliencyFamilyControlsMonitoring.yaml | 48 - .../ZeroTrustUCCFamilyControlsMonitoring.yaml | 48 - ...yCapabilitiesFamilyControlsMonitoring.yaml | 48 - .../ZeroTrustWebFamilyControlsMonitoring.yaml | 48 - ...TIC3.0_ControlAssessmentPostureChange.yaml | 47 + .../Open_DevOpsTaskRecommendation.json | 170 + .../Open_JIRATicketRecommendation.json | 158 + .../Preview/ZeroTrust(TIC3.0)Black1.PNG | Bin 122414 -> 0 bytes .../Preview/ZeroTrust(TIC3.0)White1.PNG | Bin 122883 -> 0 bytes .../Images/ZeroTrust(TIC3.0)Black1.PNG | Bin 0 -> 395379 bytes .../Images/ZeroTrust(TIC3.0)White1.PNG | Bin 0 -> 393087 bytes .../Workbooks/ZeroTrust(TIC3.0).json | 34552 +++++++++++----- Solutions/ZeroTrust(TIC3.0)/readme.md | 59 +- 20 files changed, 25279 insertions(+), 10235 deletions(-) delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustDNSFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustDataProtectionFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustEmailFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustEnterpriseFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustFilesFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustIntrusionDetectionFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustNetworkingFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustResiliencyFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustUCCFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustUniversalSecurityCapabilitiesFamilyControlsMonitoring.yaml delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustWebFamilyControlsMonitoring.yaml create mode 100644 Solutions/ZeroTrust(TIC3.0)/Analytic Rules/Zero_Trust_TIC3.0_ControlAssessmentPostureChange.yaml create mode 100644 Solutions/ZeroTrust(TIC3.0)/Playbooks/Open_DevOpsTaskRecommendation.json create mode 100644 Solutions/ZeroTrust(TIC3.0)/Playbooks/Open_JIRATicketRecommendation.json delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Workbooks/Images/Preview/ZeroTrust(TIC3.0)Black1.PNG delete mode 100644 Solutions/ZeroTrust(TIC3.0)/Workbooks/Images/Preview/ZeroTrust(TIC3.0)White1.PNG create mode 100644 Solutions/ZeroTrust(TIC3.0)/Workbooks/Images/ZeroTrust(TIC3.0)Black1.PNG create mode 100644 Solutions/ZeroTrust(TIC3.0)/Workbooks/Images/ZeroTrust(TIC3.0)White1.PNG diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustDNSFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustDNSFamilyControlsMonitoring.yaml deleted file mode 100644 index d45fca231a8..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustDNSFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: 6d737820-2ae6-4328-b62b-9a43e8f6692e -name: (Preview) ZeroTrust(TIC3.0) DNS Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'DNS' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustDataProtectionFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustDataProtectionFamilyControlsMonitoring.yaml deleted file mode 100644 index 708e8233423..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustDataProtectionFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: 6289c9d2-b9c4-4a4c-927e-36a717113b58 -name: (Preview) ZeroTrust(TIC3.0) Data Protection Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Data Protection' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustEmailFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustEmailFamilyControlsMonitoring.yaml deleted file mode 100644 index a526c9eaa5e..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustEmailFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: b237d2b9-b8e6-48e0-b3dc-1430b429e8c5 -name: (Preview) ZeroTrust(TIC3.0) Email Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Email' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustEnterpriseFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustEnterpriseFamilyControlsMonitoring.yaml deleted file mode 100644 index 0b8ad5d93a1..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustEnterpriseFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: dc618145-bec3-437b-8a70-8b4d4d4e28e3 -name: (Preview) ZeroTrust(TIC3.0) Enterprise Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Enterprise' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustFilesFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustFilesFamilyControlsMonitoring.yaml deleted file mode 100644 index 9f3297db60e..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustFilesFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: 618ab10b-fe9a-454f-9a80-1b0a6a9f8cb1 -name: (Preview) ZeroTrust(TIC3.0) Files Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Files' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustIntrusionDetectionFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustIntrusionDetectionFamilyControlsMonitoring.yaml deleted file mode 100644 index 3a751d88bf9..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustIntrusionDetectionFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: 555c9a75-71f0-406b-943c-42e007211916 -name: (Preview) ZeroTrust(TIC3.0) Intrusion Detection Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Intrusion Detection' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustNetworkingFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustNetworkingFamilyControlsMonitoring.yaml deleted file mode 100644 index 4b26082b2b6..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustNetworkingFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: f0f614c5-a660-4994-8f80-f6a5b6e85021 -name: (Preview) ZeroTrust(TIC3.0) Networking Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Networking' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustResiliencyFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustResiliencyFamilyControlsMonitoring.yaml deleted file mode 100644 index 4fdd86ec3b3..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustResiliencyFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: c67c454d-043d-4eaa-ac50-712973d767a1 -name: (Preview) ZeroTrust(TIC3.0) Resiliency Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Resiliency' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustUCCFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustUCCFamilyControlsMonitoring.yaml deleted file mode 100644 index 3c8ff1a2033..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustUCCFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: e3d75cd2-37e5-457f-a7d2-781de9bfa3cf -name: (Preview) ZeroTrust(TIC3.0) UCC Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Unified Communications & Collaboration' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustUniversalSecurityCapabilitiesFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustUniversalSecurityCapabilitiesFamilyControlsMonitoring.yaml deleted file mode 100644 index db320f4713b..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustUniversalSecurityCapabilitiesFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: 377553c4-8a99-4171-ac6a-be12c4d0d1b8 -name: (Preview) ZeroTrust(TIC3.0) Universal Security Capabilities Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Universal Security Capabilities' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustWebFamilyControlsMonitoring.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustWebFamilyControlsMonitoring.yaml deleted file mode 100644 index ff3de09d581..00000000000 --- a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/ZeroTrustWebFamilyControlsMonitoring.yaml +++ /dev/null @@ -1,48 +0,0 @@ -id: fd759ce2-e108-48ef-83c4-a1bb9886a6de -name: (Preview) ZeroTrust(TIC3.0) Web Control Family Monitoring -description: | - 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' -severity: Medium -requiredDataConnectors: [] -queryFrequency: 7d -queryPeriod: 7d -triggerOperator: gt -triggerThreshold: 0 -tactics: - - Discovery -relevantTechniques: - - T1082 -query: | - let ZeroTrustTIC3Mapping = externaldata(RecommendationDisplayName:string,Capability:string,Family:string) [@"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/ZeroTrustTIC3Mapping.csv"] with (format="csv", ignoreFirstRecord=True); - SecurityRecommendation - | join kind=rightouter ZeroTrustTIC3Mapping on RecommendationDisplayName - | where Family == 'Web' - | summarize - Assessments = count(), - Success = countif(RecommendationState == 'Healthy' or RecommendationState == 'NotApplicable' or RecommendationState == 'Removed'), - Failed = countif(RecommendationState == 'Unhealthy') - by Capability, Family, RecommendationDisplayName - | extend SuccessRatePercentage = (Success * 100 / Assessments) - | extend FailedRatePercentage = (Failed * 100 / Assessments) - | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/22') - | project - Capability, - Family, - RecommendationDisplayName, - Assessments, - SuccessRatePercentage, - FailedRatePercentage, - RemediationLink - | where RecommendationDisplayName <> '' - // | where RecommendationName <> '' //Filter Out or Suppress Recommendations - | where FailedRatePercentage > 30 //Adjust Either FailedRatePercentage or PasedRatePercentage Thresholds within Organizational Needs - | sort by FailedRatePercentage desc - | limit 250 - | extend URLCustomEntity = RemediationLink -entityMappings: - - entityType: URL - fieldMappings: - - identifier: Url - columnName: URLCustomEntity -version: 1.0.0 -kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/Zero_Trust_TIC3.0_ControlAssessmentPostureChange.yaml b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/Zero_Trust_TIC3.0_ControlAssessmentPostureChange.yaml new file mode 100644 index 00000000000..50746bb0b34 --- /dev/null +++ b/Solutions/ZeroTrust(TIC3.0)/Analytic Rules/Zero_Trust_TIC3.0_ControlAssessmentPostureChange.yaml @@ -0,0 +1,47 @@ +id: 4942992d-a4d3-44b0-9cf4-b5a23811d82d +name: ZeroTrust(TIC3.0) Control Assessment Posture Change +description: | + 'Zero Trust(TIC3.0) Control Assessments have Deviated from Configured Threshold Baselines' +severity: Medium +requiredDataConnectors: [] +queryFrequency: 7d +queryPeriod: 7d +triggerOperator: gt +triggerThreshold: 0 +tactics: + - Discovery +relevantTechniques: + - T1082 +query: | + SecurityRecommendation + | where RecommendationDisplayName <> "" + | extend ControlFamily=iff(RecommendationDisplayName has_any("email"), "Email", + iff(RecommendationDisplayName has_any("apps", "teams", "meeting", "call"), "Unified Communications & Collaboration", + iff(RecommendationDisplayName has_any("dns", "domain"), "DNS", + iff(RecommendationDisplayName has_any("endpoint protection", "malware", "file", "files", "IaaSAntimalware"), "Files", + iff(RecommendationDisplayName has_any("Security Center", "defender", "adaptive", "HoneyTokens", "honey", "deception", "intrusion", "incident", "incidents"), "Intrusion Detection", + iff(RecommendationDisplayName has_any("firewall", "watcher", "proxy", "certificate", "url", "web"), "Web", + iff(RecommendationDisplayName has_any("network", "segment", "network security groups", "subnet", "application gateway", "security groups", "IP forwarding", "port", "ports", "networks"), "Networking", + iff(RecommendationDisplayName has_any("backup", "denial", "DDoS", "load", "scale", "front", "traffic manager", "pool", "disaster", "region", "redundant", "geo"), "Resiliency", + iff(RecommendationDisplayName has_any("encrypt", "rest", "transit", "data", "http", "https", "TLS", "transfer", "transit", "Secure Socket", "SSH", "just", "FTP", "server-side", "storage", "database", "databases", "SQL", "disk", "disks"), "Data Protection", + iff(RecommendationDisplayName has_any("private", "vpn", "automation", "playbook", "logic", "notification", "authorized", "safe", "network gateway", "express", "VPC"), "Enterprise", + iff(RecommendationDisplayName has_any("recover", "log", "configured", "configuration", "identity", "privilege", "admin", "authentication", "JIT", "just", "password", "time", "sync", "vulnerability", "Vulnerabilities", "updates", "update", "upgrade", "audit", "account", "guest", "shared", "access", "machines", "rights", "VM", "key", "keys", "IAM", "EC2", "GuardDuty", "logs", "CloudTrail", "MFA", "External accounts", "accounts", "config", "credentials", "privileged", "owner", "owners", "login", "logon", "virtual machine", "container", "containers", "Kubernetes"), "Universal Security Capabilities", "Other"))))))))))) + | summarize arg_max(TimeGenerated, *) by AssessedResourceId, RecommendationDisplayName + | summarize + Failed=countif(RecommendationState == "Unhealthy"), + Passed=countif(RecommendationState == "Healthy"), + Total=countif(RecommendationState == "Unhealthy" or RecommendationState == "Healthy") + by ControlFamily + | extend PassedControlsPercentage = (Passed / todouble(Total)) * 100 + | extend RemediationLink = strcat('https://portal.azure.com/#blade/Microsoft_Azure_Security/SecurityMenuBlade/5') + | extend URLCustomEntity = RemediationLink + | project ControlFamily, Total, PassedControlsPercentage, Passed, Failed, RemediationLink, URLCustomEntity + | where PassedControlsPercentage < 70 //Adjust PassedRatePercentage Thresholds within Organizational Needs + | sort by PassedControlsPercentage asc +entityMappings: + - entityType: URL + fieldMappings: + - identifier: Url + columnName: URLCustomEntity +version: 1.0.0 +kind: Scheduled \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Playbooks/Open_DevOpsTaskRecommendation.json b/Solutions/ZeroTrust(TIC3.0)/Playbooks/Open_DevOpsTaskRecommendation.json new file mode 100644 index 00000000000..89d0153a3dc --- /dev/null +++ b/Solutions/ZeroTrust(TIC3.0)/Playbooks/Open_DevOpsTaskRecommendation.json @@ -0,0 +1,170 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "title": "Create-AzureDevOpsTask", + "description": "This playbook will create the Azure DevOps task filled with the Azure Sentinel incident details.", + "prerequisites": "", + "lastUpdateTime": "2021-07-14T00:00:00.000Z", + "entities": [], + "tags": ["Sync"], + "support": { + "tier": "Community" + }, + "author": { + "name": "Nicholas DiCola" + } + }, + "parameters": { + "PlaybookName": { + "defaultValue": "Create-AzureDevOpsTask", + "type": "string" + } + }, + "variables": { + "AzureSentinelConnectionName": "[concat('azuresentinel-', parameters('PlaybookName'))]", + "AzureDevOpsConnectionName": "[concat('azuredevops-', parameters('PlaybookName'))]" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2016-06-01", + "name": "[variables('AzureSentinelConnectionName')]", + "location": "[resourceGroup().location]", + "kind": "V1", + "properties": { + "displayName": "[variables('AzureSentinelConnectionName')]", + "customParameterValues": {}, + "parameterValueType": "Alternative", + "api": { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuresentinel')]" + } + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2016-06-01", + "name": "[variables('AzureDevOpsConnectionName')]", + "location": "[resourceGroup().location]", + "properties": { + "displayName": "[variables('AzureDevOpsConnectionName')]", + "customParameterValues": { + }, + "api": { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/visualstudioteamservices')]" + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2017-07-01", + "name": "[parameters('PlaybookName')]", + "location": "[resourceGroup().location]", + "tags": { + "hidden-SentinelTemplateName": "Create-AzureDevOpsTask", + "hidden-SentinelTemplateVersion": "1.0" + }, + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/connections', variables('AzureSentinelConnectionName'))]", + "[resourceId('Microsoft.Web/connections', variables('AzureDevOpsConnectionName'))]" + ], + "properties": { + "state": "Enabled", + "definition": { + "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", + "actions": { + "Add_comment_to_incident_(V3)": { + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "
Azure DevOps Task created: @{body('Create_a_work_item')?['url']}
" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + }, + "runAfter": { + "Create_a_work_item": [ + "Succeeded" + ] + }, + "type": "ApiConnection" + }, + "Create_a_work_item": { + "inputs": { + "body": { + "description": "Incident Description: @{triggerBody()?['object']?['properties']?['description']}\nIncident Severity: @{triggerBody()?['object']?['properties']?['severity']}\nIncident URL: @{triggerBody()?['object']?['properties']?['incidentUrl']}\n", + "title": "New Azure Sentinel Incident: @{triggerBody()?['object']?['properties']?['title']}" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['visualstudioteamservices']['connectionId']" + } + }, + "method": "patch", + "path": "/@{encodeURIComponent('test')}/_apis/wit/workitems/$@{encodeURIComponent('Task')}", + "queries": { + "account": "test" + } + }, + "runAfter": {}, + "type": "ApiConnection" + } + }, + "contentVersion": "1.0.0.0", + "outputs": {}, + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_Azure_Sentinel_incident_creation_rule_was_triggered": { + "inputs": { + "body": { + "callback_url": "@{listCallbackUrl()}" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "path": "/incident-creation" + }, + "type": "ApiConnectionWebhook" + } + } + }, + "parameters": { + "$connections": { + "value": { + "azuresentinel": { + "connectionId": "[resourceId('Microsoft.Web/connections', variables('AzureSentinelConnectionName'))]", + "connectionName": "[variables('AzureSentinelConnectionName')]", + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuresentinel')]", + "connectionProperties": { + "authentication": { + "type": "ManagedServiceIdentity" + } + } + }, + "visualstudioteamservices": { + "connectionId": "[resourceId('Microsoft.Web/connections', variables('AzureDevOpsConnectionName'))]", + "connectionName": "[variables('AzureDevOpsConnectionName')]", + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/visualstudioteamservices')]" + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Playbooks/Open_JIRATicketRecommendation.json b/Solutions/ZeroTrust(TIC3.0)/Playbooks/Open_JIRATicketRecommendation.json new file mode 100644 index 00000000000..8eb05e8cae2 --- /dev/null +++ b/Solutions/ZeroTrust(TIC3.0)/Playbooks/Open_JIRATicketRecommendation.json @@ -0,0 +1,158 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "title": "Create Jira Issue", + "description": "This playbook will open a Jira Issue when a new incident is opened in Azure Sentinel.", + "prerequisites": ["1. Jira instance (ex. xyz.atlassian.net)", + "2. Jira API", + "3. Username."], + "lastUpdateTime": "2021-07-14T00:00:00.000Z", + "entities": [], + "tags": [ "Sync" ], + "support": { + "tier": "community" + }, + "author": { + "name": "Yaniv Shasha and Benjamin Kovacevic" + } + }, + "parameters": { + "PlaybookName": { + "defaultValue": "CreateJiraIssue", + "type": "string", + "metadata": { + "description": "Incident trigger" + } + } + }, + "variables": { + "AzureSentinelConnectionName": "[concat('azuresentinel-', parameters('PlaybookName'))]", + "JiraConnectionName": "[concat('jira-', parameters('PlaybookName'))]" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2016-06-01", + "name": "[variables('AzureSentinelConnectionName')]", + "location": "[resourceGroup().location]", + "properties": { + "displayName": "[variables('AzureSentinelConnectionName')]", + "customParameterValues": {}, + "parameterValueType": "Alternative", + "api": { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuresentinel')]" + } + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2016-06-01", + "name": "[variables('jiraConnectionName')]", + "location": "[resourceGroup().location]", + "properties": { + "displayName": "[variables('jiraConnectionName')]", + "customParameterValues": { + }, + "api": { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/jira')]" + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2017-07-01", + "name": "[parameters('PlaybookName')]", + "location": "[resourceGroup().location]", + "tags": { + "hidden-SentinelTemplateName": "CreateJiraIssue-Incident", + "hidden-SentinelTemplateVersion": "1.0" + }, + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/connections', variables('AzureSentinelConnectionName'))]", + "[resourceId('Microsoft.Web/connections', variables('JiraConnectionName'))]" + ], + "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_Azure_Sentinel_incident_creation_rule_was_triggered": { + "type": "ApiConnectionWebhook", + "inputs": { + "body": { + "callback_url": "@{listCallbackUrl()}" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "path": "/incident-creation" + } + } + }, + "actions": { + "Create_a_new_issue": { + "runAfter": {}, + "type": "ApiConnection", + "inputs": { + "body": { + "fields": { + "description": "Incident description: @{triggerBody()?['object']?['properties']?['description']};\nSeverity: @{triggerBody()?['object']?['properties']?['severity']};\nIncident URL: @{triggerBody()?['object']?['properties']?['incidentUrl']}", + "issuetype": { + "id": "10007" + }, + "summary": "@triggerBody()?['object']?['properties']?['title']" + } + }, + "host": { + "connection": { + "name": "@parameters('$connections')['Jira']['connectionId']" + } + }, + "method": "post", + "path": "/issue", + "queries": { + "projectKey": "SOC" + } + } + } + }, + "outputs": {} + }, + "parameters": { + "$connections": { + "value": { + "azuresentinel": { + "connectionId": "[resourceId('Microsoft.Web/connections', variables('AzureSentinelConnectionName'))]", + "connectionName": "[variables('AzureSentinelConnectionName')]", + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuresentinel')]", + "connectionProperties": { + "authentication": { + "type": "ManagedServiceIdentity" + } + } + }, + "Jira": { + "connectionId": "[resourceId('Microsoft.Web/connections', variables('jiraConnectionName'))]", + "connectionName": "[variables('jiraConnectionName')]", + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/jira')]" + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/Solutions/ZeroTrust(TIC3.0)/Workbooks/Images/Preview/ZeroTrust(TIC3.0)Black1.PNG b/Solutions/ZeroTrust(TIC3.0)/Workbooks/Images/Preview/ZeroTrust(TIC3.0)Black1.PNG deleted file mode 100644 index e47ebfd0128ebe37e6b9ad0b163ce11a4784d9c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122414 zcmeFYcT`i`w>BI=K}5tODk9Bu6c7