Identifier les personnes ayant accès à quoi dans votre environnement Exchange Server ou Microsoft 365 peut parfois s’avérer complexe. Si vous souhaitez auditer les autorisations de boîtes aux lettres (par exemple, vérifier si une personne dispose d’un accès complet ou des droits « Envoyer en tant que »), les scripts PowerShell sont généralement la solution idéale. C’est un peu étrange, mais ils permettent d’obtenir rapidement une vue d’ensemble claire. Cependant, leur configuration peut vite devenir complexe, surtout dans les grandes organisations ou avec plusieurs types de boîtes aux lettres. Voici donc une présentation de quelques scripts pratiques que vous pouvez exécuter ; ce sont ceux que j’ai utilisés et qui permettent de déterminer efficacement les autorisations de boîtes aux lettres, même s’ils sont un peu lourds ou lents dans les environnements de grande taille.
Autre précision : si vous recherchez des autorisations sur des dossiers spécifiques (comme le Calendrier ou la Boîte de réception), la procédure est différente. Mais rassurez-vous, la même approche PowerShell peut être utilisée. Ce n’est pas parfait, mais c’est bien plus rapide que de passer des heures à naviguer dans le portail d’administration.
Comment trouver les boîtes aux lettres auxquelles un utilisateur a accès dans Exchange ou Microsoft 365
Utilisation de Get-MailboxPermission pour obtenir des droits d’accès complets
Tout d’abord, les bases. Vous souhaitez voir qui dispose d’autorisations sur des boîtes aux lettres spécifiques. La commande principale est `exchange` Get-MailboxPermission. Elle est simple, mais vous devrez vous connecter à votre environnement Exchange (local ou en ligne).Pourquoi est-ce utile ? Parce que cette commande récupère les autorisations directes, et non seulement les appartenances aux groupes. Vous obtenez un aperçu rapide des autorisations de contrôle total et de lecture. Un tableau s’affiche avec les noms d’utilisateur, les autorisations et indique si elles sont héritées ou attribuées directement. Cette commande est particulièrement utile pour vérifier les autorisations accordées manuellement, car Windows et Exchange ont tendance à rendre l’héritage des autorisations complexe.
Voici à quoi cela ressemble généralement :
get-mailboxpermission -identity <[email protected]> | ft -AutoSize
Ce script affiche les utilisateurs et leurs autorisations sur cette boîte aux lettres. Sur certaines configurations, il fonctionne du premier coup, mais sur d’autres, il peut être nécessaire de le relancer ou de redémarrer PowerShell (ou d’attendre un peu).On ignore pourquoi il fonctionne parfois du premier coup et pas d’autres fois, mais c’est le propre, parfois frustrant, de ce type de scripts.
Afficher un rapport complet des autorisations sous forme de grille
Pour avoir une vue d’ensemble, exécutez ceci :
Get-Mailbox | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_. IsInherited -eq $false} | Out-GridView
Cela génère un tableau clair et concis, en excluant les autorisations par défaut et celles héritées. Pratique pour des vérifications rapides. Attention cependant : le traitement peut être lent avec un grand nombre de boîtes aux lettres.
Trouver les boîtes aux lettres auxquelles un utilisateur a un accès complet
Vous souhaitez vérifier quelles boîtes aux lettres un utilisateur spécifique peut ouvrir entièrement ? Cette commande est votre alliée :
Get-Mailbox -ResultSize Unlimited | Get-MailboxPermission -User Henrietta | ft User, Identity, AccessRights
Vous obtenez ainsi la liste des boîtes aux lettres, ce qui vous permet de vérifier si Henrietta dispose d’un accès complet ou d’autres autorisations. C’est très pratique pour identifier les autorisations accordées à certaines personnes, par exemple à des fins de conformité ou de nettoyage. Il arrive parfois que l’on découvre des surprises, comme des utilisateurs ayant des accès plus étendus qu’ils ne le pensent ou qu’ils ne devraient.
Utilisation d’Exchange Online PowerShell v3 (EXO V3)
Si vous utilisez Microsoft 365, le nouveau module EXO V3 simplifie encore un peu les choses. Les commandes sont légèrement différentes, mais le principe reste le même. Par exemple :
Get-EXOMailbox -ResultSize Unlimited | Get-EXOMailboxPermission -Identity $_. Identity | Where-Object {$_. User -eq "[email protected]"}
Astuce : Vous pouvez filtrer par type de boîte aux lettres –RecipientTypeDetails. Cela accélère la recherche lorsque vous ne vous intéressez qu’aux boîtes aux lettres partagées, aux boîtes aux lettres de salle ou aux boîtes aux lettres d’utilisateur. Par exemple :
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails SharedMailbox | Get-MailboxPermission -User "Henrietta" | ft User, Identity, AccessRights
Obtention des autorisations SendAs et Send on Behalf
Pour les droits SendAs, essayez ceci :
Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited | Get-RecipientPermission -Trustee Henrietta
Et pour « Envoyer au nom de », vous pouvez rechercher l’utilisateur dans la GrantSendOnBehalfTopropriété :
Get-Mailbox | ? {$_. GrantSendOnBehalfTo -match "Henrietta"}
Comment vérifier les autorisations d’accès à des dossiers spécifiques dans les boîtes aux lettres
Si les autorisations sont plus granulaires, comme l’accès au seul calendrier ou à la boîte de réception, c’est un peu plus complexe. Vous pouvez utiliser ` git add` Get-MailboxFolderStatisticset Get-MailboxFolderPermission`git add`.Imaginez que vous explorez l’arborescence des boîtes aux lettres. Le script ci-dessous analyse toutes les boîtes aux lettres et liste les autorisations des dossiers pour un utilisateur donné. Cependant, il est lent sur les grandes organisations ; essayez donc de cibler des boîtes aux lettres spécifiques si possible. Car, bien sûr, Exchange se doit de compliquer les choses inutilement.
$user_find_permissions= "*Henrietta Fischer*" $allpermissions = @() $MBXs = Get-Mailbox -ResultSize Unlimited Foreach ($MBX in $MBXs){ $folders = Get-MailboxFolderStatistics -Identity $MBX. PrimarySmtpAddress foreach ($folder in $folders){ try { $folderPath = "$($MBX. PrimarySmtpAddress):\" + $folder. Name $folderPerms = Get-MailboxFolderPermission -Identity $folderPath -ErrorAction Stop | Where {$_. User -like $user_find_permissions} $allpermissions += $folderPerms } catch { # skipping folders where permissions can't be retrieved Continue } } } $allpermissions | Select Identity, FolderName, User, AccessRights
Ce script affiche tous les dossiers (y compris les sous-dossiers) auxquels l’utilisateur a accès, ainsi que les niveaux d’autorisation tels que « Éditeur » ou « Relecteur ».Il est très utile pour les audits nécessitant une grande précision, mais attention : son exécution peut être lente avec des boîtes aux lettres volumineuses ou un grand nombre de dossiers.
Pour des besoins plus avancés, les cmdlets les plus récentes Get-EXOMailboxFolderPermissionsont Get-EXOMailboxFolderStatisticségalement disponibles dans les modules les plus récents. Elles sont censées être plus rapides et mieux intégrées, mais présentent encore quelques particularités.
Conclure
Gérer les permissions des boîtes mail dans cet environnement complexe relève parfois de la méthode empirique. Ces scripts sont certes très efficaces pour extraire les informations nécessaires, mais ils ne sont pas infaillibles. Il faut s’attendre à quelques dysfonctionnements sur les installations importantes ou avec des configurations de permissions complexes. Un peu de patience est parfois de mise : relancer les scripts, ajuster les filtres ou se connecter avec un autre compte peut s’avérer utile. Globalement, ces méthodes nous ont évité bien des tracas par rapport à la gestion manuelle des permissions.
Résumé
- Utilisez cette fonction
Get-MailboxPermissionpour obtenir rapidement la liste des personnes ayant des autorisations sur une boîte aux lettres. - Exécutez des requêtes plus volumineuses avec des options de filtrage
-RecipientTypeDetailspour accélérer le processus. - Vérifiez les permissions spécifiques des dossiers avec
Get-MailboxFolderPermission, mais attendez-vous à des ralentissements avec de grandes quantités de données. - Intégrez des filtres par type d’utilisateur ou de boîte aux lettres pour affiner les résultats.
Conclure
En gros, c’est un mélange de ces scripts et de bon sens. Idéal pour les audits, les enquêtes ou le nettoyage. Parfois, ça marche du premier coup, parfois il faut s’y reprendre à plusieurs fois ou procéder par petits lots. Si cela permet de lancer ne serait-ce qu’une seule mise à jour, c’est déjà une victoire. Croisons les doigts pour que cela contribue à dissiper la confusion.