Introduction à l'export sécurisé des clés BitLocker
L'administration des clés de récupération BitLocker dans un environnement Microsoft 365 nécessite une approche sécurisée pour éviter l'exposition de données sensibles. Cet article présente une version améliorée d'un script PowerShell qui utilise des objets SecureString pour protéger les clés lors de l'export, contrairement aux approches traditionnelles qui affichent les clés en texte clair.
Sécurité
Les clés de récupération BitLocker sont des données hautement sensibles. Leur exposition en texte clair représente un risque de sécurité majeur pour votre organisation.
Prérequis et configuration des permissions
Rôles administratifs requis
Le script nécessite l'exécution avec un compte administrateur disposant des permissions déléguées appropriées. Consultez la documentation officielle Microsoft pour la liste complète des rôles supportés.
Permissions Microsoft Graph API
Le bon fonctionnement du script requiert l'attribution de permissions spécifiques :
| Permission | Utilité | Caractère obligatoire |
|---|---|---|
| BitLockerKey.Read.All | Lecture des clés de récupération BitLocker | Obligatoire |
| Device.Read.All | Informations détaillées des appareils | Optionnel |
| User.ReadBasic.All | Résolution du propriétaire de l'appareil | Optionnel |
Détection automatique
Le script détecte automatiquement les permissions disponibles, mais peut ne pas identifier les scopes plus larges comme Directory.Read.All. Adaptez le code selon vos besoins spécifiques.
Fonctionnalités avancées du script
Gestion des unités administratives restreintes (RMAU)
Cette version améliore la gestion des appareils ajoutés à une Restricted Management Administrative Unit. Pour ces appareils, l'accès aux clés BitLocker est limité aux utilisateurs disposant de permissions spécifiques sur l'unité concernée, indépendamment des rôles tenant-wide.
Contrôle du throttling
Pour les environnements avec plusieurs milliers de clés sauvegardées, le script intègre un mécanisme de délai (ligne 297) pour atténuer les problèmes de limitation d'API. Cette valeur est ajustable selon vos besoins.
Paramètres de configuration disponibles
Le script V2 propose plusieurs paramètres pour personnaliser l'output :
- IncludeDeviceInfo : Récupère les détails des appareils (nécessite Device.Read.All)
- IncludeDeviceOwner : Ajoute l'UPN du propriétaire (nécessite User.ReadBasic.All)
- DeviceReport : Génère un rapport centré sur les appareils
- AllowInsecureOutput : Produit un output en texte clair (non recommandé)
- InputFile : Déchiffre les clés depuis un fichier XML existant
Exemples d'utilisation pratique
Export basique des clés
1.\GraphSDK_Bitlocker_reportV2.ps1Inclusion des informations d'appareil
1.\GraphSDK_Bitlocker_reportV2.ps1 -IncludeDeviceInfoRapport complet avec propriétaires
1.\GraphSDK_Bitlocker_reportV2.ps1 -IncludeDeviceInfo -IncludeDeviceOwnerRapport centré appareil
1.\GraphSDK_Bitlocker_reportV2.ps1 -DeviceReportGestion sécurisée des fichiers de sortie
Format XML sécurisé
Par défaut, le script génère un fichier XML utilisant la représentation native des SecureString. Ces données chiffrées ne sont accessibles qu'à l'utilisateur et à l'appareil ayant généré le fichier.
Déchiffrement des clés
Pour accéder aux valeurs déchiffrées des clés :
1# Génération du rapport (clés chiffrées)2.\GraphSDK_Bitlocker_reportV2.ps1 -DeviceReport3 4# Déchiffrement depuis un fichier existant5.\GraphSDK_Bitlocker_reportV2.ps1 -InputFile .\2026-03-13_12-28-55_BitLockerKeys.xmlCette approche génère des fichiers CSV et HTML avec les clés déchiffrées, sans effectuer d'appels API supplémentaires.

Fonction dot-source
Vous pouvez utiliser la fonction Generate-HTMLReport en dot-sourcing le script pour une intégration dans vos propres workflows.
Rapports HTML interactifs
Le rapport HTML généré inclut une case à cocher "Mask BitLocker keys" activée par défaut pour masquer les valeurs sensibles. Cette fonctionnalité protège contre la visualisation accidentelle des clés.


Personnalisation et extension du script
Ajout de propriétés personnalisées
Pour enrichir l'output avec des propriétés supplémentaires, modifiez les lignes 253-257 du script. Pour le rapport centré appareil, ajustez la liste des propriétés exclues (ligne 310).
Mode de sortie non sécurisé
Attention
Le paramètre -AllowInsecureOutput génère les clés en texte clair. Utilisez cette option uniquement si vous disposez d'autres moyens de sécurisation et supprimez immédiatement les fichiers après utilisation.
Scripts PowerShell complémentaires
Vérification des permissions Graph
1# Vérification des permissions actuelles2$context = Get-MgContext3if ($context.Scopes -contains "BitLockerKey.Read.All") {4 Write-Host "Permissions BitLocker OK" -ForegroundColor Green5} else {6 Write-Host "Permissions insuffisantes" -ForegroundColor Red7}Nettoyage automatique des fichiers temporaires
1# Suppression sécurisée des fichiers de sortie2$outputFiles = Get-ChildItem -Path "." -Filter "*BitLockerKeys*"3foreach ($file in $outputFiles) {4 Remove-Item $file.FullName -Force5 Write-Host "Fichier supprimé : $($file.Name)" -ForegroundColor Yellow6}Liens utiles et références
- Documentation officielle Microsoft Graph BitLocker API
- Référentiel GitHub du script
- Guide des permissions Microsoft Graph
- Documentation PowerShell SecureString
Glossaire technique
BitLocker : Technologie de chiffrement de disque intégrée à Windows qui protège les données en cas de vol ou de perte d'appareil.
Entra ID : Service d'identité et d'accès cloud de Microsoft, anciennement Azure Active Directory.
Microsoft Graph SDK : Kit de développement logiciel pour interagir avec les API Microsoft Graph via PowerShell.
RMAU (Restricted Management Administrative Unit) : Unité administrative qui limite l'accès aux ressources à un ensemble spécifique d'administrateurs.
SecureString : Type de données .NET qui stocke les informations sensibles de manière chiffrée en mémoire.
Throttling : Mécanisme de limitation du taux de requêtes API pour éviter la surcharge des services Microsoft Graph.



