Identificar con rapidez y precisión qué aplicación se esconde detrás de un App ID (GUID) de Azure Active Directory resulta clave para auditar permisos, resolver incidencias de inicio de sesión y mantener un inventario de software conforme a las políticas de seguridad.
Por qué cada App ID cuenta
Azure AD emite un identificador único y global (appId) para cada service principal o registro de aplicación. Ese GUID aparece en logs, tokens JWT, registros de Activity y, sobre todo, en alertas de seguridad. Conocer el nombre real permite:
- Investigar intentos de acceso sospechosos.
- Conceder o revocar permisos de API de forma informada.
- Cumplir normativas que exigen inventarios precisos de software SaaS.
- Facilitar soporte cuando un usuario reporta un fallo de autenticación.
Conceptos que debes tener claros antes de empezar
App registration (registro de aplicación) y Enterprise application (aplicación corporativa) no son lo mismo: la primera define la plantilla global, la segunda representa la instancia en tu inquilino. Una misma app puede ser:
- Nativa de tu inquilino (single‑tenant).
- Multicliente (multi‑tenant) publicada por un ISV.
- Privada y distribuida a través de archivos de manifiesto.
El método óptimo para identificar el nombre dependerá de dónde resida la app:
Método | Permiso mínimo | Cobertura de apps | Velocidad |
---|---|---|---|
Catálogo público de Microsoft | Público | Apps certificadas / publicadas | Instantánea |
Portal Microsoft Entra | Cloud Application Administrator | Apps de tu inquilino | Visual |
PowerShell (AzureAD / Graph) | Application.Read.All o Directory.Read.All | Apps de tu inquilino | Scriptable |
REST Microsoft Graph | Application.Read.All o Directory.Read.All | Apps de tu inquilino | Integrable |
Soporte especializado | — | Cualquier App ID | Lento |
Catálogo público de Microsoft
Microsoft mantiene una hoja de cálculo actualizada —“Azure App IDs Security and Compliance – All Apps”— con miles de aplicaciones publicadas y sus App IDs. Para usarla:
- Descarga el fichero (formato CSV o Excel) desde Microsoft Learn.
- Busca el GUID con el Filtro avanzado. Excel localizará la fila con los campos
AppDisplayName
,PublisherName
yVerifiedPublisherId
. - Si encuentras varias coincidencias, fíjate en la columna Verified para elegir la entrada firmada.
Ventajas: no requiere permisos y cubre apps SaaS populares.
Limitaciones: no incluye aplicaciones privadas ni B2C.
Centro de administración de Microsoft Entra
El portal es ideal cuando el GUID procede de las alertas del inquilino:
- Accede a Identity > Aplicaciones > Aplicaciones corporativas.
- En la barra de búsqueda, pega el GUID completo. Si el texto es correcto, la grilla mostrará la aplicación al instante.
- Haz clic para abrir la ficha y revisa Nombre para mostrar, Id. de aplicación, Permisos, Consentimiento y usuarios asignados.
Consejo profesional: el filtro Select a property > Application ID resulta más rápido para guiar búsquedas masivas.
PowerShell: la navaja suiza del administrador
Módulo AzureAD (legado)
Connect-AzureAD
$appId = '00000000-1111-2222-3333-444444444444'
Get-AzureADApplication -Filter "AppId eq '$appId'" |
Select-Object DisplayName, AppId, ObjectId
El cmdlet devuelve un objeto excelente para Export-Csv
. Sin embargo, el módulo AzureAD quedará sin soporte a largo plazo.
Módulo Microsoft.Graph (recomendado)
Connect-MgGraph -Scopes "Application.Read.All","Directory.Read.All"
$app = Get-MgApplication -ApplicationId $appId
$app.DisplayName
Ventajas clave:
- Parámetro nativo
-ApplicationId
(no hace falta filtrar). - API de futuro; compatible con AuthenticationStrength, CertificateBasedAuth, etc.
- Permite delegar con
-TenantId
para acceder a varios inquilinos en un mismo script.
Consultas masivas
$guids = Get-Content '.\guids.txt'
$results = foreach ($g in $guids) {
try {
Get-MgApplication -ApplicationId $g |
Select-Object DisplayName,AppId,ObjectId
} catch {
[PsCustomObject]@{DisplayName='NO ENCONTRADA';AppId=$g;ObjectId=$null}
}
}
$results | Export-Csv '.\inventario_apps.csv' -NoTypeInformation
Microsoft Graph API REST
Para integraciones CI/CD o lenguajes distintos de PowerShell:
GET https://graph.microsoft.com/v1.0/applications?$filter=appId%20eq%20'00000000-1111-2222-3333-444444444444'
Authorization: Bearer <token>
La respuesta JSON contendrá:
{
"value": [
{
"displayName": "Contoso Finance",
"id": "aaaa...bbbb",
"appId": "00000000-1111-2222-3333-444444444444"
}
]
}
Recuerda solicitar los permisos Application.Read.All
o Directory.Read.All
y que en apps delegadas también vale Directory.AccessAsUser.All
.
Automatización y mantenimiento continuo
En entornos con cientos de SaaS conviene programar una función diaria (Azure Function, Logic App, GitHub Action) que:
- ¡Lee la lista de GUID desde tus registros de consentimiento!
- Interroga Graph y almacena
displayName
,publisher
,appOwnerOrganizationId
en tu CMDB. - Genera un informe diferencial resaltando nuevos App IDs.
- Dispara alertas si una app adquiere permisos de Application de alto riesgo.
Cómo paginar correctamente
Si recibes @odata.nextLink
, repite la llamada hasta consumir todas las páginas; en PowerShell basta con Invoke-MgGraphRequest -All
.
Escenarios especiales
- App privada multicliente: el proveedor puede distribuir distintos GUID por tenant; pide confirmación al ISV o comprueba el objeto
publisherDomain
. - B2C custom policies: las aplicaciones “b2c-extensions-app” y “proxyIdentityExperienceFramework” comparten plantillas; cerciórate por
ObjectId
. - Sustitución de aplicaciones heredadas: cuando migras de AzureAD Graph a Microsoft Graph, el GUID permanece, pero el endpoint cambia; actualiza scripts para evitar fallos 410 Gone.
Seguridad y cumplimiento
Identificar el nombre es solo el primer paso. Asegúrate de revisar:
- Consentimientos: quita permisos que ya no usen los usuarios.
- Certificados y secretos: renueva antes de que caduquen para evitar caídas.
- Principio de mínimo privilegio: audita continuamente el tipo de permiso (Delegated vs Application).
- Políticas de acceso condicional: asigna MFA o restricciones de ubicación según criticidad.
Buenas prácticas recomendadas
- Centraliza los GUID en un único repositorio (por ejemplo, un workbook de Azure Monitor).
- Etiqueta las aplicaciones críticas con Owner, BusinessUnit y DataSensitivity.
- Incluye el App ID en la documentación de onboarding de nuevos servicios.
- Programa una revisión trimestral para eliminar registros sin uso en 90 días.
Resumen rápido
• Usa el catálogo público para SaaS ampliamente adoptado.
* Recurre al portal Entra para inspecciones puntuales.
* Automiza inventarios con PowerShell o Graph API.
* En casos extremos, contacta al editor o a soporte de Microsoft Q&A.
Conclusión
La combinación de métodos manuales y automatizados te permitirá identificar cualquier App ID de Azure AD en minutos, mantener tu inquilino limpio y cumplir las exigencias de auditoría sin sobresaltos.