Skip to main content

Microsoft Sentinel

Microsoft Azure SIEM Pull

Synopsis

Creates a collector that fetches security incidents from Microsoft Sentinel workspaces. Director polls the source system's API at configured intervals to retrieve log and telemetry data rather than receiving pushed events. Supports authentication, batch processing, and automatic incident tracking with incremental updates.

Schema

- id: <numeric>
name: <string>
description: <string>
type: sentinel
tags: <string[]>
pipelines: <pipeline[]>
status: <boolean>
properties:
tenant_id: <string>
client_id: <string>
client_secret: <string>
subscription_id: <string>
resource_group_name: <string>
workspace_name: <string>
batch_size: <numeric>

Configuration

The following fields are used to define the device:

Device

FieldRequiredDefaultDescription
idYUnique identifier
nameYDevice name
descriptionN-Optional description
typeYMust be sentinel
tagsN-Optional tags
pipelinesN-Optional pre-processor pipelines
statusNtrueEnable/disable the device

Azure Authentication

FieldRequiredDefaultDescription
tenant_idN*Azure tenant ID
client_idN*Azure client ID
client_secretN*Azure client secret
subscription_idYAzure subscription ID

* = Omit all three to authenticate with a Managed Identity. See below.

Managed Identity Authentication

Azure targets support Managed Identity authentication for credential-free access when Director is deployed on Azure infrastructure.

How it works: When tenant_id, client_id, and client_secret are omitted from the configuration, the target automatically uses Azure's DefaultAzureCredential, which attempts authentication in the following order:

  1. Environment variables (AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET)
  2. Workload Identity (for Kubernetes deployments)
  3. Managed Identity (system-assigned or user-assigned)
  4. Azure CLI credentials
  5. Azure PowerShell credentials

Deployment requirement: Director must run on Azure infrastructure that supports Managed Identity:

  • Azure Virtual Machines
  • Azure App Service
  • Azure Container Instances
  • Azure Kubernetes Service (AKS)
  • Azure Functions

Required permissions: The Managed Identity must be granted the appropriate Azure RBAC roles documented in each target's IAM Permissions section.

note

Managed Identity eliminates credential management overhead and is the recommended authentication method for Azure-hosted Director deployments.

Workspaces

FieldRequiredDefaultDescription
resource_group_nameYAzure resource group name
workspace_nameYLog Analytics workspace name

Collection

FieldRequiredDefaultDescription
batch_sizeN10000Number of incidents to fetch per batch

Details

IAM Permissions

The service principal requires the following Azure RBAC role:

Azure RoleScopePurpose
Microsoft Sentinel ReaderLog Analytics WorkspaceRead incidents from Microsoft Sentinel

The device is strictly read-only — it only lists incidents using Microsoft.SecurityInsights/incidents/read. No create, update, or delete operations are performed.

Assign the role at the Log Analytics Workspace level rather than the subscription or resource group level for least-privilege access.

Incidents

The collector captures comprehensive incident data including basic incident details (ID, title, description), severity and status, classification and labels, owner information, temporal data (create, modify, activity dates and times), and information on resources.

Incremental Updates

The collector tracks the last processed incident's timestamp, fetches only new incidents since the last checkpoint, orders incidents by creation time, and supports batch processing.

Normalization

Incidents are automatically normalized with ECS field mapping in addition to using consistent timestamp formats, structured label handling, and owner information. (See Appendix for details of ECS.)

Examples

Basic

Creating a simple Sentinel collector...

- id: 1
name: basic_sentinel
type: sentinel
properties:
tenant_id: "00000000-0000-0000-0000-000000000000"
client_id: "11111111-1111-1111-1111-111111111111"
client_secret: "your-client-secret"
subscription_id: "22222222-2222-2222-2222-222222222222"
resource_group_name: "your-resource-group"
workspace_name: "your-workspace"

High-Volume

Optimizing for high incident volumes...

- id: 2
name: volume_sentinel
type: sentinel
properties:
tenant_id: "00000000-0000-0000-0000-000000000000"
client_id: "11111111-1111-1111-1111-111111111111"
client_secret: "your-client-secret"
subscription_id: "22222222-2222-2222-2222-222222222222"
resource_group_name: "your-resource-group"
workspace_name: "your-workspace"
batch_size: 5000

Pipelines

Applying custom processing to incidents...

- id: 3
name: pipeline_sentinel
type: sentinel
pipelines:
- incident_enricher
- severity_classifier
properties:
tenant_id: "00000000-0000-0000-0000-000000000000"
client_id: "11111111-1111-1111-1111-111111111111"
client_secret: "your-client-secret"
subscription_id: "22222222-2222-2222-2222-222222222222"
resource_group_name: "your-resource-group"
workspace_name: "your-workspace"
batch_size: 1000

Multiple Workspaces

Configuring multiple workspace collectors...

- id: 4
name: prod_sentinel
type: sentinel
properties:
tenant_id: "00000000-0000-0000-0000-000000000000"
client_id: "11111111-1111-1111-1111-111111111111"
client_secret: "your-client-secret"
subscription_id: "22222222-2222-2222-2222-222222222222"
resource_group_name: "prod-rg"
workspace_name: "prod-workspace"
- id: 5
name: dev_sentinel
type: sentinel
properties:
tenant_id: "00000000-0000-0000-0000-000000000000"
client_id: "11111111-1111-1111-1111-111111111111"
client_secret: "your-client-secret"
subscription_id: "22222222-2222-2222-2222-222222222222"
resource_group_name: "dev-rg"
workspace_name: "dev-workspace"

Incident Fields

The collector maps incident fields to standardized ECS fields:

Sentinel FieldECS FieldDescription
Titleevent.nameIncident title
Descriptionevent.descriptionIncident description
Severityevent.severityIncident severity level
Statusevent.outcomeCurrent incident status
IncidentNumberevent.sequenceSequential incident number
IncidentURLurl.originalLink to the incident in the portal
Classificationevent.classificationIncident classification
ClassificationReasonevent.classification_reasonWhy that classification was applied
ClassificationCommentevent.reasonFree-text comment on the classification
CreatedTimeevent.createdIncident creation time
LastModifiedTimeevent.last_modifiedLast update time
FirstActivityTimeevent.startFirst detected activity
LastActivityTimeevent.endLatest detected activity
OwnerAssignedTouser.nameAssigned owner name
OwnerEmailuser.emailAssigned owner email
OwnerUserPrincipalNameuser.principal_nameAssigned owner UPN
OwnerObjectIDuser.idAssigned owner object ID
ResourceIDcloud.resource_idAzure resource ID
ResourceNamecloud.resource_nameAzure resource name
ResourceTypecloud.resource_typeAzure resource type
Etagcloud.resource_versionResource version (ETag)
LabelslabelsIncident labels

All timestamps are normalized at nanosecond level in UTC.