Skip to content

Commit 17a91b5

Browse files
CSOAR-3221 - added more info
1 parent c18520b commit 17a91b5

File tree

2 files changed

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

2 files changed

+254
-1
lines changed

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

Lines changed: 254 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,42 @@ 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 and automating responses within Microsoft Sentinel.
19+
20+
### Use cases
21+
22+
* Automatically fetch and process security incidents from Sentinel.
23+
* Enrich incidents with contextual data from third-party sources.
24+
* Trigger automated containment actions such as disabling users or isolating machines.
25+
* Provide a unified security operations view through integration with external systems.
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,222 @@ 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/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 (e.g., 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+
### Configuration
96+
Environment variables or parameters:
97+
* tenant_id
98+
* client_id
99+
* client_secret
100+
* subscription_id
101+
* resource_group
102+
* workspace_name
103+
* Optional: api_root, login_endpoint, proxy, verify_ssl
104+
105+
### Containment APIs
106+
#### Update Incident
107+
* Method: PATCH
108+
* Action: Update Incident
109+
* Required Parameters:
110+
* incident_id (string)
111+
* status (Active | Closed) (optional)
112+
* owner (optional)
113+
* classification (optional)
114+
* severity (optional) etc.
115+
116+
```python title="Sample Request (Python)"
117+
response = requests.patch(
118+
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",
119+
headers=headers,
120+
json={
121+
"properties": {
122+
"status": "Closed",
123+
"classification": "TruePositive",
124+
"owner": {"userPrincipalName": "[email protected]"},
125+
"severity": "High"
126+
}
127+
}
128+
)
129+
```
130+
131+
```json title="Sample Response (JSON)"
132+
{
133+
"id": "/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.OperationalInsights/workspaces/{workspace_name}/providers/Microsoft.SecurityInsights/incidents/{incident_id}",
134+
"properties": {
135+
"status": "Closed",
136+
"classification": "TruePositive",
137+
"owner": {"userPrincipalName": "[email protected]"},
138+
"severity": "High"
139+
}
140+
}
141+
```
142+
#### Delete Incident
143+
* Method: DELETE
144+
* Action: Delete Incident
145+
* Required Parameters:
146+
* incident_id (string)
147+
148+
```python title="Sample Request (Python)"
149+
response = requests.delete(
150+
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",
151+
headers=headers
152+
)
153+
```
154+
155+
```
156+
Success Response:
157+
158+
Code: 204 No Content
159+
160+
Body: None (successful deletion)
161+
```
162+
163+
#### Add Incident Comment
164+
* Method: POST
165+
* Action: Add Incident Comment
166+
* Required Parameters:
167+
* incident_id (string)
168+
* comment (string)
169+
170+
```python title="Sample Request (Python)"
171+
response = requests.post(
172+
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",
173+
headers=headers,
174+
json={
175+
"properties": {
176+
"message": comment
177+
}
178+
}
179+
)
180+
```
181+
182+
```json title="Sample Response (JSON)"
183+
{
184+
"id": "/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.OperationalInsights/workspaces/{workspace_name}/providers/Microsoft.SecurityInsights/incidents/{incident_id}/comments/{comment_id}",
185+
"properties": {
186+
"message": "Investigated and updated status."
187+
}
188+
}
189+
```
190+
191+
### Enrichment APIs
192+
#### List Incidents
193+
* Method: Get
194+
* Action: List Incidents
195+
* Parameters: filter, order By, limit, skip token
196+
197+
#### Get Incident
198+
* Method: Get
199+
* Action: Get Incident
200+
* Required Parameters: incident_id
201+
202+
```python title="Sample Request (Python)"
203+
response = requests.get(
204+
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",
205+
headers=headers
206+
)
207+
```
208+
```json title="Sample Response (JSON)"
209+
{
210+
"id": "/subscriptions/<sub_id>/.../incidents/<incident_id>",
211+
"name": "<incident_id>",
212+
"type": "Microsoft.SecurityInsights/incidents",
213+
"properties": {
214+
"title": "Suspicious Sign-In Attempt",
215+
"severity": "High",
216+
"status": "Active",
217+
"createdTimeUtc": "2025-05-07T11:35:00Z",
218+
"lastModifiedTimeUtc": "2025-05-08T09:00:00Z"
219+
}
220+
}
221+
```
222+
223+
#### List Incident Comments
224+
* Method: Get
225+
* Action: List Incident Comments
226+
* Required Parameters: incident_id
227+
228+
#### List Incident Entities / V2
229+
* Method: Get
230+
* Action: List Incident Entities / V2
231+
* Required Parameters: incident_id
232+
233+
#### List Incident Entities
234+
* Method: Get
235+
* Action: List Incident Entities
236+
* Required Parameters: incident_id
237+
238+
#### List Incident Alerts
239+
* Method: Get
240+
* Action: List Incident Alerts
241+
* Required Parameters: incident_id
242+
243+
### Rate Limits and Quotas
244+
* Azure REST API limits: 12,000 requests/hour per subscription.
245+
* Excess requests may trigger HTTP 429 ("Too Many Requests").
246+
247+
#### Troubleshooting
248+
| Issue | Resolution |
249+
| :-- |:-- |
250+
| ResourceNotFound on pagination | Ensure you're not appending query parameters to the nextLink. Use as-is. |
251+
| 403 Forbidden | Validate token scope and check if the app has required permissions. |
252+
| nextLink missing or invalid | Always check for nextLink in the response and follow without modifying. |
253+
254+
### FAQ
255+
256+
#### What permissions are required to use this integration?
257+
258+
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.
259+
260+
#### Is incident deletion reversible?
261+
262+
No, deleting an incident via API is permanent.
263+
264+
#### Is pagination handled automatically?
265+
266+
Yes. The integration supports auto-pagination via the nextLink field returned in API responses.
267+
268+
#### Is the Daemon action customizable for time ranges?
269+
270+
Yes, it supports a createdTime parameter to control how far back incidents are fetched.
271+
272+
#### Why am I getting a Resource Not Found error?
273+
This may happen if:
274+
* The workspace name, resource group, or subscription ID is incorrect.
275+
* The incident or entity ID does not exist.
276+
* The workspace is in a different region than expected.
277+
* Or code is appending query parameters to a nextLink, which already contains them.
278+
279+
### Support
280+
* For issues, questions, or improvements:
281+
* Azure Support: Open a support request via [Azure Portal](https://portal.azure.com/)
282+
* Microsoft [Q&A](https://learn.microsoft.com/answers)
283+
* GitHub/Community Forums (if applicable): Check if your integration has a public repo for collaboration
284+
35285
## Change Log
36286

37287
* September 2, 2020 - First upload
@@ -53,4 +303,7 @@ For information about Microsoft Sentinel, see [Microsoft Sentinel documentation]
53303
+ October 29, 2024 (v1.6)
54304
+ Updated **List Incident Entities V2** action in the output field.
55305
+ April 26, 2025 (v1.7)
56-
+ Enhanced **Microsoft Sentinel Incidents Daemon** Added support to seamlessly fetch subsequent paginated data.
306+
+ Enhanced **Microsoft Sentinel Incidents Daemon** Added support to seamlessly fetch subsequent paginated data.
307+
308+
### Deprecation notices
309+
* NA
203 KB
Loading

0 commit comments

Comments
 (0)