Skip to content

Security Key & Passkey Inventory

The question it answers: Which security keys and passkeys are registered, by make and model, and which could not be attested?

Which security keys and passkeys are in use, by make and model, and which could not be attested? You need this to answer ‘are we affected?’ when a key model gets a vulnerability, to enforce key restrictions (AAGUID allow list) without locking people out, and to check that admins hold phishing-resistant credentials.

Where in the appEntra ID › Identity Hygiene › Security Keys & Passkeys
WorkloadEntra ID
KindTable · dashboard tile
DataA scan: it runs only when someone presses Run scan (or calls the API’s scan action) and can take minutes. The last result is kept until the next scan.
LicenceMicrosoft Entra ID P1 (registration details pick the users to scan).
Report id (API and MCP)entra.security.security-key-inventory
ColumnKeyType
UserDisplayNameLink
ModelModelText
AttestationAttestationLevelStatus
Key nameKeyNameText
AAGUIDAaGuidText
RegisteredCreatedDate
AdminIsAdminYesNo
UPNUserPrincipalNameText
ErrorErrorText

Licence: Microsoft Entra ID P1 (registration details pick the users to scan).

Application permissions on the IntensiveReports app registration (all permissions):

PermissionAPIWhat it allowsNote
UserAuthenticationMethod.Read.AllMicrosoft GraphRead all users’ authentication methods
Data sources it reads
  • GET /v1.0/reports/authenticationMethods/userRegistrationDetails (who has a key)
  • GET /v1.0/users/{id}/authentication/fido2Methods (per user)
GET /ir-api/v1/reports/entra.security.security-key-inventory?size=100
POST /ir-api/v1/reports/entra.security.security-key-inventory/scan

An AI assistant reads it with the MCP tool get_report and the id entra.security.security-key-inventory. The client needs the Run scan grant for Entra ID. See Using the API.