Audit Logs / Microsoft Entra ID AuditLogs category

Audit Logs: KeyManagement

OperationNameDescriptionSampleRule
Read BitLocker keyA BitLocker recovery key was read from the directory.NY
Add BitLocker keyA device's BitLocker recovery key was escrowed (backed up) to Microsoft Entra ID.NN
Delete BitLocker keyA stored BitLocker recovery key was deleted from the directory.NN

Read BitLocker key

#
Source
Microsoft Entra ID audit log
Audit Category
KeyManagement

Description

A BitLocker recovery key was read from the directory.

Detection Rules #

Full rule details for this event, including ATT&CK technique mappings and native queries →

Sigma #

References #

Add BitLocker key

#
Source
Microsoft Entra ID audit log
Audit Category
KeyManagement

Description

A device's BitLocker recovery key was stored (escrowed) in Microsoft Entra ID. Recovery keys are stored in the directory for encrypted Windows devices that escrow their keys to Microsoft Entra ID and can later be read by authorized administrators; both the backup and any key read are audited under the KeyManagement category.

References #

Delete BitLocker key

#
Source
Microsoft Entra ID audit log
Audit Category
KeyManagement

Description

Records the deletion of a stored BitLocker recovery key (bitlockerRecoveryKey) held in the directory and associated with a device. Because the recovery key is what restores access to a BitLocker-protected drive, its removal can impede data recovery, so deletions warrant scrutiny as potential impact or anti-recovery activity.

References #

Rules often query computed field names, not native AuditLogs columns #

Many Entra detection rules pivot on field names that are not columns in this table but KQL projections the rule author computes from two dynamic columns. Searching the field list for those names finds nothing; use the canonical paths instead.

  • InitiatingUserPrincipalName (and sibling Initiating* names) is not a column. Rules project it from InitiatedBy, for example extend InitiatingUserPrincipalName = tostring(InitiatedBy.user.userPrincipalName). The native paths are InitiatedBy.user.userPrincipalName, InitiatedBy.user.displayName, and InitiatedBy.user.id for user actors, and InitiatedBy.app.displayName / InitiatedBy.app.appId for application or service-principal actors.
  • What changed lives in TargetResources, a dynamic array. Expand it before filtering on the change: AuditLogs | mv-expand TargetResources | extend props = TargetResources.modifiedProperties, then read props[].displayName, props[].oldValue, and props[].newValue.

Column shapes per the AuditLogs table reference and the Graph directoryAudit resource.