Operations Task Management Feedback Loop

Published May 06 2022 01:52 AM 1,033 Views
Microsoft

Background

Last month, I wrote about how work items in Azure DevOps can be automatically created as you receive alerts from Azure (Microsoft Sentinel Alerts and Incidents & Microsoft Defender for Cloud Alerts, Recommendations and Compliance Assessments).

In this post, I'm sharing how you can

  1. Create a webhook that will close/dismiss the Azure alert/incident as you resolve the work item (State = Resolved/Closed), and
  2. Reactivate the Azure alert/incident when the work item reopens (State != Resolved/Closed)

Solution Idea

Here's the high level diagram for this solution, see here for the logic app code.

raffertyuy_0-1652431045117.png

 

Note: The following alert types do not need to be dismissed

  • Sentinel Alerts
    • Alerts that are associated to incidents will be dismissed together with the incident
    • Alerts that are unassociated to incidents will age out according to the workspace retention policy
  • Defender Recommendation
    • The recommendation list will update as actions are made.
  • Defender Security Compliance
    • The security compliance assessment will update as actions are made.

Logic App Playbook

The above diagram can be implemented in a number of ways. In this post, I'm sharing how this was implemented using Azure Logic Apps. Azure Logic Apps is an Azure service that enables engineers to develop automated workflows and integrations using low-code/no-code rapidly.

If you are simply interested in deploying this logic app, you may head to this GitHub Repo, deploy from there, and skip to this article's next section. Otherwise, here are the details of how this was implemented.

Webhook Payload

After receiving the HTTP request, the first step is to parse the HTTP body using the Parse JSON action. Here are the steps I took to arrive at the below schema.

  1. Create a blank Logic App with an HTTP request trigger. (Take note of this URL for use in Azure DevOps)
  2. Change the state of a work item to trigger the webhook.
  3. Capture the payload sent by this webhook
  4. Remove properties that are not needed

This eventually led to this schema:

