Chapitre 1114 minIntermédiaire
Identités et accès : Entra ID, RBAC, MFA et identités managées
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- distinguer les rôles Entra ID et les rôles Azure RBAC ;
- attribuer un rôle à un groupe au bon niveau, en moindre privilège ;
- remplacer un secret par une identité managée ;
- relier l'Active Directory local à Entra ID avec Cloud Sync.
4 exercices corrigés
Dans Azure, tout accès passe par une identité de Microsoft Entra ID (l'annuaire cloud de Microsoft, appelé Azure Active Directory jusqu'en 2023) et par un rôle attribué sur une étendue : c'est le contrôle d'accès en fonction du rôle, ou RBAC (Role-Based Access Control). Les applications, elles, reçoivent des identités managées, qui leur évitent de stocker des mots de passe. Ce chapitre explique l'annuaire, les deux familles de rôles, la MFA et les comptes d'administration, les identités managées, et la façon de relier l'Active Directory de Sorbier à Entra ID.
Microsoft Entra ID, l'annuaire du cloud
Le locataire Entra ID de Sorbier (sorbier.onmicrosoft.com, avec le domaine vérifié sorbier.example) contient :
- des utilisateurs : créés directement dans le cloud, ou synchronisés depuis l'Active Directory local (plus bas) ;
- des groupes, auxquels on attribue les droits plutôt qu'aux personnes ;
- des invités (B2B) : le compte d'un prestataire, qui garde son propre annuaire ;
- des applications et leurs principaux de service, les identités des programmes, dont les identités managées.
Entra ID parle les protocoles du web, OAuth 2.0 et OpenID Connect (cours Authentification), et n'a ni OU ni GPO : ce n'est pas un Active Directory dans le cloud. La comparaison détaillée des deux annuaires est dans le cours Windows Server. Les fonctions avancées demandent une licence : Entra ID P1 pour l'accès conditionnel, P2 pour la protection des identités et l'élévation de privilèges juste-à-temps (PIM).
Deux familles de rôles à ne pas confondre
| Rôles Microsoft Entra | Rôles Azure (RBAC) | |
|---|---|---|
| Ce qu'ils gèrent | L'annuaire : comptes, groupes, licences, applications | Les ressources : VM, bases, stockage, réseaux |
| Exemples | Administrateur général, Administrateur d'utilisateurs, Administrateur du support technique | Propriétaire (Owner), Contributeur (Contributor), Lecteur (Reader) |
| Où on les attribue | Au niveau du locataire (ou d'une unité administrative) | Sur un groupe d'administration, un abonnement, un groupe de ressources ou une ressource |
Un administrateur d'utilisateurs Entra ne peut pas créer de VM ; un propriétaire d'abonnement ne peut pas réinitialiser le mot de passe d'un salarié. Deux métiers, deux familles de rôles.
Le RBAC d'Azure : qui, quoi, où
Une attribution de rôle associe trois éléments :
- Qui : un principal de sécurité (utilisateur, groupe, principal de service, identité managée) ;
- Quoi : une définition de rôle, c'est-à-dire une liste d'actions permises ;
- Où : une étendue : groupe d'administration, abonnement, groupe de ressources ou ressource.
Les attributions s'héritent vers le bas (la hiérarchie du chapitre 6) et s'additionnent : un utilisateur Lecteur sur l'abonnement et Contributeur sur un groupe de ressources peut tout lire partout et tout modifier dans ce groupe.
| Rôle intégré | Ce qu'il permet |
|---|---|
| Owner (Propriétaire) | Tout, y compris attribuer des rôles à d'autres |
| Contributor (Contributeur) | Créer et gérer toutes les ressources, sans pouvoir attribuer de rôles |
| Reader (Lecteur) | Tout voir, ne rien modifier |
| User Access Administrator, Role Based Access Control Administrator | Gérer les attributions de rôles ; le second peut être limité à certains rôles |
| Rôles de service | Virtual Machine Contributor, Storage Blob Data Reader, Storage Blob Data Contributor… : les droits d'un seul service, ou de ses données |
On applique le moindre privilège (cours Authentification) : des rôles attribués à des groupes, à l'étendue la plus petite possible, et le moins possible de propriétaires.
# Un groupe pour les développeurs du suivi des livraisons
az ad group create --display-name "Azure-Dev-Livraisons" --mail-nickname azure-dev-livraisons
GROUPE=$(az ad group show --group "Azure-Dev-Livraisons" --query id --output tsv)
# Contributeur sur l'environnement de test, lecteur sur la production
az role assignment create --assignee-object-id "$GROUPE" --assignee-principal-type Group \
--role "Contributor" \
--scope "$(az group show --name rg-livraisons-test-frc --query id --output tsv)"
az role assignment create --assignee-object-id "$GROUPE" --assignee-principal-type Group \
--role "Reader" \
--scope "$(az group show --name rg-livraisons-prod-frc --query id --output tsv)"
# Vérifier les droits du groupe
az role assignment list --assignee "$GROUPE" --all --output table
MFA, accès conditionnel et comptes d'administration
- La MFA est obligatoire pour administrer Azure (portail depuis octobre 2024, CLI, PowerShell et API depuis le 1er octobre 2025, chapitre 6). Pour les autres usages, les paramètres de sécurité par défaut, gratuits, imposent la MFA à tous les utilisateurs du locataire ; l'accès conditionnel (licence P1) permet des règles plus fines : « MFA résistante à l'hameçonnage pour les administrateurs », « bloquer les connexions depuis tel pays ».
- Préfère une MFA résistante à l'hameçonnage pour les comptes d'administration : clés de sécurité FIDO2 ou clés d'accès (passkeys), plutôt qu'un code reçu par SMS (cours Authentification).
- Des comptes d'administration à part, créés dans le cloud, jamais synchronisés depuis l'annuaire local, et des droits élevés activés seulement au moment du besoin avec PIM (Privileged Identity Management, licence P2).
- Deux comptes d'accès d'urgence (break glass), cloud uniquement, avec une MFA par clé FIDO2 : depuis la MFA obligatoire, ils doivent eux aussi passer une MFA.
- Les journaux de connexion et d'activité d'Entra ID et d'Azure (Activity Log) sont envoyés vers le SIEM, chez Sorbier vers Wazuh (cours Wazuh).
Les identités managées : plus de secret dans le code
Une application qui lit des blobs a besoin d'une identité. La mauvaise solution : une clé d'accès du compte de stockage dans un fichier de configuration, qui finira un jour dans un dépôt Git. La bonne : une identité managée, une identité Entra ID attachée à la ressource Azure elle-même. Azure crée et fait tourner ses secrets en interne : ni toi ni le code ne les voyez jamais.
| Type | Cycle de vie | Usage |
|---|---|---|
| Attribuée par le système | Créée avec la ressource, supprimée avec elle | Une application qui accède à ses propres ressources |
| Attribuée par l'utilisateur | Ressource indépendante, partageable entre plusieurs ressources | Plusieurs applications qui ont besoin des mêmes droits |
Pour que l'API du chapitre 10 lise les bons de livraison du chapitre 8 :
# 1. Donner une identité à l'application et récupérer son identifiant
az webapp identity assign --name app-parc-jc42 --resource-group rg-cloud-lab
PRINCIPAL=$(az webapp identity show --name app-parc-jc42 --resource-group rg-cloud-lab --query principalId --output tsv)
# 2. Lui attribuer la lecture des blobs, sur ce seul compte de stockage
az role assignment create --assignee-object-id "$PRINCIPAL" --assignee-principal-type ServicePrincipal \
--role "Storage Blob Data Reader" \
--scope "$(az storage account show --name stsorbierlabjc42 --resource-group rg-cloud-lab --query id --output tsv)"
Dans le code, la bibliothèque @azure/identity trouve seule l'identité : l'identité managée quand le code tourne dans Azure, ton compte az login quand il tourne sur ton poste.
import { DefaultAzureCredential } from '@azure/identity';
import { BlobServiceClient } from '@azure/storage-blob';
const compte = process.env.STORAGE_ACCOUNT; // par exemple stsorbierlabjc42
const client = new BlobServiceClient(
`https://${compte}.blob.core.windows.net`,
new DefaultAzureCredential(), // identité managée dans Azure, ton compte az login sur ton poste
);
const conteneur = client.getContainerClient('bons-livraison');
for await (const blob of conteneur.listBlobsFlat({ prefix: '2026/11/' })) {
console.log(blob.name, blob.properties.accessTier);
}
Aucune clé, aucun mot de passe : si le code fuit, il ne donne accès à rien. Les identités managées s'utilisent de la même façon pour lire un secret dans Azure Key Vault, ou pour se connecter à Azure Database for MySQL avec l'authentification Entra ID au lieu d'un mot de passe MySQL. Pour un programme qui tourne hors d'Azure, comme un pipeline GitHub Actions, on utilise un principal de service avec une fédération d'identité (OIDC), là encore sans secret permanent (cours Intégration continue).
L'identité hybride : relier l'Active Directory de Sorbier
L'Active Directory de Sorbier (ad.sorbier.example, contrôleurs srv-ad et srv-ad2) reste la source d'autorité : un compte créé, modifié ou désactivé là-bas doit l'être aussi dans Entra ID. Microsoft propose deux outils de synchronisation :
| Microsoft Entra Cloud Sync | Microsoft Entra Connect Sync | |
|---|---|---|
| Ce qu'on installe | Un agent de provisionnement léger, sur un ou plusieurs serveurs | Un logiciel complet, avec sa base, sur un serveur dédié |
| Où est la configuration | Dans le cloud, dans le centre d'administration Entra | Sur le serveur de synchronisation |
| Haute disponibilité | Plusieurs agents actifs : si l'un tombe, les autres continuent | Un serveur actif, un serveur en attente à maintenir |
| Flux réseau | Connexions sortantes en HTTPS seulement | Connexions sortantes |
| Fréquence | Toutes les 2 minutes | Toutes les 30 minutes par défaut |
| Position de Microsoft | L'orientation pour les nouveaux déploiements, avec un outil de migration guidée depuis Connect Sync | Encore nécessaire pour certains scénarios avancés |
Pour Sorbier, PME à une seule forêt, Cloud Sync convient : un agent sur srv-ad et un sur srv-ad2 assurent la redondance. Sur pfSense, une seule règle est nécessaire : autoriser ces deux serveurs à sortir en HTTPS vers Internet (cours pfSense). On choisit les OU synchronisées (pas les comptes d'administration ni les comptes de service), on passe les UPN sur le domaine vérifié sorbier.example, et l'on active la synchronisation du hachage du mot de passe (PHS), la méthode recommandée : Entra ID vérifie lui-même les mots de passe, même si les contrôleurs de domaine sont injoignables. Les détails (suffixes UPN, méthodes d'authentification, jonction des postes) sont dans le cours Windows Server.
Exercices
Exercice 1 sur 4 Rôle Entra ou rôle Azure ? Réussi À revoir
Pour chaque tâche, dis s'il faut un rôle Microsoft Entra ou un rôle Azure (RBAC), et lequel, au plus juste.
- Réinitialiser le mot de passe d'une salariée qui l'a oublié.
- Redémarrer les VM du groupe de ressources
rg-entrepot-prod-frc, sans pouvoir en créer. - Consulter la configuration de toutes les ressources de l'abonnement de production pour un audit.
- Créer des groupes et y ajouter des membres.
- Donner à un prestataire le droit de déployer dans
rg-livraisons-test-frc.
Voir la réponseMasquer la réponse de l'exercice 1
- Rôle Entra : Administrateur du support technique (Helpdesk Administrator), qui réinitialise les mots de passe des utilisateurs non administrateurs. Administrateur général serait bien trop large.
- Rôle Azure : Virtual Machine Contributor sur le groupe
rg-entrepot-prod-frc. Il permet de gérer les VM du groupe ; un rôle personnalisé limité au démarrage et à l'arrêt serait encore plus juste. - Rôle Azure : Reader sur l'abonnement de production.
- Rôle Entra : Administrateur de groupes (Groups Administrator).
- Rôle Azure : Contributor sur
rg-livraisons-test-frcseulement, attribué au compte invité du prestataire (ou à un groupe qui le contient), de préférence pour une durée limitée.
Tu avais trouvé ?
Exercice 2 sur 4 Évaluer un accès Réussi À revoir
Léa est membre de deux groupes : Azure-Lecteurs, qui a le rôle Reader sur l'abonnement Sorbier-Prod, et Azure-Dev-Livraisons, qui a le rôle Contributor sur le groupe de ressources rg-livraisons-prod-frc.
- Peut-elle supprimer l'application web
app-livraisons-prod-frc? - Peut-elle supprimer une VM du groupe
rg-reseau-prod-frc? - Peut-elle donner le rôle Reader à un collègue sur
rg-livraisons-prod-frc? - Peut-elle lire les blobs du compte
stlivraisonsprodfrc, rangé dansrg-livraisons-prod-frc, avec son compte Entra ?
Voir la réponseMasquer la réponse de l'exercice 2
- Oui : Contributor sur le groupe de ressources qui contient l'application. Les droits s'additionnent avec ceux du rôle Reader.
- Non : sur
rg-reseau-prod-frc, elle n'a que le rôle Reader, hérité de l'abonnement. - Non : Contributor ne permet pas d'attribuer des rôles ; seuls Owner, User Access Administrator ou Role Based Access Control Administrator le permettent.
- Non, pas directement : Contributor est un rôle de gestion, il ne donne pas l'accès aux données des blobs avec Entra ID. Il faudrait Storage Blob Data Reader. (Attention : Contributor permet de lire les clés d'accès du compte, et donc d'accéder aux données par ce biais, sauf si l'autorisation par clé partagée est désactivée. C'est une raison de plus pour la désactiver.)
Tu avais trouvé ?
Exercice 3 sur 4 Supprimer un secret Réussi À revoir
Le fichier de configuration d'une application déployée sur App Service contient la chaîne de connexion complète d'un compte de stockage, avec sa clé. Décris les étapes pour la remplacer par une identité managée, sans interruption de service.
Voir la réponseMasquer la réponse de l'exercice 3
- Activer l'identité managée de l'application (
az webapp identity assign). - Lui attribuer le rôle de données nécessaire (Storage Blob Data Reader ou Contributor) sur le seul compte de stockage.
- Modifier le code :
new BlobServiceClient(url, new DefaultAzureCredential())au lieu de la chaîne de connexion ; ne passer que le nom du compte en paramètre d'application. - Déployer et vérifier que l'application lit et écrit bien.
- Supprimer la chaîne de connexion de la configuration, puis régénérer la clé du compte, puisqu'elle a circulé ; enfin, désactiver l'autorisation par clé partagée si plus rien ne l'utilise.
Tu avais trouvé ?
Exercice 4 sur 4 La synchronisation de Sorbier Réussi À revoir
- Pourquoi installer l'agent Cloud Sync sur deux serveurs plutôt qu'un ?
- Quelle règle faut-il sur pfSense pour qu'il fonctionne ? Faut-il ouvrir un port entrant ?
- Les deux contrôleurs de domaine sont en panne. Les salariés peuvent-ils encore se connecter aux services cloud, avec la synchronisation du hachage du mot de passe ?
- Un administrateur propose de synchroniser son compte membre des Admins du domaine pour lui donner le rôle Administrateur général dans Entra ID. Que réponds-tu ?
Voir la réponseMasquer la réponse de l'exercice 4
- Pour la disponibilité : les agents sont actifs ensemble ; si un serveur est en maintenance ou en panne, l'autre continue de synchroniser.
- Une règle qui autorise
srv-ad(192.168.10.177) etsrv-ad2(192.168.10.181) à sortir en HTTPS (TCP 443) vers Internet. Aucun port entrant : l'agent n'établit que des connexions sortantes. - Oui pour les services cloud : avec PHS, Entra ID vérifie lui-même le mot de passe à partir de l'empreinte synchronisée. Les nouveaux comptes et les modifications, en revanche, ne seront synchronisés qu'au retour des contrôleurs.
- Non : si l'annuaire local est compromis, l'attaquant change le mot de passe de ce compte et devient administrateur général du cloud. Les administrateurs du cloud ont des comptes créés dans le cloud, non synchronisés, protégés par une MFA résistante à l'hameçonnage, et l'OU des comptes d'administration est exclue de la synchronisation.
Tu avais trouvé ?