Microsoft Sentinel
The SENTINEL alert channel forwards every ThreatIntellix alert into a Sentinel custom table via the Logs Ingestion API, the current Microsoft-recommended path (the older Data Collector API is deprecated).
1. Create a Data Collection Endpoint and custom table
- In the Azure Portal, create a Data Collection Endpoint (DCE), and note its ingestion URL.
- In your Log Analytics workspace, create a custom table (e.g.
ThreatIntellixAlerts_CL) with this schema:
[
{ "name": "TimeGenerated", "type": "datetime" },
{ "name": "EventType", "type": "string" },
{ "name": "ioc", "type": "string" },
{ "name": "type", "type": "string" },
{ "name": "oldScore", "type": "int" },
{ "name": "newScore", "type": "int" },
{ "name": "verdict", "type": "string" }
]Custom-table columns get a type suffix automatically (_s, _d); see the KQL example below.
2. Create a Data Collection Rule
Create a Data Collection Rule (DCR) associated with your DCE, with a stream mapping to the custom table above. Note the DCR's immutable ID and the stream name (e.g. Custom-ThreatIntellixAlerts_CL).
3. Register an app and grant it publish rights
- Entra ID → App registrations → New registration. Create a client secret.
- On the DCR, add a role assignment granting that app the Monitoring Metrics Publisher role.
- Note the tenant ID, client ID, and client secret.
4. Configure the channel
In Settings → Alert channels, add a Microsoft Sentinel channel with the tenant ID, client ID, client secret, DCE endpoint, DCR immutable ID, and stream name from steps 1-3. A fresh access token is requested per alert sent (client-credentials flow); nothing is cached server-side.
5. Example query
ThreatIntellixAlerts_CL
| where EventType_s == "watchlist.score_spike"
| where newScore_d > 70
| project TimeGenerated, ioc_s, type_s, oldScore_d, newScore_d, verdict_s