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.
At a glance
Section titled “At a glance”| Where in the app | Entra ID › Identity Hygiene › Security Keys & Passkeys |
| Workload | Entra ID |
| Kind | Table · dashboard tile |
| Data | A 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. |
| Licence | Microsoft Entra ID P1 (registration details pick the users to scan). |
| Report id (API and MCP) | entra.security.security-key-inventory |
Columns
Section titled “Columns”| Column | Key | Type |
|---|---|---|
| User | DisplayName | Link |
| Model | Model | Text |
| Attestation | AttestationLevel | Status |
| Key name | KeyName | Text |
| AAGUID | AaGuid | Text |
| Registered | Created | Date |
| Admin | IsAdmin | YesNo |
| UPN | UserPrincipalName | Text |
| Error | Error | Text |
What it needs
Section titled “What it needs”Licence: Microsoft Entra ID P1 (registration details pick the users to scan).
Application permissions on the IntensiveReports app registration (all permissions):
| Permission | API | What it allows | Note |
|---|---|---|---|
UserAuthenticationMethod.Read.All | Microsoft Graph | Read 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)
Through the API and MCP
Section titled “Through the API and MCP”GET /ir-api/v1/reports/entra.security.security-key-inventory?size=100POST /ir-api/v1/reports/entra.security.security-key-inventory/scanAn 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.