{
    "properties": {
        "detailedMessage": {
            "properties": {
                "html": {
                    "type": "string"
                },
                "markdown": {
                    "type": "string"
                },
                "text": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "eventType": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "message": {
            "properties": {
                "html": {
                    "type": "string"
                },
                "markdown": {
                    "type": "string"
                },
                "text": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "notificationId": {
            "type": "integer"
        },
        "publisherId": {
            "type": "string"
        },
        "resource": {
            "properties": {
                "fields": {
                    "properties": {
                        "System.State": {
                            "properties": {
                                "newValue": {
                                    "type": "string"
                                },
                                "oldValue": {
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        }
                    },
                    "type": "object"
                },
                "id": {
                    "type": "integer"
                },
                "revision": {
                    "properties": {
                        "fields": {
                            "properties": {
                                "Custom.ReferenceLink": {
                                    "type": "string"
                                },
                                "Custom.Source": {
                                    "type": "string"
                                },
                                "Custom.SourceID": {
                                    "type": "string"
                                },
                                "Custom.SourceType": {
                                    "type": "string"
                                },
                                "Custom.SubscriptionId": {
                                    "type": "string"
                                },
                                "System.ChangedBy": {
                                    "type": "string"
                                },
                                "System.Description": {
                                    "type": "string"
                                },
                                "System.Reason": {
                                    "type": "string"
                                },
                                "System.State": {
                                    "type": "string"
                                },
                                "System.WorkItemType": {
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        },
                        "id": {
                            "type": "integer"
                        },
                        "rev": {
                            "type": "integer"
                        }
                    },
                    "type": "object"
                },
                "workItemId": {
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "resourceContainers": {
            "properties": {
                "project": {
                    "properties": {
                        "baseUrl": {
                            "type": "string"
                        },
                        "id": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "subscriptionId": {
            "type": "string"
        }
    },
    "type": "object"
}

The main properties that are used are:

  • properties-->resource-->workItemId
  • properties-->resource->fields-->properties-->System.State
  • properties-->resource-->revision-->properties-->fields-->properties-->
    • Custom.Source
    • Custom.SourceType
    • Custom.SourceID
    • Custom.SubscriptionId
    • System.State
    • System.ChangedBy
  • properties-->resourceContainers-->project

Feedback loop for Sentinel Incidents

To close/reopen Sentinel Incidents, we are using the Update Incident action of the Microsoft Sentinel Logic App connector.

raffertyuy_1-1651826881762.png

 

The classification reason is an expression where I assume that if the State=Closed, then it is a true positive. Otherwise, it's undetermined.

if(equals(body('Parse_HTTP_request_JSON_body')?['resource']?['revision']?['fields']?['System.State'],'Closed'),'TruePositive - SuspiciousActivity','Undetermined')

Additionally, we can add a comment to the incident using the Add Comment to Incident) action.

raffertyuy_2-1651826911682.png

After closing a workitem, the result will look like this:

raffertyuy_3-1651826931646.png

Feedback loop for Defender Alerts

To dismiss/reactivate Defender Alerts, we are using the HTTP action of the HTTP connector. This is mainly because there is no Microsoft Defender logic app action that we can use directly at the time of this article.

The REST APIs that are relevant to our use case are as follows:

Before calling these APIs, please make sure that:

  • The Logic App identity is configured to have a Managed Identity.
  • The managed identity is given Security Admin permissions at the subscription level. See here.

raffertyuy_4-1651826953281.png

After closing a workitem, the result will look like this:

raffertyuy_5-1651826969177.png

Note: For reactivating alerts, call the /activate API instead.

Azure DevOps Webhooks

Webhooks for work item changes are triggered by configuring Service Hooks in the Azure DevOps --> Project --> Settings.

Since we are only interested in state changes, we are using the trigger Work item updated on State change. This will call the logic app REST API when a work item is updated, using the URL that was generated from the logic app above.

Here are some screenshots of how it is configured:

raffertyuy_6-1651827018383.png

raffertyuy_7-1651827029910.png

Tip: When you are making updates to the custom process that will affect the payload schema, you will have to Edit/Save the this configuration for Azure DevOps to recognize the changes and send an updated payload.

Conclusion

In summary, using Azure Logic Apps and Azure DevOps, we have achieved a way for the operations team to more effectively track and task manage alerts coming from Microsoft Sentinel and Microsoft Defender for Cloud using Azure Boards.

  • In my last post, I shared how we can automate the creation of Azure DevOps work items from Azure
  • In this post, I shared how to resolve/dismiss alerts as work item states are resolved.
%3CLINGO-SUB%20id%3D%22lingo-sub-3330954%22%20slang%3D%22en-US%22%3EOperations%20Task%20Management%20Feedback%20Loop%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3330954%22%20slang%3D%22en-US%22%3E%3CH2%20id%3D%22background%22%20id%3D%22toc-hId-418578651%22%20id%3D%22toc-hId-418599733%22%3EBackground%3C%2FH2%3E%0A%3CP%3ELast%20month%2C%20I%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-architecture-blog%2Foperations-task-management-for-azure-alerts%2Fba-p%2F3253388%22%20target%3D%22_self%22%3Ewrote%3C%2FA%3E%20about%20how%20work%20items%20in%20Azure%20DevOps%20can%20be%20automatically%20created%20as%20you%20receive%20alerts%20from%20Azure%20(Microsoft%20Sentinel%20Alerts%20and%20Incidents%20%26amp%3B%20Microsoft%20Defender%20for%20Cloud%20Alerts%2C%20Recommendations%20and%20Compliance%20Assessments).%3C%2FP%3E%0A%3CP%3EIn%20this%20post%2C%20I'm%20sharing%20how%20you%20can%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3ECreate%20a%20webhook%20that%20will%20close%2Fdismiss%20the%20Azure%20alert%2Fincident%20as%20you%20resolve%20the%20work%20item%20(State%20%3D%20Resolved%2FClosed)%2C%20and%3C%2FLI%3E%0A%3CLI%3EReactivate%20the%20Azure%20alert%2Fincident%20when%20the%20work%20item%20reopens%20(State%20!%3D%20Resolved%2FClosed)%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CH2%20id%3D%22solution-idea%22%20id%3D%22toc-hId--1388875812%22%20id%3D%22toc-hId--1388854730%22%3ESolution%20Idea%3C%2FH2%3E%0A%3CP%3EHere's%20the%20high%20level%20diagram%20for%20this%20solution%2C%20see%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fraffertyuy%2FMicrosoft-DevOps-Feedback-Loop%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehere%3C%2FA%3E%20for%20the%20logic%20app%20code.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22raffertyuy_0-1652431045117.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F371383i0A50FD02A0D6B4DE%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22raffertyuy_0-1652431045117.png%22%20alt%3D%22raffertyuy_0-1652431045117.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CEM%3ENote%3A%20The%20following%20alert%20types%20do%20not%20need%20to%20be%20dismissed%3C%2FEM%3E%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CEM%3E%3CSTRONG%3ESentinel%20Alerts%3C%2FSTRONG%3E%3C%2FEM%3E%3CUL%3E%0A%3CLI%3E%3CEM%3EAlerts%20that%20are%20associated%20to%20incidents%20will%20be%20dismissed%20together%20with%20the%20incident%3C%2FEM%3E%3C%2FLI%3E%0A%3CLI%3E%3CEM%3EAlerts%20that%20are%20unassociated%20to%20incidents%20will%20age%20out%20according%20to%20the%20workspace%20retention%20policy%3C%2FEM%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3CLI%3E%3CEM%3E%3CSTRONG%3EDefender%20Recommendation%3C%2FSTRONG%3E%3C%2FEM%3E%3CUL%3E%0A%3CLI%3E%3CEM%3EThe%20recommendation%20list%20will%20update%20as%20actions%20are%20made.%3C%2FEM%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3CLI%3E%3CEM%3E%3CSTRONG%3EDefender%20Security%20Compliance%3C%2FSTRONG%3E%3C%2FEM%3E%3CUL%3E%0A%3CLI%3E%3CEM%3EThe%20security%20compliance%20assessment%20will%20update%20as%20actions%20are%20made.%3C%2FEM%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CH2%20id%3D%22logic-app-playbook%22%20id%3D%22toc-hId-1098637021%22%20id%3D%22toc-hId-1098658103%22%3ELogic%20App%20Playbook%3C%2FH2%3E%0A%3CP%3EThe%20above%20diagram%20can%20be%20implemented%20in%20a%20number%20of%20ways.%20In%20this%20post%2C%20I'm%20sharing%20how%20this%20was%20implemented%20using%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Flogic-apps%2Flogic-apps-overview%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EAzure%20Logic%20Apps%3C%2FA%3E.%20%3CEM%3EAzure%20Logic%20Apps%3C%2FEM%3E%20is%20an%20Azure%20service%20that%20enables%20engineers%20to%20develop%20automated%20workflows%20and%20integrations%20using%20low-code%2Fno-code%20rapidly.%3C%2FP%3E%0A%3CP%3EIf%20you%20are%20simply%20interested%20in%20deploying%20this%20logic%20app%2C%20you%20may%20head%20to%20this%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fraffertyuy%2FMicrosoft-DevOps-Feedback-Loop%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EGitHub%20Repo%3C%2FA%3E%2C%20deploy%20from%20there%2C%20and%20skip%20to%20this%20article's%20%3CA%20href%3D%22%23azure-devops-webhooks%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Enext%20section%3C%2FA%3E.%20Otherwise%2C%20here%20are%20the%20details%20of%20how%20this%20was%20implemented.%3C%2FP%3E%0A%3CH3%20id%3D%22webhook-payload%22%20id%3D%22toc-hId-1789198495%22%20id%3D%22toc-hId-1789219577%22%3EWebhook%20Payload%3C%2FH3%3E%0A%3CP%3EAfter%20receiving%20the%20HTTP%20request%2C%20the%20first%20step%20is%20to%20parse%20the%20HTTP%20body%20using%20the%3CCODE%3EParse%20JSON%3C%2FCODE%3Eaction.%20Here%20are%20the%20steps%20I%20took%20to%20arrive%20at%20the%20below%20schema.%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3ECreate%20a%20blank%20Logic%20App%20with%20an%20HTTP%20request%20trigger.%20(Take%20note%20of%20this%20URL%20for%20use%20in%20Azure%20DevOps)%3C%2FLI%3E%0A%3CLI%3EChange%20the%20state%20of%20a%20work%20item%20to%20trigger%20the%20webhook.%3C%2FLI%3E%0A%3CLI%3ECapture%20the%20payload%20sent%20by%20this%20webhook%3C%2FLI%3E%0A%3CLI%3ERemove%20properties%20that%20are%20not%20needed%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3EThis%20eventually%20led%20to%20this%20schema%3A%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22lang-json%22%3E%7B%0A%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22detailedMessage%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22html%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22markdown%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22text%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22eventType%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22id%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22message%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22html%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22markdown%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22text%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22notificationId%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22integer%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22publisherId%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22resource%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22fields%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22System.State%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22newValue%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22oldValue%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22id%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22integer%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22revision%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22fields%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22Custom.ReferenceLink%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22Custom.Source%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22Custom.SourceID%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22Custom.SourceType%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22Custom.SubscriptionId%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22System.ChangedBy%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22System.Description%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22System.Reason%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22System.State%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22System.WorkItemType%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22id%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22integer%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22rev%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22integer%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22workItemId%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22integer%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22resourceContainers%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22project%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22properties%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22baseUrl%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22id%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22subscriptionId%22%3C%2FSPAN%3E%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22string%22%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%3CSPAN%20class%3D%22hljs-attr%22%3E%22type%22%3C%2FSPAN%3E%3A%20%3CSPAN%20class%3D%22hljs-string%22%3E%22object%22%3C%2FSPAN%3E%0A%7D%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EThe%20main%20properties%20that%20are%20used%20are%3A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3Eproperties--%26gt%3Bresource--%26gt%3BworkItemId%3C%2FLI%3E%0A%3CLI%3Eproperties--%26gt%3Bresource-%26gt%3Bfields--%26gt%3Bproperties--%26gt%3BSystem.State%3C%2FLI%3E%0A%3CLI%3Eproperties--%26gt%3Bresource--%26gt%3Brevision--%26gt%3Bproperties--%26gt%3Bfields--%26gt%3Bproperties--%26gt%3B%3CUL%3E%0A%3CLI%3ECustom.Source%3C%2FLI%3E%0A%3CLI%3ECustom.SourceType%3C%2FLI%3E%0A%3CLI%3ECustom.SourceID%3C%2FLI%3E%0A%3CLI%3ECustom.SubscriptionId%3C%2FLI%3E%0A%3CLI%3ESystem.State%3C%2FLI%3E%0A%3CLI%3ESystem.ChangedBy%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3CLI%3Eproperties--%26gt%3BresourceContainers--%26gt%3Bproject%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CH3%20id%3D%22feedback-loop-for-sentinel-incidents%22%20id%3D%22toc-hId--18255968%22%20id%3D%22toc-hId--18234886%22%3EFeedback%20loop%20for%20Sentinel%20Incidents%3C%2FH3%3E%0A%3CP%3ETo%20close%2Freopen%20Sentinel%20Incidents%2C%20we%20are%20using%20the%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fconnectors%2Fazuresentinel%2F%23update-incident%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EUpdate%20Incident%3C%2FA%3E%20action%20of%20the%20Microsoft%20Sentinel%20Logic%20App%20connector.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22raffertyuy_1-1651826881762.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369748i7E99518F333053B5%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22raffertyuy_1-1651826881762.png%22%20alt%3D%22raffertyuy_1-1651826881762.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20classification%20reason%20is%20an%20expression%20where%20I%20assume%20that%20if%20the%3CCODE%3EState%3DClosed%3C%2FCODE%3E%2C%20then%20it%20is%20a%20true%20positive.%20Otherwise%2C%20it's%20undetermined.%3C%2FP%3E%0A%3CPRE%3E%3CCODE%3Eif(%3CSPAN%20class%3D%22hljs-name%22%3Eequals%3C%2FSPAN%3E(%3CSPAN%20class%3D%22hljs-name%22%3Ebody%3C%2FSPAN%3E('Parse_HTTP_request_JSON_body')%3F%5B'resource'%5D%3F%5B'revision'%5D%3F%5B'fields'%5D%3F%5B'System.State'%5D%2C'Closed')%2C'TruePositive%20-%20SuspiciousActivity'%2C'Undetermined')%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EAdditionally%2C%20we%20can%20add%20a%20comment%20to%20the%20incident%20using%20the%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fconnectors%2Fazuresentinel%2F%23add-comment-to-incident-(v3%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EAdd%20Comment%20to%20Incident%3C%2FA%3E)%20action.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22raffertyuy_2-1651826911682.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369752i5D414F425CB8ADDB%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22raffertyuy_2-1651826911682.png%22%20alt%3D%22raffertyuy_2-1651826911682.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EAfter%20closing%20a%20workitem%2C%20the%20result%20will%20look%20like%20this%3A%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22raffertyuy_3-1651826931646.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369753i98BD4E0111FF401F%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22raffertyuy_3-1651826931646.png%22%20alt%3D%22raffertyuy_3-1651826931646.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CH3%20id%3D%22feedback-loop-for-defender-alerts%22%20id%3D%22toc-hId--1825710431%22%20id%3D%22toc-hId--1825689349%22%3EFeedback%20loop%20for%20Defender%20Alerts%3C%2FH3%3E%0A%3CP%3ETo%20dismiss%2Freactivate%20Defender%20Alerts%2C%20we%20are%20using%20the%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fconnectors%2Fconnectors-native-http%23add-an-http-action%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EHTTP%3C%2FA%3E%20action%20of%20the%20HTTP%20connector.%20This%20is%20mainly%20because%20there%20is%20no%20Microsoft%20Defender%20logic%20app%20action%20that%20we%20can%20use%20directly%20at%20the%20time%20of%20this%20article.%3C%2FP%3E%0A%3CP%3EThe%20REST%20APIs%20that%20are%20relevant%20to%20our%20use%20case%20are%20as%20follows%3A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CSTRONG%3EDismissing%20alerts%3C%2FSTRONG%3E%3A%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Frest%2Fapi%2Fsecuritycenter%2Falerts%2Fupdate-subscription-level-state-to-dismiss%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Frest%2Fapi%2Fsecuritycenter%2Falerts%2Fupdate-subscription-level-state-to-dismiss%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3EReactivating%20alerts%3C%2FSTRONG%3E%3A%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Frest%2Fapi%2Fsecuritycenter%2Falerts%2Fupdate-subscription-level-state-to-activate%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Frest%2Fapi%2Fsecuritycenter%2Falerts%2Fupdate-subscription-level-state-to-activate%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3EBefore%20calling%20these%20APIs%2C%20please%20make%20sure%20that%3A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3EThe%20Logic%20App%20identity%20is%20configured%20to%20have%20a%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Flogic-apps%2Fcreate-managed-service-identity%3Ftabs%3Dconsumption%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EManaged%20Identity%3C%2FA%3E.%3C%2FLI%3E%0A%3CLI%3EThe%20managed%20identity%20is%20given%20%3CSTRONG%3ESecurity%20Admin%3C%2FSTRONG%3E%20permissions%20at%20the%20%3CEM%3Esubscription%20level%3C%2FEM%3E.%20See%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdefender-for-cloud%2Fpermissions%23roles-and-allowed-actions%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehere%3C%2FA%3E.%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22raffertyuy_4-1651826953281.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369754iBEE5AD120ED8C855%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22raffertyuy_4-1651826953281.png%22%20alt%3D%22raffertyuy_4-1651826953281.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EAfter%20closing%20a%20workitem%2C%20the%20result%20will%20look%20like%20this%3A%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22raffertyuy_5-1651826969177.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369755i4AF323D84AAAC0BF%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22raffertyuy_5-1651826969177.png%22%20alt%3D%22raffertyuy_5-1651826969177.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBLOCKQUOTE%3E%0A%3CP%3ENote%3A%20For%20reactivating%20alerts%2C%20call%20the%3CCODE%3E%2Factivate%3C%2FCODE%3EAPI%20instead.%3C%2FP%3E%0A%3C%2FBLOCKQUOTE%3E%0A%3CH2%20id%3D%22azure-devops-webhooks%22%20id%3D%22toc-hId--1836213535%22%20id%3D%22toc-hId--1836192453%22%3EAzure%20DevOps%20Webhooks%3C%2FH2%3E%0A%3CP%3EWebhooks%20for%20work%20item%20changes%20are%20triggered%20by%20configuring%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fdevops%2Fservice-hooks%2Fservices%2Fwebhooks%3Fview%3Dazure-devops%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EService%20Hooks%3C%2FA%3E%20in%20the%20Azure%20DevOps%20--%26gt%3B%20Project%20--%26gt%3B%20Settings.%3C%2FP%3E%0A%3CP%3ESince%20we%20are%20only%20interested%20in%20%3CEM%3Estate%20changes%3C%2FEM%3E%2C%20we%20are%20using%20the%20trigger%3CCODE%3EWork%20item%20updated%3C%2FCODE%3Eon%20%3CEM%3EState%3C%2FEM%3E%20change.%20This%20will%20call%20the%20logic%20app%20REST%20API%20when%20a%20work%20item%20is%20updated%2C%20using%20the%20URL%20that%20was%20generated%20from%20the%20logic%20app%20above.%3C%2FP%3E%0A%3CP%3EHere%20are%20some%20screenshots%20of%20how%20it%20is%20configured%3A%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22raffertyuy_6-1651827018383.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369756iE187775BD2F403EB%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22raffertyuy_6-1651827018383.png%22%20alt%3D%22raffertyuy_6-1651827018383.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22raffertyuy_7-1651827029910.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369757iBBC6BB99C1E9B864%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22raffertyuy_7-1651827029910.png%22%20alt%3D%22raffertyuy_7-1651827029910.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBLOCKQUOTE%3E%0A%3CP%3ETip%3A%20When%20you%20are%20making%20updates%20to%20the%20custom%20process%20that%20will%20affect%20the%20payload%20schema%2C%20you%20will%20have%20to%20Edit%2FSave%20the%20this%20configuration%20for%20Azure%20DevOps%20to%20recognize%20the%20changes%20and%20send%20an%20updated%20payload.%3C%2FP%3E%0A%3C%2FBLOCKQUOTE%3E%0A%3CH2%20id%3D%22conclusion%22%20id%3D%22toc-hId-651299298%22%20id%3D%22toc-hId-651320380%22%3EConclusion%3C%2FH2%3E%0A%3CP%3EIn%20summary%2C%20using%20Azure%20Logic%20Apps%20and%20Azure%20DevOps%2C%20we%20have%20achieved%20a%20way%20for%20the%20operations%20team%20to%20more%20effectively%20track%20and%20task%20manage%20alerts%20coming%20from%20Microsoft%20Sentinel%20and%20Microsoft%20Defender%20for%20Cloud%20using%20Azure%20Boards.%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3EIn%20my%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-architecture-blog%2Foperations-task-management-for-azure-alerts%2Fba-p%2F3253388%22%20target%3D%22_self%22%3Elast%20post%3C%2FA%3E%2C%20I%20shared%20how%20we%20can%20automate%20the%20creation%20of%20Azure%20DevOps%20work%20items%20from%20Azure%3C%2FLI%3E%0A%3CLI%3EIn%20this%20post%2C%20I%20shared%20how%20to%20resolve%2Fdismiss%20alerts%20as%20work%20item%20states%20are%20resolved.%3C%2FLI%3E%0A%3C%2FUL%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-3330954%22%20slang%3D%22en-US%22%3E%3CDIV%3E%0A%3CDIV%3E%3CSPAN%3ELast%20month%2C%20I%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-architecture-blog%2Foperations-task-management-for-azure-alerts%2Fba-p%2F3253388%22%20target%3D%22_blank%22%3Ewrote%26nbsp%3B%3C%2FA%3E%3C%2FSPAN%3E%3CSPAN%3Eabout%20how%20work%20items%20in%20Azure%20DevOps%20can%20be%20automatically%20created%20as%20you%20receive%20alerts%20from%20Azure%20(Microsoft%20Sentinel%20Alerts%20and%20Incidents%20%26amp%3B%20Microsoft%20Defender%20for%20Cloud%20Alerts%2C%20Recommendations%20and%20Compliance%20Assessments).%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3EIn%20this%20post%2C%20I'm%20sharing%20how%20you%20can%3C%2FSPAN%3E%3C%2FDIV%3E%0A%3CDIV%3E%3CSPAN%3E1.%3C%2FSPAN%3E%3CSPAN%3E%20Create%20a%20webhook%20that%20will%20close%2Fdismiss%20the%20Azure%20alert%2Fincident%20as%20you%20resolve%20the%20work%20item%20(State%20%3D%20Resolved%2FClosed)%2C%20and%3C%2FSPAN%3E%3C%2FDIV%3E%0A%3CDIV%3E%3CSPAN%3E2.%3C%2FSPAN%3E%3CSPAN%3E%20Reactivate%20the%20Azure%20alert%2Fincident%20when%20the%20work%20item%20reopens%20(State%20!%3D%20Resolved%2FClosed)%20%3C%2FSPAN%3E%3C%2FDIV%3E%0A%3C%2FDIV%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-3330954%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EApps%20%26amp%3B%20DevOps%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Version history
Last update:
‎May 13 2022 01:37 AM
Updated by: