Skip to content

Commit 4498ad3

Browse files
CSOAR-3221 : API Error NoRegisteredProviderFound on MS Sentinel Integration (#5326)
* CSOAR-3221 : API Error NoRegisteredProviderFound on MS Sentinel Integration * CSOAR-3221 - added more info * CSOAR-3221 : modified content * Updates from review --------- Co-authored-by: John Pipkin <[email protected]>
1 parent a120d43 commit 4498ad3

File tree

2 files changed

+261
-3
lines changed
  • docs/platform-services/automation-service/app-central/integrations
  • static/img/platform-services/automation-service/app-central/integrations/microsoft-sentinel

2 files changed

+261
-3
lines changed

docs/platform-services/automation-service/app-central/integrations/microsoft-sentinel.md

Lines changed: 261 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,47 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
66

77
<img src={useBaseUrl('/img/platform-services/automation-service/app-central/logos/microsoft-sentinel.png')} alt="microsoft-sentinel" width="100"/>
88

9-
***Version: 1.6
10-
Updated: Oct 29, 2024***
9+
***Version: 1.7
10+
Updated: April 26, 2025***
1111

1212
Microsoft Sentinel is a cloud-native security information and event manager (SIEM) platform that uses built-in AI to help analyze large volumes of data across an enterprise.
1313

14+
## Overview
15+
16+
### Purpose
17+
18+
This documentation outlines the Microsoft Sentinel integration, providing details on its capabilities, usage, and support for managing security incidents.
19+
20+
### Use cases
21+
22+
* Automatically fetch and process security incidents from Sentinel.
23+
* Review incident details, comments, and related entities to streamline triage.
24+
* Trigger automated incident management workflows, such as updating incident status, severity, or ownership using Update Incident, or adding context through Add Incident Comment.
25+
* Remove false positives or resolved alerts by leveraging the Delete Incident action.
26+
27+
### Supported versions
28+
29+
* Microsoft Sentinel API (2023-02-01 and compatible preview versions)
30+
* Azure Resource Manager endpoints
31+
* Compatible with Azure Workspaces in supported regions like uksouth, westeurope, etc.
32+
33+
### Prerequisites
34+
* Active Azure subscription with Microsoft Sentinel enabled
35+
* A configured Log Analytics workspace
36+
* Application registration with:
37+
* Client ID
38+
* Client Secret
39+
* Tenant ID
40+
* API permissions:
41+
* Microsoft.SecurityInsights/*
42+
* Microsoft.OperationalInsights/*
43+
44+
### Limitations
45+
* Pagination (nextLink) must be handled carefully to avoid incorrect URL construction.
46+
* Certain API versions may not be available in all regions.
47+
* Incident response APIs may have throttling under the high load.
48+
* Only incidents created after a specified timestamp can be fetched using filters.
49+
1450
## Actions
1551

1652
* **List Incident Comments** (*Enrichment*) - Gather all comments for a specific incident.
@@ -30,8 +66,226 @@ import IntegrationsAuth from '../../../../reuse/integrations-authentication.md';
3066

3167
<IntegrationsAuth/>
3268

69+
* Tenant
70+
* Client ID
71+
* Client Secret
72+
* Subscription ID
73+
* Workspace Name
74+
* Resource Group
75+
* Automation Engine<br/><img src={useBaseUrl('/img/platform-services/automation-service/app-central/integrations/microsoft-sentinel/ms-sentinel.png')} style={{border:'1px solid gray'}} alt="Edit Resource for AWS WAF" width="400"/>
76+
77+
3378
For information about Microsoft Sentinel, see [Microsoft Sentinel documentation](https://learn.microsoft.com/en-us/azure/sentinel/).
3479

80+
## Usage
81+
82+
### Basic usage
83+
* Configure credentials (Tenant ID, Client ID, Client Secret).
84+
* Use the List Incidents action to pull incidents.
85+
* Apply filtering with createdTimeUtc or severity.
86+
* Use containment actions (for example, Update Incident) to manage active incidents.
87+
88+
### Advanced usage
89+
* Automate continuous incident ingestion using Microsoft Sentinel Incidents Daemon.
90+
* Use enrichment actions like List Incident Entities V2 to map Sentinel entities to your SOAR platform.
91+
* Use Search Into Sentinel Events for deep telemetry analysis.
92+
* Chain incident updates and comment logging for full case management automation.
93+
94+
## API reference
95+
96+
### Configuration
97+
Environment variables or parameters:
98+
* tenant
99+
* client id
100+
* client secret
101+
* subscription id
102+
* resource group
103+
* workspace name
104+
* automation bridge
105+
* Optional: api root, login endpoint, proxy, verify_ssl, CSOAR API URL, Access ID, Access Key
106+
107+
### Containment APIs
108+
109+
#### Update Incident
110+
* Method: PATCH
111+
* Action: Update Incident
112+
* Required Parameters:
113+
* incident_id (string)
114+
* status (Active | Closed) (optional)
115+
* owner (optional)
116+
* classification (optional)
117+
* severity (optional) etc.
118+
119+
```python title="Sample Request (Python)"
120+
response = requests.patch(
121+
url=f"https://management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.OperationalInsights/workspaces/{workspace_name}/providers/Microsoft.SecurityInsights/incidents/{incident_id}?api-version=2023-02-01",
122+
headers=headers,
123+
json={
124+
"properties": {
125+
"status": "Closed",
126+
"classification": "TruePositive",
127+
"owner": {"userPrincipalName": "[email protected]"},
128+
"severity": "High"
129+
}
130+
}
131+
)
132+
```
133+
134+
```json title="Sample Response (JSON)"
135+
{
136+
"id": "/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.OperationalInsights/workspaces/{workspace_name}/providers/Microsoft.SecurityInsights/incidents/{incident_id}",
137+
"properties": {
138+
"status": "Closed",
139+
"classification": "TruePositive",
140+
"owner": {"userPrincipalName": "[email protected]"},
141+
"severity": "High"
142+
}
143+
}
144+
```
145+
#### Delete Incident
146+
* Method: DELETE
147+
* Action: Delete Incident
148+
* Required Parameters:
149+
* incident_id (string)
150+
151+
```python title="Sample Request (Python)"
152+
response = requests.delete(
153+
url=f"https://management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.OperationalInsights/workspaces/{workspace_name}/providers/Microsoft.SecurityInsights/incidents/{incident_id}?api-version=2023-02-01",
154+
headers=headers
155+
)
156+
```
157+
158+
```
159+
Success Response:
160+
161+
Code: 204 No Content
162+
163+
Body: None (successful deletion)
164+
```
165+
166+
#### Add Incident Comment
167+
* Method: POST
168+
* Action: Add Incident Comment
169+
* Required Parameters:
170+
* incident_id (string)
171+
* comment (string)
172+
173+
```python title="Sample Request (Python)"
174+
response = requests.post(
175+
url=f"https://management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.OperationalInsights/workspaces/{workspace_name}/providers/Microsoft.SecurityInsights/incidents/{incident_id}/comments/{comment_id}?api-version=2023-02-01",
176+
headers=headers,
177+
json={
178+
"properties": {
179+
"message": comment
180+
}
181+
}
182+
)
183+
```
184+
185+
```json title="Sample Response (JSON)"
186+
{
187+
"id": "/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.OperationalInsights/workspaces/{workspace_name}/providers/Microsoft.SecurityInsights/incidents/{incident_id}/comments/{comment_id}",
188+
"properties": {
189+
"message": "Investigated and updated status."
190+
}
191+
}
192+
```
193+
194+
### Enrichment APIs
195+
196+
#### List Incidents
197+
* Method: Get
198+
* Action: List Incidents
199+
* Parameters: filter, order By, limit, skip token
200+
201+
#### Get Incident
202+
* Method: Get
203+
* Action: Get Incident
204+
* Required Parameters: incident_id
205+
206+
```python title="Sample Request (Python)"
207+
response = requests.get(
208+
f"https://management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.OperationalInsights/workspaces/{workspace_name}/providers/Microsoft.SecurityInsights/incidents/{incident_id}?api-version=2023-02-01",
209+
headers=headers
210+
)
211+
```
212+
```json title="Sample Response (JSON)"
213+
{
214+
"id": "/subscriptions/<sub_id>/.../incidents/<incident_id>",
215+
"name": "<incident_id>",
216+
"type": "Microsoft.SecurityInsights/incidents",
217+
"properties": {
218+
"title": "Suspicious Sign-In Attempt",
219+
"severity": "High",
220+
"status": "Active",
221+
"createdTimeUtc": "2025-05-07T11:35:00Z",
222+
"lastModifiedTimeUtc": "2025-05-08T09:00:00Z"
223+
}
224+
}
225+
```
226+
227+
#### List Incident Comments
228+
* Method: Get
229+
* Action: List Incident Comments
230+
* Required Parameters: incident_id
231+
232+
#### List Incident Entities / V2
233+
* Method: Get
234+
* Action: List Incident Entities / V2
235+
* Required Parameters: incident_id
236+
237+
#### List Incident Entities
238+
* Method: Get
239+
* Action: List Incident Entities
240+
* Required Parameters: incident_id
241+
242+
#### List Incident Alerts
243+
* Method: Get
244+
* Action: List Incident Alerts
245+
* Required Parameters: incident_id
246+
247+
### Rate Limits and Quotas
248+
* Azure REST API limits: 12,000 requests/hour per subscription.
249+
* Excess requests may trigger HTTP 429 ("Too Many Requests").
250+
251+
#### Troubleshooting
252+
| Issue | Resolution |
253+
| :-- |:-- |
254+
| ResourceNotFound on pagination | Ensure you're not appending query parameters to the nextLink. Use as-is. |
255+
| 403 Forbidden | Validate token scope and check if the app has required permissions. |
256+
| nextLink missing or invalid | Always check for nextLink in the response and follow without modifying. |
257+
258+
### FAQ
259+
260+
#### What permissions are required to use this integration?
261+
262+
To access Microsoft Sentinel incidents and related data, the service principal must have Microsoft Sentinel Reader or Contributor role on the workspace. Additionally, it needs Reader access at the subscription or resource group level.
263+
264+
#### Is incident deletion reversible?
265+
266+
No, deleting an incident via API is permanent.
267+
268+
#### Is pagination handled automatically?
269+
270+
Yes. The integration supports auto-pagination via the nextLink field returned in API responses.
271+
272+
#### Is the Daemon action customizable for time ranges?
273+
274+
Yes, it supports a createdTime parameter to control how far back incidents are fetched.
275+
276+
#### Why am I getting a Resource Not Found error?
277+
This may happen if:
278+
* The workspace name, resource group, or subscription ID is incorrect.
279+
* The incident or entity ID does not exist.
280+
* The workspace is in a different region than expected.
281+
* Or code is appending query parameters to a nextLink, which already contains them.
282+
283+
### Support
284+
* For issues, questions, or improvements:
285+
* Azure Support: Open a support request via [Azure Portal](https://portal.azure.com/)
286+
* Microsoft [Q&A](https://learn.microsoft.com/answers)
287+
* GitHub/Community Forums (if applicable): Check if your integration has a public repo for collaboration
288+
35289
## Change Log
36290

37291
* September 2, 2020 - First upload
@@ -52,4 +306,8 @@ For information about Microsoft Sentinel, see [Microsoft Sentinel documentation]
52306
+ Updated the integration by adding new fields (**Cloud SOAR URL API URL**, **Access ID** , **Access Key**) to the configuration
53307
+ October 29, 2024 (v1.6)
54308
+ Updated **List Incident Entities V2** action in the output field.
55-
309+
+ April 26, 2025 (v1.7)
310+
+ Enhanced **Microsoft Sentinel Incidents Daemon** Added support to seamlessly fetch subsequent paginated data.
311+
312+
### Deprecation notices
313+
* NA
203 KB
Loading

0 commit comments

Comments
 (0)