Secretos de app registrations que caducan: cómo evitar que tus integraciones fallen
El fallo silencioso
Muchas integraciones con Microsoft 365 se autentican con una app registration de Entra ID y un secreto de cliente o un certificado: copias de seguridad, herramientas de sincronización, el ERP que envía correo por Graph, los scripts de automatización o las plataformas de auditoría como 365toControl.
Los secretos tienen fecha de caducidad. En el portal de Entra puedes elegir hasta 24 meses, y lo recomendado es bastante menos. Cuando llega la fecha, la integración deja de autenticarse con el error AADSTS7000222 (el secreto ha caducado) y, si nadie vigila los logs de esa aplicación, el problema se descubre días o semanas después: cuando falla una restauración, cuando un cliente pregunta por qué no le llegan las facturas o cuando la copia lleva un mes sin hacerse.
Por qué pasa tan a menudo
- No hay aviso por defecto: Entra ID notifica por correo la caducidad de los certificados de firma SAML de las aplicaciones empresariales, pero no la de los secretos de las app registrations.
- El propietario ya no está: quien creó la aplicación cambió de puesto, de empresa o era un consultor externo.
- Nadie sabe para qué es: una aplicación llamada "test-api" con permisos de lectura del directorio puede ser una integración crítica o un experimento abandonado.
Cómo inventariar secretos y certificados
Desde el portal
En Registros de aplicaciones > Todas las aplicaciones, cada aplicación tiene la sección Certificados y secretos con la fecha de caducidad de cada credencial. Para dos o tres aplicaciones es suficiente; para cincuenta, no.
Con PowerShell (Microsoft Graph)
Con Connect-MgGraph -Scopes Application.Read.All, este comando lista todos los secretos de todas las aplicaciones ordenados por fecha de caducidad:
Comando: Get-MgApplication -All -Property DisplayName,AppId,PasswordCredentials | ForEach-Object { $app = $_; $_.PasswordCredentials | Select-Object @{n="App";e={$app.DisplayName}}, DisplayName, EndDateTime } | Sort-Object EndDateTime
Para los certificados, cambia PasswordCredentials por KeyCredentials en las dos posiciones.
Cómo priorizar
- Caducados: si la aplicación todavía tiene otra credencial válida, elimina la caducada. Si todas están caducadas, probablemente la aplicación está rota o abandonada: confirma con su propietario y elimínala.
- Menos de 7 días: renueva hoy.
- Menos de 30 días: planifica la rotación esta semana.
- Menos de 90 días: apúntalo en el calendario y localiza al responsable de la integración.
Cómo rotar un secreto sin cortes
Una aplicación puede tener varios secretos válidos a la vez. Aprovéchalo:
1. Crea un secreto nuevo mientras el antiguo sigue siendo válido.
2. Actualízalo en la integración: en el servicio, el script o el almacén de secretos (Azure Key Vault o similar) que lo use.
3. Comprueba que funciona con el secreto nuevo.
4. Elimina el secreto antiguo. No lo dejes "por si acaso": un secreto que nadie usa sigue siendo una puerta abierta.
Cómo depender menos de los secretos
- Certificados en lugar de secretos: son más difíciles de filtrar por error (no se copian en un correo ni en un fichero de configuración) y Microsoft los recomienda frente a los secretos.
- Identidades administradas: si la integración corre en Azure, una identidad administrada elimina la necesidad de gestionar credenciales.
- Federación de identidades de carga de trabajo: para GitHub Actions, otros clouds o Kubernetes, permite autenticarse sin ningún secreto almacenado.
- Políticas de administración de aplicaciones: Entra ID permite limitar la vigencia máxima de los secretos en todo el tenant (revisa los requisitos de licencia).
Gobierno: que no vuelva a pasar
- Dos propietarios por aplicación, como mínimo, y que sean personas que siguen en la organización.
- Una descripción útil: qué integración es, quién la mantiene y qué pasa si falla.
- Revisión periódica: dentro de la revisión de aplicaciones y consentimientos OAuth. Es además una medida de seguridad de la cadena de suministro que pide NIS2 (Art. 21.2.d; ver el checklist NIS2 para Microsoft 365).
Cómo lo vigila 365toControl
365toControl inventaría los secretos y certificados de todas las app registrations del tenant y los clasifica por estado: caducado, menos de 7 días, menos de 30 y menos de 90. Te avisa de las aplicaciones con todas sus credenciales caducadas y de las que tienen credenciales a punto de vencer. Además, si el secreto que usa la propia conexión de 365toControl caduca en 30 días o menos, el panel del tenant muestra un aviso destacado para que lo renueves antes de que el análisis deje de funcionar.
Audita tu Microsoft 365 gratis
Conecta tu tenant con permisos de solo lectura y obtén un diagnóstico completo en menos de 2 minutos.
Lanzar auditoría gratuita