Created
August 1, 2022 18:58
-
-
Save s4parke/cd55a83779c29fa58bb860af213f6a14 to your computer and use it in GitHub Desktop.
Returns a list of all unhealthy resources with their assessment counts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
securityresources | |
| where type == "microsoft.security/assessments" | |
| extend assessmentDisplayName = coalesce(properties.displayName, properties.metadata.displayName) | |
| where properties.status.code == "Unhealthy" | |
| where assessmentDisplayName startswith "[Publix]" | |
| extend assessmentStatusCode = tolower(tostring(properties.status.code)), id = tolower(id) | |
| extend severity = iff(assessmentStatusCode == "unhealthy", tolower(tostring(properties.metadata.severity)), assessmentStatusCode) | |
| extend exemptionType = iff(properties.status.cause == "Exempt", "Yes", "No") | |
| extend resourceDetails = properties.resourceDetails, additionalData = properties.additionalData | |
| extend source = tolower(tostring(resourceDetails.Source)) | |
| extend resourceId = trim(" ", tolower(resourceDetails.Id)) | |
| extend extractedResourceName = extract(@"(.+)/(.+)", 2, resourceId) | |
| extend resourceName = extractedResourceName | |
| extend regexResourceId = extract_all(@"/providers/([^/]+)(?:/([^/]+)/[^/]+(?:/([^/]+)/[^/]+)?)?/([^/]+)/[^/]+$", resourceId) | |
| extend RegexResourceType = regexResourceId[0] | |
| extend mainType = RegexResourceType[1], extendedType = RegexResourceType[2], resourceType = RegexResourceType[3] | |
| extend providerName = RegexResourceType[0], | |
mainType = case(mainType != "", strcat("/",mainType), ""), | |
extendedType = case(extendedType !="", strcat("/",extendedType), ""), | |
resourceType = case(resourceType != "", strcat("/",resourceType), "") | |
| extend array = split(resourceId, '/') | |
| extend typeFullPath = case( | |
array_length(array) == 3, 'subscription', | |
array_length(array) == 5, 'resourcegroups', | |
strcat(providerName, mainType, extendedType, resourceType)) | |
| extend resourceType = iff(typeFullPath == 'resourcegroups' or typeFullPath == 'subscription', typeFullPath, tolower(trim("/", resourceType))) | |
| extend assessmentKey = iff(type == "microsoft.security/assessments", tostring(name), "") | |
| extend assessmentIdentifier = case(type == "microsoft.security/assessments", strcat(assessmentKey, "," , assessmentDisplayName, ",", severity), "") | |
| extend subscription_0 = case(subscriptionId == "d7f4a4fc-c244-4c39-ba04-d057966fc499", "Dev Security Policy" ,subscriptionId == "99b5743f-82e1-4be5-9505-5e1a021a9d80", "Dev Security Engineering" ,subscriptionId == "08c24d17-e9de-4fc9-86c8-f515f9115775", "Publix Security" ,subscriptionId == "0010ff29-bbdc-45db-b20f-ccffaf186e74", "Tst Transportation" ,subscriptionId == "04b98ef4-7fb5-4c29-8be8-51072f46e7c9", "Stg Digital Services" ,subscriptionId == "05777095-f4e8-485a-ac36-6dcf32f2621e", "Stg Enterprise Customer Management" ,subscriptionId == "08cefb03-d0a7-4fc3-a603-556db1e11db9", "Prd Publix Support" ,subscriptionId == "0bfac841-7e18-4196-99b0-3486675ea1ad", "Prd Enterprise Application Services" ,subscriptionId == "0dae1266-c1d1-45ad-ab01-31a5dab58a08", "TBD Subscription for Use" ,subscriptionId == "1151ce36-c7ab-41b9-8296-b678e160739e", "Tst Sensitive Data Lake" ,subscriptionId == "1210eef4-cc7f-4eb1-b45c-7720af1b779c", "Prd Transportation" ,subscriptionId == "12667fd3-9ff9-4981-acfb-409408023464", "Stg Merchandising Systems" ,subscriptionId == "155d62db-88fa-4c90-9dc6-9891aeb2691a", "Stg Order Fulfilment" ,subscriptionId == "168c96a3-54ec-4441-95ce-d843135a9ed4", "Prd Customer PII Data" ,subscriptionId == "1958116a-d487-4fba-a929-6d2c61e9eb2f", "Dev Idea Spot" ,subscriptionId == "1ac6a1af-b5b9-4605-8eb3-39fafd1940a5", "Dev Corporate Compliance" ,subscriptionId == "1d873a12-ea07-43dc-b6e3-59842f91f82b", "Azure Training" ,subscriptionId == "1f845097-d628-47dc-9eac-49df2ef4b065", "Customer Digital Solutions" ,subscriptionId == "2544f514-0d43-472b-bb77-cdf666e601fd", "Publix Big Data Customer" ,subscriptionId == "25553ddd-d14c-47bc-9087-e190140bcb26", "Dev Cloud Native" ,subscriptionId == "275ace22-cabb-4559-a0a7-25c80c0dd404", "Dev Enterprise Collaboration Services" ,subscriptionId == "27a435eb-c0d5-4786-9ab4-d0354b616373", "Prd Enterprise Cloud Services" ,subscriptionId == "28a1d397-f8a4-4406-a704-880819c9cd7f", "HR Systems" ,subscriptionId == "2a53de6d-11ef-41da-ae9f-ef097b2b0998", "OMNI Channel Systems" ,subscriptionId == "361a6ad3-e3a2-4413-87e7-5046c83c99b4", "Dev Order Fulfillment" ,subscriptionId == "37184e79-01f3-4c52-adb2-c3c05001cc09", "Publix Cloud Services" ,subscriptionId == "3d24efb0-2fa3-42f4-8d04-a4072a42da92", "Dev Client Systems" ,subscriptionId == "3e714f8e-d1ea-478b-bcb8-134e2ddbe522", "Prd Publix Big Data" ,subscriptionId == "4003e801-b43c-4bfc-95bc-cbf1b26f7e84", "Dev Enterprise Cloud Services" ,subscriptionId == "44960c47-90d0-4abc-bdb9-29e62558db11", "Dev Automation" ,subscriptionId == "4617e6c4-2273-400d-a978-807a0bfb2762", "Dev Business Area Reporting" ,subscriptionId == "4a862e13-0986-45c5-8ee6-fcba8e68eee9", "Architecture Enterprise Dev/Test" ,subscriptionId == "53218ba9-8e38-429f-9487-73f117e088eb", "Stg Sensitive Data Lake" ,subscriptionId == "54560543-2ded-47ae-adc9-e94ee8ed610d", "Prd Business Area Reporting" ,subscriptionId == "56856008-d745-4982-aa2f-90ac46166902", "Prd Identity and Access Management" ,subscriptionId == "5a80d956-e288-4166-bf6c-81feb7cb567e", "Prd Enterprise Customer Management" ,subscriptionId == "5e972e6c-d5cb-42f5-b049-4ce166840fc0", "Stg Customer PII Data" ,subscriptionId == "60765744-2bf7-4536-88e9-56a8dd0addb9", "Prd Order Fulfilment" ,subscriptionId == "621fe016-e6b3-45e0-a8f5-dd2a269c0cfd", "Stg Recalls System" ,subscriptionId == "678f2e8e-9f3a-42cf-bb90-facb04bbb77a", "Prd Facilities" ,subscriptionId == "683241db-208b-48dc-820d-a71f63b3d6ef", "Prd Point of Sale" ,subscriptionId == "6f6bf7bc-a469-4793-b0b3-e795a5547191", "Dev Retail Store Systems" ,subscriptionId == "6fe28d9f-dd98-42be-be4c-2a99bfca756b", "Dev ECS Power Platform" ,subscriptionId == "700179c1-3170-4fa5-bc4d-bda62783acad", "Dev Marketing Analytics" ,subscriptionId == "744d9929-30a8-4516-8f22-dfa486f0d8ef", "Prd Remote Access" ,subscriptionId == "750b012f-9c13-469a-ba48-a30d7ebc7965", "Tst Corporate Compliance" ,subscriptionId == "7a6acb54-e0be-4473-b7ad-679826d87bcc", "Publix Big Data" ,subscriptionId == "7ac33120-39a4-400a-aa8d-9715cc79b800", "Dev Publix Support" ,subscriptionId == "7bf17a70-fce5-4995-a75d-a6bfbba769a2", "Merchandising Systems" ,subscriptionId == "844a94b2-4d8d-4350-afd1-18188d980097", "Dev Point of Sale" ,subscriptionId == "855ee462-2c87-4c15-9657-b4da45adaad9", "Prd Payments" ,subscriptionId == "858c6971-e8db-4772-a635-0f0004ecc721", "Prd Enterprise Collaboration Services" ,subscriptionId == "8b8e2106-d133-409e-8707-08c8e5f3e6c2", "Publix Security Regulated" ,subscriptionId == "938fbc5c-dbdd-461e-a0a4-39765cbc13db", "Stg Transportation" ,subscriptionId == "939ee073-8e47-4bc5-bddc-0393dbe00714", "Stg Labor Management" ,subscriptionId == "95419149-78bb-4820-ba25-8c25ceeabdf2", "Stg Payments" ,subscriptionId == "98889921-30f8-4135-8c5e-70cdcd22f0ab", "Dev Merchandising Systems" ,subscriptionId == "9a3e98fd-8075-4e45-ae62-d37397587f0b", "Prd Corporate Compliance" ,subscriptionId == "9b502153-a33e-4546-8ddc-25ca4d7bae3a", "Stg Identity and Access Management" ,subscriptionId == "9e2a4eb1-1a3f-41d0-9547-846ca275054d", "Azure Reservation Shared" ,subscriptionId == "a0d9ca58-b17a-4bca-950e-51d5890951ea", "Prd Merchandising Systems" ,subscriptionId == "a20c68ee-6138-4686-9ed8-1ecfef7acfa0", "Dev Transportation" ,subscriptionId == "a5ee436a-d174-4f6d-af7d-2bcc60d44f60", "Tst Customer PII Data" ,subscriptionId == "a6e9c3a7-2c83-44cd-a7c4-83f05e32966e", "Dev Sensitive Data Lake" ,subscriptionId == "a788636d-3909-4001-b47b-065635bd6ac4", "Dev Data Warehouse" ,subscriptionId == "a833c81b-b8c8-422d-b868-cdaef657e786", "Dev Labor Management" ,subscriptionId == "a89444da-488e-4628-bf59-88368f94f81f", "Stg Facilities" ,subscriptionId == "a99a9431-c94d-4184-8199-758f8ecb515d", "Stg Supply Chain" ,subscriptionId == "a9a63b17-b4bf-44f2-a389-b29694a76a83", "Tst Point of Sale" ,subscriptionId == "aaac8910-fd78-4783-bf45-1b20b6d5e1b3", "Publix Infrastructure" ,subscriptionId == "af09ef6a-6495-459f-8c65-d2064957c5ce", "Dev Payments" ,subscriptionId == "af4d78ce-778c-46c5-a659-4bb5850a3772", "Tst Recalls System" ,subscriptionId == "b145213f-ad95-4fea-ae6e-1fe6e966a237", "Dev Customer PII Data" ,subscriptionId == "b787961a-1cfc-4a1d-b261-e216ce0ea7d8", "Prd Digital Services" ,subscriptionId == "b8f92aab-10bf-4f79-aef4-ad33609f135c", "Prd Sensitive Data Lake" ,subscriptionId == "c022d4f9-fc09-4c0d-84be-1e3e4daf7727", "Dev Enterprise Customer Management" ,subscriptionId == "c15ca23c-5c49-45c5-b7f0-3e85e69cf294", "Dev Recalls System" ,subscriptionId == "c3bd2d5f-147c-4072-b0fd-3cd7c748b53f", "Stg Point of Sale" ,subscriptionId == "cb13c7b7-39c1-4742-b89c-84e5a3a56885", "Dev Enterprise Application Services" ,subscriptionId == "d4af33ba-ee0d-4af0-9d15-de20e3efc3d1", "Tst Publix Big Data" ,subscriptionId == "d8210ef1-8427-4ca6-91ce-e2844e48291e", "Stg Data Warehouse" ,subscriptionId == "da885ddc-c6be-4e5d-b106-235606ffc1fe", "Tst Enterprise Collaboration Services" ,subscriptionId == "da973561-09f4-4c15-8ab4-f93dd5cb4a52", "Dev Facilities" ,subscriptionId == "dd1dcde1-3336-4cac-8057-a3b2929d5a87", "Dev Publix Big Data" ,subscriptionId == "dd25d614-9f17-41b3-967e-234b70fba9e0", "Prd Marketing Analytics" ,subscriptionId == "de518c8d-86c9-41d7-92ec-558219c71f8b", "Dev Supply Chain" ,subscriptionId == "e181a830-98b0-404d-aeda-23d6c227276d", "Dev Publix Infrastructure" ,subscriptionId == "e1a4c369-8288-47d6-8da8-12744c8164bb", "Dev Digital Services" ,subscriptionId == "e21e3cd2-130e-43f6-904c-0535b4a9fed2", "Stg Enterprise Application Services" ,subscriptionId == "e9ca0bf5-a61e-4e9f-9a3d-3321d83ef0fc", "Stg Publix Support" ,subscriptionId == "ea72c74a-fb44-4977-8cbd-470d7ff58a41", "Prd Data Warehouse" ,subscriptionId == "ef0df3bc-70ca-422a-ae0b-2da6b8d9dd05", "Enterprise Application Services" ,subscriptionId == "f10308e8-d8c6-4c63-9771-e71ee8ed512c", "Dev Identity and Access Management" ,subscriptionId == "f58bf892-4676-43a0-9b2a-e445b8a29081", "Prd Supply Chain" ,subscriptionId == "f7c2ee4f-4fe7-419a-aa2e-6fab22d70c8c", "Tst Labor Management" ,subscriptionId == "f8be141b-cfc0-43c7-9bd8-671481d5790f", "Stg Corporate Compliance" ,subscriptionId == "fdceb77b-b74b-46b4-9e96-3e959be20a71", "Stg Publix Big Data" ,subscriptionId == "fe56117b-9e64-4c01-b51b-21e199227321", "Prd Recalls System" , "") | |
| extend subscriptionDisplayName = case(isnotempty(subscription_0), subscription_0, "") | |
| extend resourceName = case(resourceType == "subscription", subscriptionDisplayName, resourceName) | |
| summarize | |
assessmentsCount = dcount(assessmentKey), | |
notApplicableAssessmentsCount = countif(severity == "notapplicable"), | |
lowSeverityAssessmentsCount = countif(severity == "low"), | |
mediumSeverityAssessmentsCount = countif(severity == "medium"), | |
highSeverityAssessmentsCount = countif(severity == "high"), | |
healthyAssessmentsCount = countif(severity == "healthy"), | |
totalAssessmentsCount = countif(severity!=""), | |
assessmentsIdentifier = make_list(assessmentIdentifier), | |
exemptionType = max(exemptionType) | |
by resourceId, subscriptionId, resourceName, subscriptionDisplayName, resourceType, typeFullPath | |
| extend assessmentsSummary = pack( | |
"notapplicable", notApplicableAssessmentsCount, | |
"low", lowSeverityAssessmentsCount, | |
"medium", mediumSeverityAssessmentsCount, | |
"high", highSeverityAssessmentsCount, | |
"healthy", healthyAssessmentsCount) | |
| extend unhealthyAssessmentsCount = lowSeverityAssessmentsCount + mediumSeverityAssessmentsCount + highSeverityAssessmentsCount | |
| project resourceType, | |
exemptionType, | |
typeFullPath, | |
resourceId, | |
resourceName, | |
subscriptionDisplayName, | |
subscriptionId, | |
assessmentsIdentifier, | |
assessmentsSummary, | |
unhealthyAssessmentsCount, | |
totalAssessmentsCount | |
| extend resourceGroup = tolower(tostring(split(resourceId, "/")[4])) | |
// | extend resourceName = case(resourceType == "subscription", subscriptionDisplayName, resourceName) | |
| order by typeFullPath desc | |
//| where typeFullPath in ('microsoft.apimanagement/service', 'microsoft.databricks/workspaces', 'microsoft.eventgrid/topics', 'microsoft.eventhub/namespaces', 'microsoft.keyvault/vaults', 'microsoft.servicebus/namespaces', 'microsoft.sql/servers', 'microsoft.sql/servers/databases', 'microsoft.web/sites') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment