Microsoft 365 - Exchange Online, Teams, SharePoint
- 1. Architecture du tenant et licences
- 2. Domaines et DNS (MX, SPF, DKIM, DMARC)
- 3. Migrations de messagerie
- 4. Flux de messagerie et connecteurs
- 5. Relais SMTP (imprimantes, applications)
- 6. EOP et Defender for Office 365
- 7. Purview : rétention, eDiscovery, DLP, étiquettes
- 8. Boîtes partagées, ressources et archivage
- 9. Teams : politiques et accès externe
- 10. SharePoint et OneDrive : partage et gouvernance
- 11. PowerShell : ExchangeOnlineManagement et Graph
- 12. Sauvegarde et responsabilité partagée
- 13. Audit et supervision
- 14. Dépannage : NDR et message trace
- 15. Pièges classiques
- 16. Checklist sécurité et mise en production
1. Architecture du tenant et licences
1.1 Le tenant : unité d'isolation
Un tenant Microsoft 365 est une instance Microsoft Entra ID (identifiée par un <TENANT_ID> GUID et un domaine initial contoso.onmicrosoft.com non modifiable) à laquelle sont rattachés les services : Exchange Online, SharePoint Online, OneDrive, Teams, Purview, Defender. Quelques conséquences structurantes :
- Localisation des données : fixée à la création du tenant selon le pays de facturation (datacenters UE pour la France). L'EU Data Boundary s'applique aux tenants européens. Changer de géographie a posteriori nécessite une offre spécifique (Advanced Data Residency / Multi-Geo).
- Domaine initial :
contoso.onmicrosoft.cometcontoso.sharepoint.comsont définitifs. Le choix du préfixe est une décision de marque : il apparaît dans toutes les URL SharePoint/OneDrive. Un renommage SharePoint existe mais reste une opération lourde. - Identité : cloud-only, synchronisée (Entra Connect Sync ou Entra Cloud Sync) ou fédérée. Voir Microsoft Entra ID pour l'authentification, le Conditional Access et PIM.
- Un seul tenant par organisation si possible : le multi-tenant complique la collaboration (Teams, calendriers libres/occupés, recherche) et la conformité. Les fusions-acquisitions donnent souvent lieu à une migration tenant-to-tenant (section 3).
1.2 Comparatif des licences principales
| Fonctionnalité | Business Premium | Microsoft 365 E3 | Microsoft 365 E5 |
|---|---|---|---|
| Plafond d'utilisateurs | 300 (par SKU Business) | Illimité | Illimité |
| Boîte Exchange Online | 50 Go + archive | 100 Go + archive extensible | 100 Go + archive extensible |
| Entra ID | P1 | P1 | P2 (PIM, Identity Protection) |
| Intune | Oui (Plan 1) | Oui (Plan 1) | Oui (Plan 1) |
| Defender for Office 365 | Plan 1 | Non (EOP seul) | Plan 2 (Threat Explorer, AIR, simulation d'attaques) |
| Defender for Endpoint | Defender for Business | Plan 1 | Plan 2 (EDR complet, hunting) |
| Purview | DLP Exchange/SharePoint, étiquettes manuelles | Rétention, DLP, étiquettes manuelles, eDiscovery standard | Étiquetage automatique, eDiscovery Premium, Insider Risk, Audit Premium |
| Téléphonie Teams | Add-on | Add-on | Teams Phone inclus (selon SKU) |
1.3 Décisions de conception à prendre au démarrage
| Sujet | Options | Recommandation |
|---|---|---|
| Source d'identité | Cloud-only / Entra Connect / Cloud Sync | Cloud-only si pas d'AD ; Cloud Sync pour les besoins simples ; Connect Sync si writeback complexe ou Exchange hybride |
| Authentification | PHS / PTA / Fédération (AD FS) | Password Hash Sync : pas de dépendance on-prem, détection des fuites d'identifiants |
| Attribution des licences | Manuelle / group-based licensing | Groupes (Entra ID P1) : traçable, automatisable via onboarding RH |
| Administration | Global Admin pour tous / rôles granulaires | Rôles minimaux (Exchange Admin, Teams Admin...) + PIM + 2 comptes bris de glace |
| Nommage des groupes | Libre / politique de nommage | Politique de nommage + restriction de création des groupes M365 (et donc des Teams) |
adm-xxx@contoso.onmicrosoft.com), sans boîte aux lettres, sans licence productivité, protégés par MFA résistant au phishing (FIDO2 / passkey). Un compte admin synchronisé depuis l'AD rend le tenant dépendant de la compromission de l'AD.
2. Domaines et DNS (MX, SPF, DKIM, DMARC)
2.1 Ajout et vérification d'un domaine
Dans le centre d'administration Microsoft 365 (Paramètres > Domaines), l'ajout d'un domaine demande un enregistrement TXT MS=msXXXXXXXX de preuve de propriété. Ce TXT peut être supprimé après vérification, mais il est commode de le conserver (ré-vérification). Un domaine ne peut être vérifié que dans un seul tenant à la fois : c'est le point bloquant de toute migration tenant-to-tenant.
2.2 Enregistrements attendus
| Type | Nom | Valeur | Rôle |
|---|---|---|---|
| MX | @ | contoso-com.mail.protection.outlook.com (priorité 0) |
Réception (point d'entrée EOP) |
| CNAME | autodiscover | autodiscover.outlook.com |
Configuration automatique d'Outlook |
| TXT | @ | v=spf1 include:spf.protection.outlook.com -all |
SPF |
| CNAME | selector1._domainkey | Valeur fournie par Get-DkimSigningConfig |
DKIM (clé active ou en rotation) |
| CNAME | selector2._domainkey | Valeur fournie par Get-DkimSigningConfig |
DKIM (seconde clé) |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@contoso.com |
DMARC (durcir progressivement) |
| CNAME | enterpriseregistration / enterpriseenrollment | enterpriseregistration.windows.net / enterpriseenrollment.manage.microsoft.com |
Enregistrement d'appareils, Intune (voir Intune) |
mx.microsoft (zone signée DNSSEC) pour permettre l'inbound SMTP DANE. Pour un nouveau domaine, le centre d'administration peut proposer cette forme : reprendre exactement la valeur affichée dans le portail plutôt qu'une valeur recopiée d'une documentation.
2.3 DKIM : activation et rotation
Sans configuration, Exchange Online signe avec le domaine *.onmicrosoft.com : l'alignement DMARC échoue sur le domaine personnalisé. Il faut publier les deux CNAME puis activer la signature. Le format de la cible CNAME a évolué (ancien : selector1-contoso-com._domainkey.contoso.onmicrosoft.com ; récent : sous dkim.mail.microsoft) : toujours lire la valeur renvoyée par le tenant.
# Connexion
Connect-ExchangeOnline -UserPrincipalName adm-exo@contoso.onmicrosoft.com
# Créer la configuration (désactivée) et récupérer les CNAME à publier
New-DkimSigningConfig -DomainName contoso.com -Enabled $false -KeySize 2048
Get-DkimSigningConfig -Identity contoso.com | Format-List Selector1CNAME, Selector2CNAME, Status
# Après propagation DNS
Set-DkimSigningConfig -Identity contoso.com -Enabled $true
# Rotation (bascule vers l'autre sélecteur, nouvelle clé 2048 bits)
Rotate-DkimSigningConfig -Identity contoso.com -KeySize 2048
Get-DkimSigningConfig -Identity contoso.com | Format-List Selector*KeySize, RotateOnDate, SelectorBeforeRotateOnDate
2.4 SPF : budget de 10 lookups
Chaque include:, a, mx, exists, redirect consomme une requête DNS ; au-delà de 10, le résultat est permerror, traité comme un échec par de nombreux récepteurs. Les plateformes tierces (CRM, emailing, ticketing) font vite exploser le budget. Stratégie : envoyer le marketing depuis un sous-domaine dédié (news.contoso.com) avec son propre SPF/DKIM, plutôt que d'empiler les includes sur le domaine principal.
# Compter les lookups SPF (approximation : un niveau d'imbrication)
Resolve-DnsName contoso.com -Type TXT | Where-Object { $_.Strings -match '^v=spf1' } | Select-Object -Expand Strings
nslookup -type=txt spf.protection.outlook.com
2.5 DMARC : montée en charge
p=noneavecruapendant 2 à 4 semaines : inventorier tous les expéditeurs légitimes (rapports agrégés).- Corriger : DKIM pour chaque plateforme tierce, SPF pour les relais restants.
p=quarantine; pct=25puis 100.p=reject, avecsp=rejectpour les sous-domaines non utilisés.
Les détails (alignement relaxé/strict, lecture des rapports, ARC) sont traités dans DKIM / SPF / DMARC.
v=spf1 -all, un DMARC p=reject et un MX nul (0 .) pour ne pas servir à l'usurpation.
3. Migrations de messagerie
3.1 Comparatif des méthodes
| Méthode | Source | Volume indicatif | Coexistence | Contenu migré | Limites |
|---|---|---|---|---|---|
| Cutover | Exchange on-prem | Jusqu'à ~150 boîtes (max théorique 2000) | Aucune (bascule en bloc) | Mail, calendrier, contacts | Profils Outlook à recréer ; incompatible avec la synchro d'annuaire active |
| Staged | Exchange 2003/2007 | Par lots | Partielle | Mail, calendrier, contacts | Versions obsolètes : cas devenu marginal |
| Hybride (full) | Exchange 2016/2019/SE | Illimité | Complète (free/busy, GAL, déplacement transparent) | Tout, profil Outlook conservé | Complexité, certificats publics, ports entrants vers EWS/Autodiscover |
| Hybride minimal (express) | Exchange 2016/2019/SE | Moyen | Limitée (pas de free/busy croisé) | Tout | Pour migrer vite sans coexistence longue |
| IMAP | Tout serveur IMAP (Gmail, Zimbra, hébergeur) | Tout | Par MX dual / redirection | Mail uniquement (50 000 éléments max par boîte selon la doc) | Ni calendrier, ni contacts, ni règles ; boîtes à créer avant |
| Google Workspace (natif) | Google Workspace | Tout | Routage via sous-domaine | Mail, calendrier, contacts | Projet GCP + compte de service à délégation domaine |
| Cross-tenant mailbox migration | Autre tenant M365 | Tout | Via MailUser cible | Boîte complète (sans re-téléchargement OST... selon le client) | Licence de migration cross-tenant par utilisateur ; ne migre ni Teams ni SharePoint |
3.2 Hybride : points d'attention
- Hybrid Configuration Wizard (HCW) : téléchargé depuis l'EAC ; configure connecteurs, OAuth, organisation relationship, domaine coexistence
contoso.mail.onmicrosoft.com. - Application hybride dédiée : Microsoft a fait évoluer l'authentification hybride (application Entra dédiée au lieu du principal partagé, fin progressive d'EWS côté Exchange Online). Suivre les annonces du Message Center et les mises à jour cumulatives (CU) requises.
- Certificat public sur le serveur hybride pour le transport TLS (SAN :
mail.contoso.com,autodiscover.contoso.com). - Migration Endpoint : MRS Proxy activé sur l'EWS virtual directory ; tester avec
Test-MigrationServerAvailability. - Bascule finale : MX vers EOP, Autodiscover vers Exchange Online seulement quand toutes les boîtes sont migrées.
# Tester l'endpoint de migration (EXO)
Test-MigrationServerAvailability -ExchangeRemoteMove -RemoteServer mail.contoso.com -Credentials (Get-Credential)
# Lot de déplacement distant (remote move) depuis un CSV (colonne EmailAddress)
New-MigrationBatch -Name "Lot-01-Compta" -SourceEndpoint "Hybrid-EP" `
-CSVData ([System.IO.File]::ReadAllBytes("C:\mig\lot01.csv")) `
-TargetDeliveryDomain "contoso.mail.onmicrosoft.com" `
-BadItemLimit 10 -AutoStart
# Synchronisation incrémentale puis finalisation planifiée
Get-MigrationBatch "Lot-01-Compta" | Format-List Status, TotalCount, SyncedCount, FailedCount
Get-MigrationUser -BatchId "Lot-01-Compta" | Get-MigrationUserStatistics | Select Identity, Status, PercentageComplete, Error
Complete-MigrationBatch -Identity "Lot-01-Compta"
3.3 Tenant-to-tenant : séquencement
- Inventaire : boîtes, OneDrive, sites, Teams, groupes, applications enregistrées, flux Power Automate (non migrés nativement).
- Réduire le TTL des enregistrements DNS (MX, autodiscover) à 300 s quelques jours avant.
- Pré-provisionner les utilisateurs cibles (MailUser avec
ExchangeGUIDetLegacyExchangeDNde la source enx500) pour la migration cross-tenant. - Pré-copier les données (synchro incrémentale), sans finaliser.
- Week-end de bascule : retirer le domaine de la source (supprimer toutes les références : UPN, proxyAddresses, groupes), le vérifier dans la cible, finaliser, basculer le MX.
- Recréer les profils Outlook / reconnecter OneDrive et Teams ; communiquer la nouvelle URL SharePoint.
LegacyExchangeDN en adresse X500: sur chaque destinataire cible. Sans cela, les réponses à d'anciens messages et les entrées du cache de saisie semi-automatique Outlook génèrent des NDR IMCEAEX.
4. Flux de messagerie et connecteurs
4.1 Pipeline de traitement
Un message entrant traverse : filtrage de connexion (réputation IP, liste d'autorisation/blocage) > antimalware > règles de flux de messagerie (transport rules) > anti-spam / anti-phishing (usurpation, emprunt d'identité) > Safe Attachments / Safe Links (Defender) > remise. Comprendre cet ordre explique pourquoi une règle de transport qui positionne SCL=-1 court-circuite le filtrage anti-spam mais pas l'antimalware.
4.2 Connecteurs
| Type | Cas d'usage | Identification de l'émetteur |
|---|---|---|
| Entrant Partner | Partenaire imposant TLS, passerelle de sécurité tierce en amont | IP source ou nom du certificat TLS |
| Entrant OnPremises | Serveur on-prem, appliance, relais applicatif | Certificat TLS (préféré) ou IP publique fixe |
| Sortant Partner | TLS forcé vers un domaine, smart host tiers (passerelle de chiffrement, archivage) | Domaine destinataire ou règle de transport |
| Sortant OnPremises | Hybride : remise vers les boîtes encore on-prem | Domaines accédés via le connecteur |
contoso-com.mail.protection.outlook.com.
4.3 Règles de flux de messagerie (transport rules)
Usages maîtrisés : bandeau « message externe » (préférer l'option native Set-ExternalInOutlook -Enabled $true), blocage d'extensions, chiffrement Purview Message Encryption conditionnel, disclaimers, routage vers un connecteur. À éviter : les règles qui contournent le filtrage sur le seul domaine expéditeur (usurpable).
# Bandeau natif "Externe" dans Outlook
Set-ExternalInOutlook -Enabled $true -AllowList @{Add="partenaire.example.com"}
# Bloquer les pièces jointes exécutables entrantes (en complément du filtre de pièces jointes communes)
New-TransportRule -Name "Bloquer PJ executables" `
-FromScope NotInOrganization `
-AttachmentExtensionMatchesWords "exe","js","vbs","iso","img","lnk","hta","one" `
-RejectMessageReasonText "Type de piece jointe refuse" -RejectMessageEnhancedStatusCode "5.7.1" `
-Mode Audit # passer en Enforce après validation
# Bloquer le transfert automatique externe (préférer la politique anti-spam sortante)
Set-HostedOutboundSpamFilterPolicy -Identity Default -AutoForwardingMode Off
-Mode Audit (ou AuditAndNotify) quelques jours. Les correspondances sont visibles dans le message trace détaillé (événement Transport rule).
4.4 Domaines acceptés
- Authoritative : toutes les boîtes du domaine sont dans EXO ; destinataire inconnu = NDR immédiat. Activer Directory-Based Edge Blocking (DBEB, par défaut) pour rejeter en session SMTP.
- Internal Relay : une partie des boîtes est ailleurs (on-prem, autre système) ; les inconnus sont routés via un connecteur sortant. Indispensable pendant une coexistence non hybride.
5. Relais SMTP (imprimantes, applications)
5.1 Trois options
| Critère | SMTP AUTH (client submission) | Direct Send | Relais via connecteur |
|---|---|---|---|
| Point de connexion | smtp.office365.com:587 STARTTLS |
MX du tenant, port 25 | MX du tenant, port 25 |
| Authentification | Compte + mot de passe (basic) ou OAuth | Aucune | IP publique fixe ou certificat TLS |
| Destinataires externes | Oui | Non (internes uniquement) | Oui |
| Licence | Boîte licenciée (ou partagée selon le mode) | Aucune | Aucune |
| Limites | 30 messages/min, 10 000 destinataires/jour (limites EXO) | Filtrage anti-spam complet, usurpable | IP fixe obligatoire, SPF à mettre à jour |
| Statut 2026 | Basic auth en cours de retrait (voir 5.2) | Peut être désactivé au niveau tenant | Option recommandée pour les équipements |
5.2 État de l'authentification basique
L'authentification basique a été désactivée pour EWS, EAS, POP, IMAP, PowerShell distant, MAPI, RPC, OAB et Autodiscover en 2022. SMTP AUTH en basic a fait l'objet d'un calendrier de retrait annoncé pour 2026, ajusté plusieurs fois par Microsoft : consulter le Message Center et la page « Deprecation of Basic authentication in Exchange Online » pour la date effective sur votre tenant. Dans tous les cas, un équipement qui dépend d'un login/mot de passe SMTP doit être migré vers OAuth (s'il le supporte), vers un connecteur, ou vers un relais interne.
# Tenant : désactiver SMTP AUTH partout, puis l'autoriser boîte par boîte si nécessaire
Set-TransportConfig -SmtpClientAuthenticationDisabled $true
Set-CASMailbox -Identity scanner@contoso.com -SmtpClientAuthenticationDisabled $false
Get-CASMailbox -ResultSize Unlimited | Where-Object { $_.SmtpClientAuthenticationDisabled -eq $false } | Select PrimarySmtpAddress
# Refuser le Direct Send non authentifié (usurpation interne)
Set-OrganizationConfig -RejectDirectSend $true
Get-OrganizationConfig | Format-List RejectDirectSend
direction@contoso.com à compta@contoso.com » via le MX. Des campagnes l'exploitent activement. Si aucun équipement ne l'utilise, activer RejectDirectSend ; sinon basculer ces équipements vers un connecteur partenaire identifié par IP ou certificat avant de l'activer.
5.3 Connecteur de relais par IP
# Connecteur entrant pour le relais des équipements (IP publique fixe du site)
New-InboundConnector -Name "Relais-Site-Paris" -ConnectorType OnPremises `
-SenderIPAddresses 203.0.113.10 -SenderDomains * `
-RequireTls $true -RestrictDomainsToIPAddresses $true
# SPF : ajouter l'IP du site
# v=spf1 ip4:203.0.113.10 include:spf.protection.outlook.com -all
5.4 Architecture recommandée : relais interne
Pour un parc d'imprimantes et d'applications hétérogènes, un relais SMTP interne (Postfix ou serveur IIS SMTP, ce dernier étant obsolète) accepte les messages en clair sur le LAN depuis une liste d'IP autorisées, puis les remet à EXO via le connecteur ci-dessus en TLS. Avantages : un seul point de sortie, une seule IP dans le SPF, journalisation centralisée, indépendance vis-à-vis des capacités TLS/OAuth des équipements.
# /etc/postfix/main.cf (extrait) - relais vers EXO
myhostname = relay01.contoso.local
mynetworks = 127.0.0.0/8, 10.10.20.0/24
inet_interfaces = 10.10.20.5
relayhost = [contoso-com.mail.protection.outlook.com]:25
smtp_tls_security_level = encrypt
smtp_tls_loglevel = 1
smtpd_relay_restrictions = permit_mynetworks, reject
# Forcer un expéditeur appartenant au domaine accepté
sender_canonical_maps = regexp:/etc/postfix/sender_canonical
Microsoft propose également High Volume Email (HVE) pour les envois internes en volume depuis des applications : vérifier son statut (préversion/disponibilité générale) et ses conditions de licence avant de l'adopter.
6. EOP et Defender for Office 365
6.1 Strates de protection
| Fonction | EOP (toutes licences EXO) | Defender for O365 P1 | Defender for O365 P2 |
|---|---|---|---|
| Anti-spam, antimalware, anti-usurpation | Oui | Oui | Oui |
| Anti-phishing : protection d'emprunt d'identité (utilisateurs/domaines), mailbox intelligence | Non | Oui | Oui |
| Safe Attachments (détonation en sandbox), Safe Links (réécriture et vérification au clic) | Non | Oui (mail, Teams, Office) | Oui |
| Threat Explorer, AIR (investigation automatique), Attack simulation training | Non | Real-time detections | Oui |
6.2 Politiques prédéfinies (preset security policies)
Les politiques Standard et Strict appliquent les réglages recommandés par Microsoft et suivent automatiquement leurs évolutions. Elles sont prioritaires sur les politiques personnalisées. Démarche conseillée : Standard pour tous, Strict pour les cibles à risque (direction, finance, RH, admins), politiques personnalisées uniquement pour les exceptions documentées. L'analyseur de configuration (portail Defender > Email & collaboration > Policies > Configuration analyzer) liste les écarts.
6.3 Anti-phishing : réglages structurants
- Users to protect : jusqu'à 350 utilisateurs (dirigeants) protégés contre l'emprunt de nom d'affichage.
- Domains to protect : inclure les domaines possédés et ceux des partenaires critiques (détection des typosquats).
- Spoof intelligence : examiner l'insight d'usurpation et autoriser explicitement les expéditeurs légitimes qui échouent l'authentification (plutôt que désactiver la protection).
- Seuil de phishing : 2 (Aggressive) en Standard, 3 (More aggressive) en Strict.
- Honor DMARC policy : activé ; quand l'expéditeur publie
p=reject, appliquer le rejet.
6.4 Quarantaine
Les quarantine policies définissent ce que l'utilisateur peut faire (consulter, demander la libération, libérer) par type de détection. Règle d'or : jamais de libération en libre-service pour le malware et le phishing à haute confiance (c'est d'ailleurs imposé pour ces catégories).
# Messages en quarantaine pour un destinataire, dernières 48 h
Get-QuarantineMessage -RecipientAddress user@contoso.com -StartReceivedDate (Get-Date).AddDays(-2) |
Select ReceivedTime, SenderAddress, Subject, QuarantineTypes, Identity
# Libérer un message vers son destinataire d'origine
Release-QuarantineMessage -Identity "<IDENTITY>" -ReleaseToAll
# Prévisualiser avant de libérer
Preview-QuarantineMessage -Identity "<IDENTITY>"
6.5 Tenant Allow/Block List
Les autorisations se font par la soumission (portail Defender > Submissions) : Microsoft analyse et crée une entrée « allow » temporaire. Les blocages (expéditeurs, domaines, URL, hachages de fichiers) sont gérés dans la Tenant Allow/Block List. Éviter les anciennes listes d'expéditeurs autorisés des politiques anti-spam, qui contournent le filtrage sans analyse.
New-TenantAllowBlockListItems -ListType Sender -Block -Entries "fraude@example.net" -NoExpiration
New-TenantAllowBlockListItems -ListType Url -Block -Entries "*.malicious.example" -ExpirationDate (Get-Date).AddDays(90)
Get-TenantAllowBlockListItems -ListType Sender
7. Purview : rétention, eDiscovery, DLP, étiquettes
7.1 Rétention : politiques et étiquettes
| Objet | Portée | Usage |
|---|---|---|
| Retention policy | Emplacements entiers (toutes les boîtes, tous les sites, chats Teams...) | Socle : « conserver 10 ans puis rien », « supprimer les chats Teams après 2 ans » |
| Retention label | Un élément (document, mail), appliqué manuellement, par défaut sur une bibliothèque, ou automatiquement (E5) | Exceptions par type documentaire : contrats, bulletins de paie, déclaration en record |
| Litigation hold / eDiscovery hold | Boîte, site, requête | Gel juridique, prime sur toute suppression |
Principes de résolution : la conservation l'emporte sur la suppression ; la période de conservation la plus longue l'emporte ; une étiquette explicite l'emporte sur une politique pour la suppression. Les éléments supprimés par l'utilisateur mais retenus vont dans Recoverable Items (boîtes) ou dans la Preservation Hold Library (sites), qui consomment le quota.
7.2 eDiscovery
Purview a unifié Content Search, eDiscovery (Standard) et eDiscovery (Premium) dans une expérience unique basée sur des cas ; les fonctionnalités Premium (jeux de révision, déduplication, gestion des dépositaires) restent liées à E5 / add-on. Le rôle eDiscovery Manager doit être attribué explicitement, même aux Global Admins.
# Connexion au PowerShell Purview (Security & Compliance)
Connect-IPPSSession -UserPrincipalName adm-compliance@contoso.onmicrosoft.com
# Recherche de contenu (ex. : purge d'un mail de phishing distribué)
New-ComplianceSearch -Name "Phish-2026-10-19" -ExchangeLocation All `
-ContentMatchQuery 'subject:"Facture impayee" AND from:attaquant@example.net AND received>=2026-10-18'
Start-ComplianceSearch -Identity "Phish-2026-10-19"
Get-ComplianceSearch -Identity "Phish-2026-10-19" | Format-List Status, Items, Size
# Purge (SoftDelete = récupérable par l'utilisateur ; HardDelete = Recoverable Items purgés)
New-ComplianceSearchAction -SearchName "Phish-2026-10-19" -Purge -PurgeType SoftDelete
-Purge traite un nombre limité d'éléments par boîte et par exécution. Pour un incident, Defender for Office 365 P2 (Threat Explorer > Take action) est plus adapté et tracé dans l'Action Center.
7.3 DLP
- Commencer par les modèles (données financières France, IBAN, numéros de sécurité sociale) en mode simulation, analyser les faux positifs pendant 2 à 4 semaines.
- Emplacements : Exchange, SharePoint, OneDrive, Teams, postes (Endpoint DLP, nécessite l'onboarding Defender/Purview des appareils).
- Actions graduelles : policy tip > justification métier > blocage.
- Les Sensitive Information Types personnalisés (regex + mots-clés de proximité + checksum) réduisent fortement les faux positifs.
7.4 Étiquettes de confidentialité (sensitivity labels)
| Étiquette | Marquage | Chiffrement | Conteneurs (Teams/sites) |
|---|---|---|---|
| Public | Aucun | Non | Partage externe autorisé |
| Interne | Pied de page | Non | Invités existants uniquement |
| Confidentiel | En-tête + filigrane | Oui, groupe d'utilisateurs internes | Privé, pas d'invités |
| Confidentiel - Partenaire X | En-tête | Oui, interne + domaine partenaire | Invités du domaine partenaire |
8. Boîtes partagées, ressources et archivage
8.1 Types de destinataires
| Type | Licence | Quota | Remarques |
|---|---|---|---|
| UserMailbox | Requise | 50/100 Go selon plan | Un humain, un compte |
| SharedMailbox | Non requise jusqu'à 50 Go, sans archive ni hold | 50 Go | Licence (Exchange Plan 2 ou équivalent) si archive, litigation hold ou > 50 Go. Bloquer la connexion du compte. |
| RoomMailbox / EquipmentMailbox | Non requise (Teams Rooms : licence dédiée) | 50 Go | Traitement automatique des réservations (Calendar Attendant) |
| Groupe Microsoft 365 | - | 50 Go (boîte de groupe) | Boîte + calendrier + site SharePoint + Planner, support d'une équipe Teams |
| MailUser / MailContact | - | - | Adresse externe dans la GAL ; MailUser = utilisateur pouvant s'authentifier |
8.2 Permissions et délégations
| Permission | Cmdlet | Effet |
|---|---|---|
| FullAccess | Add-MailboxPermission |
Ouvrir la boîte ; auto-mapping dans Outlook par défaut |
| SendAs | Add-RecipientPermission |
Envoyer en tant que (aucune mention du délégué) |
| SendOnBehalf | Set-Mailbox -GrantSendOnBehalfTo |
« X de la part de Y » |
| Dossier (calendrier) | Add-MailboxFolderPermission |
Reviewer, Editor, LimitedDetails, AvailabilityOnly |
# Boîte partagée avec accès pour un groupe de sécurité à extension messagerie
New-Mailbox -Shared -Name "Comptabilite" -PrimarySmtpAddress compta@contoso.com
Add-MailboxPermission -Identity compta@contoso.com -User "GRP-Compta" -AccessRights FullAccess -InheritanceType All -AutoMapping $false
Add-RecipientPermission -Identity compta@contoso.com -Trustee "GRP-Compta" -AccessRights SendAs -Confirm:$false
# Conserver une copie des messages envoyés "en tant que" dans la boîte partagée
Set-Mailbox compta@contoso.com -MessageCopyForSentAsEnabled $true -MessageCopyForSendOnBehalfEnabled $true
# Bloquer la connexion directe au compte de la boîte partagée (Graph)
Update-MgUser -UserId compta@contoso.com -AccountEnabled:$false
# Calendrier : les collègues voient les détails limités
Set-MailboxFolderPermission -Identity "user@contoso.com:\Calendrier" -User Default -AccessRights LimitedDetails
Calendar, Calendrier...). Le récupérer avec Get-MailboxFolderStatistics user@contoso.com -FolderScope Calendar | Select -First 1 Name dans les scripts.
8.3 Salles et ressources
New-Mailbox -Room -Name "Salle Everest" -PrimarySmtpAddress salle.everest@contoso.com -ResourceCapacity 12
Set-CalendarProcessing salle.everest@contoso.com -AutomateProcessing AutoAccept `
-BookingWindowInDays 180 -MaximumDurationInMinutes 480 -AllowConflicts $false `
-DeleteSubject $false -AddOrganizerToSubject $false -ProcessExternalMeetingMessages $false
# Places / listes de salles pour Room Finder
New-DistributionGroup -RoomList -Name "Salles Paris" -Members salle.everest@contoso.com
8.4 Archivage
- Archive en ligne :
Enable-Mailbox -Archive. Les éléments y sont déplacés par une étiquette MRM Move to Archive (par défaut 2 ans dans la Default MRM Policy). - Archivage à extension automatique : jusqu'à 1,5 To ; activé par boîte ou pour l'organisation. Irréversible.
- Managed Folder Assistant : traite les boîtes environ tous les 7 jours ; forcer avec
Start-ManagedFolderAssistant. - Un fichier PST n'est pas un archivage : importer les PST via le service d'import Purview (Azure Blob + fichier de mappage CSV), puis interdire les PST via GPO/Intune.
Enable-Mailbox user@contoso.com -Archive
Enable-Mailbox user@contoso.com -AutoExpandingArchive
Start-ManagedFolderAssistant -Identity user@contoso.com
Get-MailboxStatistics user@contoso.com -Archive | Select DisplayName, TotalItemSize, ItemCount
Get-MailboxFolderStatistics user@contoso.com -FolderScope RecoverableItems | Select Name, FolderAndSubfolderSize
9. Teams : politiques et accès externe
9.1 Accès externe vs accès invité
| Critère | Accès externe (fédération) | Accès invité (B2B) | Canaux partagés (B2B Direct Connect) |
|---|---|---|---|
| Ce que voit l'externe | Chat 1:1 / de groupe, appels, présence | Une équipe entière (fichiers, canaux standard) | Un canal précis, depuis son propre tenant |
| Objet créé dans votre annuaire | Aucun | Compte invité (#EXT#) | Aucun |
| Contrôle | Teams admin center : domaines autorisés/bloqués | Entra External Identities + Teams + SharePoint | Paramètres d'accès inter-tenant Entra (des deux côtés) |
| Conditional Access | Non applicable | Applicable (MFA invité) | Confiance MFA du tenant partenaire |
Connect-MicrosoftTeams
# Fédération : n'autoriser que les domaines partenaires listés
Set-CsTenantFederationConfiguration -AllowFederatedUsers $true `
-AllowedDomainsAsAList @{Add="partenaire.example.com","fournisseur.example.org"}
# Comptes Teams non gérés (personnels) : à désactiver sauf besoin métier
Set-CsTenantFederationConfiguration -AllowTeamsConsumer $false -AllowTeamsConsumerInbound $false
Get-CsTenantFederationConfiguration
9.2 Politiques Teams
- Meeting policies : qui peut contourner la salle d'attente (lobby), enregistrement et transcription (attention RGPD), qui peut présenter, participants anonymes.
- Messaging policies : suppression/modification des messages envoyés, applications Giphy, priorité urgente.
- App permission / app setup policies (ou gestion centralisée des applications) : bloquer les applications tierces par défaut, approuver au cas par cas.
- Création d'équipes : contrôlée par la création de groupes M365 (Entra) ; limiter à un groupe de sécurité et proposer un processus de demande.
- Expiration des groupes : politique Entra (ex. 365 jours), renouvellement automatique si activité.
# Politique de réunion pour un groupe sensible
New-CsTeamsMeetingPolicy -Identity "Reunions-Direction" -AllowCloudRecording $false -AllowTranscription $false `
-AutoAdmittedUsers "EveryoneInCompanyExcludingGuests" -AllowAnonymousUsersToJoinMeeting $false
Grant-CsTeamsMeetingPolicy -Group "GRP-Direction" -PolicyName "Reunions-Direction" -Rank 1
# Restreindre la création des groupes M365 (Graph, paramètre d'annuaire Group.Unified)
# Voir la procédure Microsoft "Manage who can create Microsoft 365 Groups" : EnableGroupCreation = false
# + GroupCreationAllowedGroupId = <ID_GROUPE_AUTORISE>
10. SharePoint et OneDrive : partage et gouvernance
10.1 Niveaux de partage externe
| Niveau | Valeur SharingCapability |
Effet |
|---|---|---|
| Tout le monde | ExternalUserAndGuestSharing |
Liens « Anyone » sans authentification |
| Invités nouveaux et existants | ExternalUserSharingOnly |
Authentification requise (code par mail ou compte B2B) |
| Invités existants | ExistingExternalUserSharingOnly |
Seulement les invités déjà dans l'annuaire |
| Organisation uniquement | Disabled |
Aucun partage externe |
Le niveau du tenant est un plafond : un site ne peut pas être plus permissif que le tenant, et OneDrive ne peut pas être plus permissif que SharePoint.
Connect-SPOService -Url https://contoso-admin.sharepoint.com
# Plafond tenant : invités authentifiés, liens par défaut restreints
Set-SPOTenant -SharingCapability ExternalUserSharingOnly `
-DefaultSharingLinkType Internal -DefaultLinkPermission View `
-RequireAcceptingAccountMatchInvitedAccount $true `
-ExternalUserExpirationRequired $true -ExternalUserExpireInDays 90 `
-EnableAzureADB2BIntegration $true
# Si les liens Anyone sont autorisés : expiration et lecture seule
Set-SPOTenant -RequireAnonymousLinksExpireInDays 30 -FileAnonymousLinkType View -FolderAnonymousLinkType View
# Limiter le partage à des domaines (liste blanche)
Set-SPOTenant -SharingDomainRestrictionMode AllowList -SharingAllowedDomainList "partenaire.example.com"
# Site sensible : aucun partage externe
Set-SPOSite -Identity https://contoso.sharepoint.com/sites/RH -SharingCapability Disabled
10.2 Gouvernance des sites
- Architecture plate + hubs : un site par projet/équipe, rattaché à un hub (navigation, thème, recherche). Les sous-sites sont déconseillés.
- Permissions : gérer via les groupes M365 (propriétaires/membres) ou les groupes SharePoint du site ; éviter l'héritage cassé au niveau dossier/fichier (ingérable, mauvais pour les performances).
- Propriétaires : au minimum deux par site ; politique de sites sans propriétaire.
- Limites : 30 millions d'éléments par bibliothèque, mais le seuil d'affichage de liste (5 000) et la synchronisation OneDrive (recommandation : < 300 000 fichiers synchronisés par client) sont les vraies contraintes opérationnelles.
- Versioning : les limites de versions (par défaut 500) pèsent sur le stockage ; les paramètres de versions automatiques ou par âge permettent de réduire la consommation.
- Copilot et sur-partage : Microsoft 365 Copilot respecte les permissions, ce qui rend visibles les sur-partages existants (« Everyone except external users »). Auditer avant déploiement (rapports de gouvernance d'accès aux données, Restricted Content Discovery, fonctions de SharePoint Advanced Management selon licence).
# Sites partagés avec "Everyone except external users" : repérer via les rapports DAG
# Inventaire rapide des sites et de leur niveau de partage
Get-SPOSite -Limit All | Select Url, Template, SharingCapability, StorageUsageCurrent, LastContentModifiedDate |
Export-Csv C:\audit\sites.csv -NoTypeInformation -Encoding UTF8
# OneDrive : rétention après départ d'un utilisateur (jours)
Set-SPOTenant -OrphanedPersonalSitesRetentionPeriod 365
# Accès depuis appareils non gérés : navigateur uniquement, pas de téléchargement
Set-SPOTenant -ConditionalAccessPolicy AllowLimitedAccess
11. PowerShell : ExchangeOnlineManagement et Graph
11.1 Modules et authentification
| Module | Connexion | Périmètre |
|---|---|---|
| ExchangeOnlineManagement (v3, REST) | Connect-ExchangeOnline / Connect-IPPSSession |
Exchange Online, Purview (S&C) |
| Microsoft.Graph (et Microsoft.Graph.Beta) | Connect-MgGraph -Scopes ... |
Utilisateurs, groupes, licences, Intune, rapports |
| MicrosoftTeams | Connect-MicrosoftTeams |
Politiques Teams, téléphonie |
| Microsoft.Online.SharePoint.PowerShell / PnP.PowerShell | Connect-SPOService / Connect-PnPOnline |
Tenant SharePoint / contenu des sites |
Connect-MsolService ou Connect-AzureAD doit être réécrit avec Microsoft Graph PowerShell. PnP.PowerShell exige désormais l'enregistrement de sa propre application Entra (l'application multi-tenant PnP partagée a été supprimée).
11.2 Automatisation sans interaction (app-only)
# Application Entra avec certificat + rôle Exchange.ManageAsApp + rôle Entra "Exchange Administrator"
Connect-ExchangeOnline -AppId "<APP_ID>" -CertificateThumbprint "<THUMBPRINT>" `
-Organization "contoso.onmicrosoft.com" -ShowBanner:$false
# Graph app-only
Connect-MgGraph -ClientId "<APP_ID>" -TenantId "<TENANT_ID>" -CertificateThumbprint "<THUMBPRINT>"
# Dans Azure Automation / Functions : identité managée
Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
Mail.Read), utiliser RBAC for Applications d'Exchange Online (management scopes) plutôt que l'ancienne Application Access Policy.
11.3 Message trace
# Les cmdlets Get-MessageTrace / Get-MessageTraceDetail sont remplacées par les versions V2
Get-MessageTraceV2 -SenderAddress facturation@contoso.com -StartDate (Get-Date).AddDays(-2) -EndDate (Get-Date) |
Select Received, SenderAddress, RecipientAddress, Subject, Status, MessageTraceId
# Détail des événements (filtrage, règle de transport, remise, NDR)
Get-MessageTraceDetailV2 -MessageTraceId "<MESSAGE_TRACE_ID>" -RecipientAddress client@example.com |
Select Date, Event, Action, Detail
# Au-delà de 10 jours (jusqu'à 90 jours) : rapport historique asynchrone
Start-HistoricalSearch -ReportTitle "Envois fournisseur" -StartDate (Get-Date).AddDays(-60) -EndDate (Get-Date) `
-ReportType MessageTrace -SenderAddress fournisseur@example.com -NotifyAddress adm@contoso.com
Get-HistoricalSearch | Select ReportTitle, Status, Rows
11.4 Audits de permissions et délégations
# Toutes les délégations FullAccess non héritées (hors SELF)
Get-EXOMailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox,SharedMailbox |
Get-EXOMailboxPermission |
Where-Object { -not $_.IsInherited -and $_.User -notlike "NT AUTHORITY\SELF" } |
Select Identity, User, AccessRights | Export-Csv C:\audit\fullaccess.csv -NoTypeInformation -Encoding UTF8
# SendAs
Get-EXORecipientPermission -ResultSize Unlimited | Where-Object { $_.Trustee -ne "NT AUTHORITY\SELF" } |
Select Identity, Trustee, AccessRights
# Règles de boîte transférant vers l'extérieur (signe classique de compromission)
Get-EXOMailbox -ResultSize Unlimited | ForEach-Object {
Get-InboxRule -Mailbox $_.PrimarySmtpAddress |
Where-Object { $_.ForwardTo -or $_.ForwardAsAttachmentTo -or $_.RedirectTo -or $_.DeleteMessage } |
Select @{n='Mailbox';e={$_.MailboxOwnerId}}, Name, Enabled, ForwardTo, RedirectTo, DeleteMessage
}
# Transferts SMTP configurés au niveau boîte
Get-EXOMailbox -ResultSize Unlimited -Properties ForwardingSmtpAddress, DeliverToMailboxAndForward |
Where-Object { $_.ForwardingSmtpAddress } | Select PrimarySmtpAddress, ForwardingSmtpAddress, DeliverToMailboxAndForward
11.5 Licences et utilisateurs via Graph
Connect-MgGraph -Scopes "User.Read.All","Organization.Read.All","AuditLog.Read.All"
# Consommation des SKU
Get-MgSubscribedSku | Select SkuPartNumber, ConsumedUnits, @{n='Achetees';e={$_.PrepaidUnits.Enabled}}
# Utilisateurs licenciés sans connexion depuis 90 jours (signInActivity : Entra ID P1)
$limite = (Get-Date).AddDays(-90)
Get-MgUser -All -Property DisplayName,UserPrincipalName,AssignedLicenses,SignInActivity,AccountEnabled |
Where-Object { $_.AssignedLicenses.Count -gt 0 -and $_.SignInActivity.LastSuccessfulSignInDateTime -lt $limite } |
Select DisplayName, UserPrincipalName, AccountEnabled, @{n='Derniere';e={$_.SignInActivity.LastSuccessfulSignInDateTime}}
# Offboarding minimal : bloquer, révoquer les sessions, convertir en boîte partagée
Update-MgUser -UserId depart@contoso.com -AccountEnabled:$false
Revoke-MgUserSignInSession -UserId depart@contoso.com
Set-Mailbox depart@contoso.com -Type Shared
12. Sauvegarde et responsabilité partagée
12.1 Ce que Microsoft garantit, ce qui reste à vous
| Risque | Couvert nativement ? | Mécanisme / limite |
|---|---|---|
| Panne d'infrastructure Microsoft | Oui | Réplication multi-datacenters (DAG, copies SharePoint) |
| Suppression accidentelle d'un mail | Partiel | Recoverable Items 14 jours par défaut (30 max), plus si rétention |
| Suppression d'un fichier SharePoint/OneDrive | Partiel | Corbeilles 93 jours ; restauration OneDrive/bibliothèque à J-30 |
| Ransomware chiffrant OneDrive synchronisé | Partiel | Restauration à une date (30 jours), versions |
| Admin malveillant ou compte admin compromis | Non | Il peut purger les données et désactiver la rétention (hors Preservation Lock) |
| Utilisateur supprimé | 30 jours | Ensuite, boîte et OneDrive définitivement perdus (sauf hold / inactive mailbox) |
| Restauration granulaire ancienne (3 ans) | Non | La rétention conserve mais ne restaure pas en place facilement |
12.2 Options
- Microsoft 365 Backup (service natif, facturé à l'usage via un abonnement Azure) : restauration rapide de boîtes, sites et OneDrive dans le même tenant ; pas de copie hors écosystème Microsoft.
- Solutions tierces (Veeam Backup for Microsoft 365, etc.) : stockage sur un support que vous contrôlez, idéalement immuable, voir Veeam et stratégie de sauvegarde.
- Rétention Purview avec Preservation Lock : garantie de conservation (même contre un admin), mais ce n'est pas une sauvegarde restaurable en un clic.
13. Audit et supervision
13.1 Journal d'audit unifié
Activé par défaut sur les tenants récents ; le vérifier. Rétention 180 jours en Audit (Standard), 1 an (extensible) en Audit (Premium) pour les licences E5/add-on. L'audit de boîte aux lettres (MailItemsAccessed notamment) est indispensable pour qualifier un incident : il est désormais disponible plus largement qu'auparavant, mais vérifier les actions auditées par licence.
Get-AdminAuditLogConfig | Format-List UnifiedAuditLogIngestionEnabled
Get-OrganizationConfig | Format-List AuditDisabled
# Recherche (EXO) - connexions et créations de règles de boîte des 7 derniers jours
Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) `
-Operations New-InboxRule,Set-InboxRule,UpdateInboxRules -ResultSize 5000 |
Select CreationDate, UserIds, Operations, AuditData
Search-UnifiedAuditLog est limité en volume et en débit. Pour une exploitation continue, préférer l'API Office 365 Management Activity, l'API Audit Log Query de Graph, ou le connecteur Microsoft Sentinel / Defender XDR.
13.2 Indicateurs à suivre
- Santé des services : centre d'administration > Santé des services, et API Graph
serviceAnnouncementpour l'intégrer à la supervision (voir Monitoring). - Message Center : changements planifiés ; synchroniser avec Planner ou un flux et assigner une revue hebdomadaire.
- Alertes : politiques d'alerte Defender (création de règle de transfert, élévation eDiscovery, envoi limité pour spam, utilisateur restreint).
- Utilisateurs restreints : un compte bloqué en envoi pour spam sortant est un compte compromis jusqu'à preuve du contraire (
Get-BlockedSenderAddress). - Secure Score : suivi mensuel de la tendance, actions acceptées comme risque documentées.
- Rapports d'utilisation : boîtes proches du quota, sites inactifs, stockage du tenant.
14. Dépannage : NDR et message trace
14.1 Méthode
- Récupérer le NDR complet (code étendu, serveur ayant rejeté) ou les en-têtes du message reçu.
- Message trace (V2) : statut Delivered / Failed / Quarantined / FilteredAsSpam / GettingStatus, puis le détail.
- Analyser les en-têtes avec l'analyseur Message Header Analyzer :
Authentication-Results,X-Forefront-Antispam-Report(SCL, SFV, CAT),X-MS-Exchange-Organization-AuthAs. - Si le message est filtré à tort : soumission (Submissions) plutôt que règle d'autorisation.
14.2 NDR courants
| Code | Symptôme | Cause | Correction |
|---|---|---|---|
| 550 5.1.10 | RecipientNotFound | Destinataire inexistant (DBEB), souvent une adresse proxy absente après migration | Vérifier proxyAddresses, ajouter l'alias / X500 |
| 550 5.4.1 | Recipient address rejected: Access denied | DBEB : destinataire inconnu sur un domaine Authoritative | Créer le destinataire ou passer le domaine en Internal Relay pendant la coexistence |
| 5.4.6 / 5.4.14 | Boucle de routage, hop count exceeded | Connecteur sortant pointant vers un système qui renvoie vers EXO ; domaine Internal Relay mal configuré | Revoir connecteurs et type de domaine accepté |
| 550 5.7.1 | Unable to relay / Delivery not authorized | Relais non autorisé ; groupe restreint aux expéditeurs internes | Connecteur entrant, ou RequireSenderAuthenticationEnabled $false sur le groupe si légitime |
| 5.7.23 | SPF validation error | L'IP émettrice n'est pas dans le SPF du domaine expéditeur | Corriger le SPF de l'expéditeur |
| 5.7.509 | Access denied, sending domain does not pass DMARC | DMARC p=reject de l'expéditeur et échec SPF+DKIM alignés |
Côté expéditeur : DKIM sur la plateforme d'envoi |
| 5.7.57 | Client was not authenticated to send anonymous mail during MAIL FROM | Envoi sur smtp.office365.com:587 sans authentification |
Configurer l'authentification ou passer par un connecteur |
| 5.7.139 / 535 5.7.3 | Authentication unsuccessful | SMTP AUTH désactivé (tenant ou boîte), basic auth bloquée, Security Defaults, MFA | Set-CASMailbox -SmtpClientAuthenticationDisabled $false, OAuth, ou connecteur |
| 5.7.708 | Service unavailable, Client host blocked | Tenant récent ou IP sortante à faible réputation, envois depuis un domaine non vérifié | Vérifier les domaines, montée progressive des volumes, ticket support |
| 5.7.750 | Client blocked from sending from unregistered domains | Envoi en masse depuis des domaines non acceptés dans le tenant | Ajouter et vérifier le domaine ; ne pas relayer pour des tiers |
| 5.1.8 / 5.7.712 | Access denied, bad outbound sender | Utilisateur restreint pour envoi de spam (compte compromis probable) | Investigation, reset MFA/mot de passe, déblocage dans Restricted entities |
| 5.2.2 | Mailbox full | Quota atteint, souvent Recoverable Items sous hold | Archive auto-extensible, revue des holds |
| 5.2.121 / 5.2.122 | Sender's per-hour message limit exceeded | Limites d'envoi EXO dépassées (application en masse) | Plateforme d'emailing dédiée, HVE, lissage |
14.3 Symptômes hors NDR
| Symptôme | Cause probable | Correction |
|---|---|---|
| Outlook redemande le mot de passe en boucle | Modern Auth désactivée par clé de registre, WAM corrompu, Autodiscover pointant on-prem | Test-OutlookConnectivity, Microsoft Remote Connectivity Analyzer, vérifier le CNAME autodiscover, nettoyer les identités Office |
| Boîte partagée absente d'Outlook | Permission via groupe (pas d'auto-mapping), délai de propagation (jusqu'à 60 min) | Ajout manuel du compte ou permission directe |
| Free/busy invisible entre on-prem et cloud | OAuth hybride cassé, certificat expiré, Autodiscover inaccessible depuis Internet | Test-OAuthConnectivity, relancer HCW |
| Mail interne classé spam | Envoi via Direct Send depuis une IP non listée, ou via un relais tiers non déclaré | Connecteur entrant identifié ; jamais SCL -1 sur le domaine |
| Message « GettingStatus » indéfiniment | Trace trop récente (délai d'indexation de quelques minutes) ou message jamais arrivé chez EOP | Patienter 15 min ; côté émetteur, vérifier les logs SMTP |
15. Pièges classiques
- Supprimer un utilisateur pour libérer une licence : boîte et OneDrive définitivement supprimés après 30 jours. Convertir en boîte partagée ou placer un hold avant (inactive mailbox).
- Règle de transport « SCL -1 si expéditeur = @contoso.com » : ouvre la porte à tout spoofing de votre propre domaine.
- Liste d'autorisation de domaine dans l'anti-spam :
AllowedSenderDomainscontourne le filtrage pour un domaine usurpable. Utiliser les soumissions. - DKIM non activé : le domaine s'aligne sur
onmicrosoft.com, DMARC échoue dès que le SPF n'est pas aligné (transferts, listes). - MX basculé avant la fin de migration en mode Authoritative : les destinataires non encore créés reçoivent des NDR 5.4.1.
- Groupes M365 créés librement : centaines d'équipes vides, sites orphelins, partage externe incontrôlé.
- Global Admin permanent pour le prestataire : utiliser GDAP (relations déléguées granulaires, durée limitée) et revoir les relations partenaires dans le centre d'administration.
- Consentement utilisateur aux applications laissé ouvert : vecteur d'attaque par consent phishing (application OAuth malveillante avec
Mail.Read). Restreindre et activer le workflow d'approbation admin. - Shared mailbox avec mot de passe connu : le compte sous-jacent reste un compte actif ; le bloquer.
- Exclure les comptes de service du Conditional Access sans compensation (emplacement nommé, workload identity) : cible privilégiée de password spray.
- Rétention 7 jours sur les chats Teams sans validation juridique : perte irréversible des messages, y compris en cas de litige ultérieur.
16. Checklist sécurité et mise en production
16.1 Identité et accès
- [ ] Deux comptes bris de glace cloud-only, FIDO2, exclus du CA mais surveillés (alerte sur chaque connexion).
- [ ] MFA pour tous via Conditional Access (ou Security Defaults si pas de P1), méthodes résistantes au phishing pour les admins.
- [ ] Blocage de l'authentification héritée via CA (« Other clients » et Exchange ActiveSync basique).
- [ ] Rôles admin granulaires, PIM (P2) ou au minimum revue trimestrielle ; GDAP pour les prestataires.
- [ ] Consentement utilisateur restreint + workflow d'approbation admin.
- [ ] Accès PowerShell Exchange retiré aux utilisateurs non admins (
Set-User -RemotePowerShellEnabled $false).
16.2 Messagerie
- [ ] SPF
-all< 10 lookups, DKIM activé sur tous les domaines, DMARC en route versp=reject. - [ ] Domaines parqués verrouillés (SPF -all, DMARC reject, MX nul).
- [ ] Politiques prédéfinies Standard/Strict appliquées ; analyseur de configuration sans écart non justifié.
- [ ] Transfert automatique externe désactivé (politique anti-spam sortante).
- [ ] SMTP AUTH désactivé au niveau tenant, exceptions listées et documentées.
- [ ] Direct Send refusé si non utilisé (
RejectDirectSend). - [ ] Bandeau externe activé, bouton de signalement configuré.
- [ ] Filtre de pièces jointes communes activé avec extensions à risque.
- [ ] Passerelle tierce : Enhanced Filtering + verrouillage de l'accès direct au MX EOP.
16.3 Collaboration et données
- [ ] Partage externe SharePoint au niveau « invités authentifiés », liens par défaut internes, expiration des invités.
- [ ] Création de groupes M365 restreinte, politique de nommage et d'expiration.
- [ ] Fédération Teams en liste blanche ou avertissements activés ; comptes Teams personnels bloqués.
- [ ] Applications Teams tierces soumises à approbation.
- [ ] Politiques de rétention validées par le juridique/DPO ; impact stockage mesuré.
- [ ] Étiquettes de confidentialité publiées, au moins en marquage.
- [ ] Sauvegarde externe (ou M365 Backup) en place et restauration testée.
16.4 Supervision
- [ ] Journal d'audit unifié activé, export vers SIEM si rétention > 180 jours nécessaire.
- [ ] Politiques d'alerte (règles de transfert, utilisateurs restreints, élévations) routées vers une boîte suivie.
- [ ] Secure Score revu mensuellement ; Message Center suivi.
- [ ] Scripts d'audit (délégations, règles de boîte, transferts) planifiés en app-only avec certificat.
- [ ] Procédure de réponse à compromission de boîte documentée (blocage, révocation, règles, audit MailItemsAccessed, purge).