Retour aux articles • CLOUD • Mis à jour en 2026 • 3 min de lecture

Entra ID : Alerter l'Expiration des Secrets

Automatiser l'audit d'expiration des Client Secrets et Certificats Azure App Registrations vers Log Analytics Workspace (KQL) et Grafana, ou les éliminer via OIDC Workload Identity Federation.

Entra ID : Alerter l'Expiration des Secrets

Le piège silencieux des secrets d’applications (App Registrations)

Dans Microsoft Entra ID (anciennement Azure AD), les App Registrations authentifient vos pipelines CI/CD, vos microservices et vos connecteurs tiers à l’aide de Client Secrets ou de Certificats X.509.

Contrairement aux comptes utilisateurs interactifs, l’expiration d’un secret applicatif ne déclenche nativement aucune bannière d’alerte pour l’équipe d’exploitation : le jour où le secret arrive à échéance, les flux de production tombent brutalement en erreur AADSTS7000222 (The provided client secret keys are expired).

Voici l’architecture d’observabilité mise en place pour auditer quotidiennement l’ensemble des secrets d’un tenant Azure et alerter les équipes SRE dans Grafana bien avant l’échéance.


Architecture du pipeline de supervision

Architecture & Flux : Entra ID : Alerter l'Expiration des Secret

1. Prérequis et moindre privilège (RBAC)

Pour déployer cette chaîne de collecte, vous avez besoin de :

  1. Un compte Azure Automation doté d’une identité managée (System-Assigned Managed Identity) ou d’un compte d’exécution disposant uniquement du rôle Lecteur d’applications (Application.Read.All sur Microsoft Graph).
  2. Un espace de travail Log Analytics (Log Analytics Workspace) dont vous récupérez le Workspace ID et la clé primaire d’ingestion (Primary Key), stockés sous forme de variables chiffrées dans l’Automation Account.
  3. Les modules PowerShell Azure (Az.Accounts, Az.Resources) importés dans votre Azure Automation Account.

2. Le Runbook PowerShell d’audit et d’ingestion

Ce script parcourt toutes les inscriptions d’applications du tenant, extrait les dates de fin de validité (EndDate) de chaque secret et certificat, calcule l’échéance, et pousse le résultat structuré en JSON vers l’API HTTP Data Collector de Log Analytics (créant automatiquement la table personnalisée NameOfAppsRegistration_CL) :

Planifiez l’exécution de ce Runbook une fois par jour (ex. à 06:00 UTC) via un Schedule Azure Automation.

3. Requête KQL (Kusto) pour isoler les secrets proches de l’expiration

Une fois la première collecte exécutée, interrogez la table NameOfAppsRegistration_CL dans Log Analytics ou directement depuis la source de données Azure Monitor de Grafana :

NameOfAppsRegistration_CL 
| where TimeGenerated > ago(24h) 
| extend ExpirationDate = todynamic(EndDate_s)
| extend DaysRemaining = datetime_diff('day', todatetime(ExpirationDate), now())
| project ApplicationName = DisplayName_s, KeyIdentifier = KeyId_s, DaysRemaining, ExpirationDate
| sort by DaysRemaining asc

Cette requête permet de configurer deux seuils d’alerte :

  • Warning (DaysRemaining < 30) : création automatique d’un ticket de rotation pour l’équipe propriétaire de l’application.
  • Critical (DaysRemaining < 7) : notification immédiate sur le canal d’astreinte SecOps / SRE.

État de l’art 2026 : Éliminer les secrets grâce à Workload Identity Federation (OIDC)

En 2026, la meilleure façon de gérer la rotation des Client Secrets est de ne plus en créer du tout :

  1. Workload Identity Federation (Zéro Secret) : Qu’il s’agisse de GitHub Actions, GitLab CI, Kubernetes (AKS) ou d’un cloud tiers (AWS / GCP), configurez des Federated Credentials basés sur OpenID Connect (OIDC) dans votre App Registration Entra ID. Entra ID valide un jeton JWT éphémère signé par votre plateforme CI/CD ou votre cluster et délivre un Access Token valide 1 heure. Il n’y a plus aucun secret statique à stocker ni à renouveler.
  2. Managed Identities (Identités Managées) : Pour toute communication entre ressources hébergées sur Azure (App Service, Function, VM, AKS vers Key Vault, SQL ou Storage), activez systématiquement une System-Assigned ou User-Assigned Managed Identity. Azure gère la rotation cryptographique sous-jacente de manière 100 % transparente.
  3. Microsoft Graph & Azure Monitor natif : Le module historique AzureAD / MSOnline étant définitivement déprécié, les rares secrets résiduels (ex. : SaaS tiers ne supportant pas encore OIDC) doivent être audités via le SDK Microsoft Graph PowerShell (Get-MgApplication) ou via l’export continu des Diagnostic Settings Entra ID vers Log Analytics, couplé à une politique Azure Policy interdisant tout secret dont la durée de vie excède 180 jours.

Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/InfraAtHome