Expert Cybersécurité & IAv9.0
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident

Techniques de Hacking

31 articles
ETW Tampering : Évasion et Détection sur Windows en 2026 TPM et BitLocker : Cold Boot et Bypass Chiffrement Covert Channels Réseau : Stéganographie et Exfiltration Avancée Type Confusion V8 : Exploitation Avancée Navigateurs eBPF Offensif : Rootkits, Évasion et Détection Kernel-Level DMA Attacks : Exploitation Thunderbolt, PCIe et FireWire 2026 Type Confusion V8 : Exploitation Avancée Navigateurs Vol de Mots de Passe Chrome : DPAPI, Exploits et Outils Extraction Credentials Firefox : NSS, Key4.db et Exploits Hacking Password Managers Navigateurs : Attaques Expert EvilGinx : Phishing AiTM, Bypass MFA et Défense 2026 Persistance Windows Server 2025 : Techniques Complètes Escalade de Privilèges Windows 2025 : Scénarios Réels Buffer Overflow et Corruption Mémoire : Stack, Heap et Escalade de Privilèges Linux : Techniques Offensives et Escalade de Privilèges Windows : Du User au SYSTEM Hacking WordPress Expert : Red Team, Supply Chain et Hacking WordPress : Fondamentaux, Vulnérabilités : Guide Hacking WordPress Intermédiaire : Exploitation Avancée Infostealers : La Menace Silencieuse qui Alimente le Injection SQL Avancée : De la Détection à l'Exploitation MITRE ATT&CK : Les 10 Techniques les Plus Utilisées en OSINT et Reconnaissance Offensive : Du Renseignement Password Attacks : Cracking, Spraying et Credential Stuffing Ransomware : Anatomie d'une Attaque, Kill Chain et Reverse Engineering et Analyse de Malware : Guide Pratique Red Team vs Pentest vs Bug Bounty : Comparatif Complet Bug Bounty : Créer et Gérer un Programme de Sécurité Zero Trust Architecture : Implémentation Complète et Mouvement Latéral : Techniques d'Attaque, Détection et Attack Surface Management (ASM) : Gestion Continue de la

Attaques Active Directory

43 articles
Mouvement Latéral Windows AD 2026 : Techniques Expert Impacket : Guide complet exploitation Active Directory 2026 Pentest Active Directory : Guide Méthodologique Complet 2026 BloodHound : Cartographie des Chemins d'Attaque Active NTDS.dit : Extraction, Analyse et Protection des Secrets LAPS : Gestion Sécurisée des Mots de Passe : Guide Complet Tiering Model Active Directory : Segmentation des : Guide GPO Sécurisation Active Directory : Hardening par : Guide Forum InCyber 2026 : Securite AD en Vedette : Guide Complet Conditional Access Entra ID : Nouveautes Mars 2026 ADCS 2026 : Bilan ESC1 a ESC15 et Remediation en 2026 BloodHound 5 : Nouveaux Chemins d'Attaque Detectes Audit AD Automatise PowerShell : Scripts 2026 en 2026 NTLM Relay 2026 : Techniques et Defenses Actuelles Tiering Model AD 2026 : Adapter Face aux Menaces en 2026 Passwordless AD : Bilan des Risques et Opportunites Entra ID : Fin des Service Principals Legacy : Guide Complet BadSuccessor DMSA : Compromettre Active Directory en 2026 AD FS et SAML : Methodologie et Recommandations de Securite RBCD Abuse Active Directory | Active Directory 2026 Computer Account Takeover Active : Analyse Technique Active Directory Certificate Services : Guide Complet Forest Trust Abuse Active | Defence Active Directory ACL Abuse Active Directory | Active Directory 2026 AS-REP Roasting : Exploitation : Analyse Technique Kerberoasting : Guide Complet | Active Directory 2026 Password Filter DLL : Guide Pratique Cybersecurite Pass-the-Hash (PtH) : Comprendre, : Analyse Technique AdminSDHolder : Persistance via : Analyse Technique Pass-the-Ticket Active Directory : : Guide Complet NTFS Tampering et Anti-Forensics : Analyse Technique GPO Abuse Active Directory | Active Directory 2026 SIDHistory Injection Active Directory : Guide Complet Skeleton Key Malware Active | Active Directory 2026 Silver Ticket Active Directory : Analyse Technique DCSync Attack : Exfiltration | Active Directory 2026 DCShadow : Attaque Furtive | Active Directory 2026 Golden Ticket Attack : Guide Pratique Cybersecurite Migration MFA Entra : Revoquer les Sessions Legacy Attaques AD 2025 : Bilan et Tendances Emergentes en 2026 Entra Connect SyncJacking : Bloquer l'Attaque en 2026 CVE-2025-21293 : Escalade de Privileges AD DS en 2026 Durcissement AD : Guide des Recommandations Microsoft

Intelligence Artificielle

166 articles
Qdrant vs Milvus vs Weaviate : Bases Vectorielles pour RAG Sécurisé Jailbreak LLM : Taxonomie et Détection Automatisée Sécuriser un Pipeline RAG : Du Vector Store à l'API Exfiltration de Données via RAG : Attaques Contextuelles AI Red Team : Auditer un Modèle IA en Production 2026 Prompt Injection Avancée : Attaques et Défenses 2026 La Puce Analogique que les États-Unis ne Peuvent Arrêter Contenu IA : Outils de Detection Proactive Multimodale Prompt Injection et Attaques Multimodales : Défenses en 2026 Stocker et Interroger des Embeddings à Grande Échelle Benchmark LLM Mars 2026 : Etat des Lieux Complet en 2026 Claude Opus 4.6 : Applications en Cybersecurite en 2026 AI Worms et Propagation Autonome : Menaces Émergentes 2026 Confidential Computing et IA : Entraîner et Inférer dans IA Générative pour le Pentest Automatisé : Méthodes et IA et Gestion des Vulnérabilités : Priorisation EPSS Long Context vs RAG : Quand Utiliser 10M Tokens au Lieu Mixture of Experts (MoE) : Architecture, Sécurité et AI Model Supply Chain : Attaques sur Hugging Face et les IA et SCADA/ICS : Détection d'Anomalies sur les Protocoles Sparse Autoencoders et Interprétabilité Mécanistique IA et Zero Trust : Micro-Segmentation Dynamique Pilotée par Red Teaming IA 2026 : Tester les LLM en Entreprise MCP Model Context Protocol : Securiser les Agents en 2026 AI Act 2026 : Implications pour les Systèmes Agentiques et Context Engineering pour Agents Multimodaux : Guide Complet Défense contre les Attaques IA Générées : Stratégies Détection Proactive de Contenu Généré par IA Multimodal Embodied AI : Agents Physiques, Robotique et Sécurité en Forensic Post-Hacking : Reconstruction et IA : Guide Complet Gouvernance Globale de l'IA 2026 : Alignement International Gouvernance du Hacking IA Offensive : Cadre et Bonnes Pra... Green Computing IA 2026 : Eco-Responsabilite et Sobriete Hacking Assisté par IA : Génération de Payloads et Human-AI Collaboration 2026 : Travailler avec des Agents Intégration d'Agents IA avec les API Externes en 2026 LLMOps pour Agents Autonomes : Monitoring et CI/CD Mémoire Augmentée Agents : Vector + Graph 2026 en 2026 Détection Multimodale d’Anomalies Réseau par IA en Multimodal RAG 2026 : Texte, Image, Audio : Guide Complet PLAM : Agents IA Personnalisés Edge et Déploiement Prompt Hacking Avancé 2026 : Techniques et Défenses Prompt Injection et Attaques Multimodales : Défenses en Red Teaming Cyber-Défense Agentique : Méthodologie Responsible Agentic AI : Contrôles, Garde-Fous et 2026 Agents RAG avec Actions : Récupération et Exécution Sécurité des Agents IA en Production : Sandboxing et Shadow Agents IA : Identification et Gouvernance 2026 Traçabilité des Décisions d'Agents Autonomes : Guide Agentic AI 2026 : Autonomie en Entreprise : Guide Complet Agents IA et Raisonnement Causal pour la Décision 2026 Agents IA Edge 2026 : Privacy, Latence et Architecture PLAM Architectures Multi-Agents et Orchestration LLM en Produc... Collaboration Multi-Agents IA 2026 : Orchestration et RAG Agentique : Pipelines IA Autonomes en Entreprise IA et Analyse Juridique des Contrats Cybersécurité Apprentissage Fédéré et Privacy-Preserving ML en 2026 IA pour la Défense et le Renseignement : Cadre Éthique Données Synthétiques : Génération, Validation et 2026 DSPy et la Programmation Déclarative de LLM : Guide IA dans la Finance : Détection de Fraude Temps Réel et Gouvernance LLM et Conformite : RGPD et AI Act 2026 Playbooks de Réponse aux Incidents IA : Modèles et IA Neuromorphique : Architecture et Securite en 2026 Pydantic AI et les Frameworks d'Agents Type-Safe en 2026 Quantum Machine Learning : Risques et Opportunités pour la RAG en Production : Architecture, Scaling et Bonnes Reinforcement Learning Appliqué à la Cybersécurité AI Safety et Alignement : Du RLHF au Constitutional AI en IA dans la Santé : Sécuriser les Modèles Diagnostiques et Sécurité LLM Adversarial : Attaques, Défenses et Bonnes Speculative Decoding et Inférence Accélérée : Techniques Voice Cloning et Audio Deepfakes : Detection en 2026 IA Agentique 2026 : Risques et Gouvernance : Guide Complet Agents IA Autonomes : Architecture, Frameworks et Cas Automatiser le DevOps avec des Agents IA : Guide Complet Agents IA pour le SOC : Triage Automatisé des Alertes AI Act et LLM : Classifier vos Systèmes IA : Guide Complet AI TRiSM : Framework Gartner Appliqué : Guide Complet IA pour l’Analyse de Logs et Détection d’Anomalies en IA et Automatisation RH : Screening CV et Compliance Chatbot Entreprise avec RAG et LangChain : Guide Pas à Pas Llama 4, Mistral Large, Gemma 3 : Comparatif LLM Open Source Computer Vision en Cybersécurité : Détection et 2026 Confidentialité des Données dans les LLM : PII et DLP IA et Conformité RGPD : Données Personnelles dans les Context Window : Gérer 1 Million de Tokens en Production Coût d'Inférence des LLM : Optimiser sa Facture Cloud CrewAI, AutoGen, LangGraph : Comparatif Frameworks Data Platform IA-Ready : Architecture de Référence 2026 Data Poisoning et Model Backdoors : Supply Chain IA Deepfakes et Social Engineering IA : Détection et 2026 Deployer des LLM en Production : GPU et Optimisation Détection de Menaces par IA : SIEM Augmenté : Guide IA pour le DFIR : Accélérer les Investigations Forensiques Évaluation de LLM : Métriques, Benchmarks et Frameworks Fine-Tuning de LLM Open Source : Guide Complet LoRA et QLoRA Function Calling et Tool Use : Intégrer les API aux LLM Fuzzing Assisté par IA : Découverte de Vulnérabilités IA pour la Génération de Code : Copilot, Cursor, Claude Gouvernance IA en Entreprise : Politiques et Audit GraphRAG et Knowledge Graphs : Architecture RAG Avancée Knowledge Management avec l’IA en Entreprise : Stratégies Kubernetes pour l’IA : GPU Scheduling, Serving et 2026 LLM en Local : Ollama, LM Studio et vLLM - Comparatif 2026 LLM On-Premise vs Cloud : Souveraineté et Performance MCP (Model Context Protocol) : Connecter les LLM à vos MLOps Open Source : MLflow, Kubeflow, ZenML : Guide Complet IA Multimodale : Texte, Image et Audio : Guide Complet IA Offensive : Comment les Attaquants Utilisent les LLM Orchestration d'Agents IA : Patterns et Anti-Patterns OWASP Top 10 pour les LLM : Guide Remédiation 2026 Phishing Généré par IA : Nouvelles Menaces : Guide Prompt Engineering Avancé : Chain-of-Thought et Techniques Quantization : GPTQ, GGUF, AWQ - Quel Format Choisir RAG vs Fine-Tuning vs Prompt Engineering : Quelle Stratégie Reconnaissance Vocale et LLM : Assistant Vocal Sécurisé Red Teaming de Modèles IA : Jailbreak et Prompt Injection ROI de l'IA Générative : Mesurer l'Impact Réel en 2026 Sécuriser un Pipeline MLOps : Bonnes Pratiques et 2026 Shadow AI : Détecter et Encadrer l'Usage Non Autorisé Small Language Models : Phi-4, Gemma et IA Embarquée Threat Intelligence Augmentée par IA : Guide Complet Vector Database en Production : Scaling et HA en 2026 CNIL Autorite AI Act : Premiers Pas Reglementaires KVortex : Offloader VRAM→RAM pour LLMs vLLM et Inférence Securiser un Pipeline RAG en Production (2026) en 2026 Codex GPT-5.2 : Generation de Code Autonome Securisee Mixture of Experts : Architecture LLM de 2026 en 2026 GPT-5.2 et Agents IA : Revolution en Cybersecurite Windows Recall : Analyse Technique Complete - Fonctionnem... L'IA dans Windows 11 : Copilot, NPU et Recall - Guide Com... Deepfake-as-a-Service : La Fraude IA Industrialisee Small Language Models : Securite a la Peripherie en 2026 RAG Poisoning : Manipuler l'IA via ses Documents en 2026 Phishing IA : Quand les Defenses Traditionnelles Echouent Superintelligence : De l'ANI à l'ASI : Guide Complet La Fin des Moteurs de Recherche : Analyse Expert 2026 Embeddings et Recherche Documentaire : Guide Complet Stratégies de Découpage de | Guide IA Complet 2026 Sécurité et Confidentialité des : Analyse Technique Vecteurs en Intelligence Artificielle : Guide Complet Embeddings vs Tokens : Guide Pratique Cybersecurite Qu'est-ce qu'un Embedding en | Guide IA Complet 2026 Cas d'Usage des Bases - Guide Pratique Cybersecurite Bases Vectorielles : Définition, : Analyse Technique La Vectorisation de Données | Guide IA Complet 2026 Tendances Futures des Embeddings : Analyse Technique Optimiser le Chunking de - Guide Pratique Cybersecurite Milvus, Qdrant, Weaviate : | Guide IA Complet 2026 Glossaire IA et Cybersécurité : 100 Termes Essentiels 2026 10 Erreurs Courantes dans - Guide Pratique Cybersecurite Benchmarks de Performance : | Guide IA Complet 2026 RAG Architecture | Guide - Guide Pratique Cybersecurite Comment Choisir sa Base - Guide Pratique Cybersecurite Indexation Vectorielle : Techniques : Guide Complet Comprendre la Similarité Cosinus : Analyse Technique Comet Browser : Architecture | Guide IA Complet 2026 Développement Intelligence Artificielle | : Guide Complet Stocker et Interroger des - Guide Pratique Cybersecurite Shadow AI en Entreprise : Detecter et Encadrer en 2026 GPT-5.1 vs Claude 4.5 vs Gemini 3 : Comparatif en 2026 OpenClaw : Crise de l'Agent IA Open Source : Guide Complet Prompt Injection : 73% des Deploiements Vulnerables AI Act Aout 2025 : Premieres Sanctions Activees en 2026 OWASP Top 10 LLM 2025 : Risques et Remediations en 2026

Forensics

31 articles
Forensique Mémoire : Guide Pratique Volatility 3 en 2026 Timeline Forensique : Reconstituer Pas à Pas une : Guide Forensique Cloud : Analyser les Logs CloudTrail, Azure Forensique Microsoft 365 : Analyse du Unified Audit Log Chaîne de Preuve Numérique : Bonnes Pratiques Juridiques Exercice de Crise Cyber : Organiser un Tabletop Efficace Forensique Disque : Acquisition d'Image et Analyse avec Mobile Forensics : Extraction et Analyse iOS/Android Ransomware Forensics : Identifier la Souche : Guide Complet Forensics Linux : Artifacts et Investigation : Guide Complet MacOS Forensics : Artifacts et Persistence : Guide Complet Malware Reverse : Analyse de Cobalt Strike 5 : Guide Complet Email Forensics : Tracer les Campagnes Phishing en 2026 Timeline Analysis : Reconstruction d'Incidents en 2026 Registry Advanced : Guide Expert Analyse Technique NTFS Forensics : Methodologie et Recommandations de Securite LNK & Jump Lists : Strategies de Detection et de Remediation Windows Forensics : Guide Expert en Analyse Securite Registry Forensics : Guide Expert Analyse Securite Windows Server 2025 - Guide Pratique Cybersecurite Memory Forensics : Strategies de Detection et de Remediation ETW & WPR : Guide Complet et Bonnes Pratiques pour Experts Modèles de Rapports - Guide Pratique Cybersecurite Comparatif Outils DFIR - Guide Pratique Cybersecurite AmCache & ShimCache - Guide Pratique Cybersecurite Telemetry Forensics - Guide Pratique Cybersecurite Anti-Forensics : Methodologie et Recommandations de Securite NTFS Advanced : Methodologie et Recommandations de Securite Network Forensics : Analyse PCAP Avancee : Guide Complet DFIR Cloud : Investigation Logs AWS CloudTrail en 2026 Memory Forensics 2026 : Volatility 3 Avance : Guide Complet

Microsoft 365

24 articles
Chronologie des Attaques Active Directory : 2014-2026 Audit Avancé Microsoft 365 : Corréler Journaux et Logs Azure Automatiser l'Audit Sécurité Microsoft 365 : Guide Expert API Microsoft Graph : Audit et Monitoring M365 en 2026 Meilleures Pratiques Sécurité Microsoft 365 en 2026 PIM Entra ID : Gestion des Accès Privilégiés Just-in-Time Sécuriser Microsoft Teams : Gouvernance, DLP et Contrôle SharePoint et OneDrive : Maîtriser le Partage Externe et Microsoft Defender for Office 365 : Configuration : Guide Microsoft Secure Score : Guide d'Optimisation de votre Sécuriser Microsoft Entra ID : Conditional Access, MFA Durcissement Exchange Online : Bloquer Basic Auth et Microsoft Intune : Politiques de Conformité et : Guide Zero Trust M365 : Strategies de Detection et de Remediation API Microsoft Graph M365 - Guide Pratique Cybersecurite Microsoft 365 et Conformité - Guide Pratique Cybersecurite Audit Sécurité Microsoft 365 | Guide Microsoft 365 Audit Avancé Microsoft 365 - Guide Pratique Cybersecurite Pratiques Sécurité M365 2025 | Guide Microsoft 365 Microsoft 365 et Azure - Guide Pratique Cybersecurite Threat Hunting Microsoft 365 | Guide Microsoft 365 Top 10 Outils Analyse Securite Microsoft 365 — Guide Automatiser l'Audit de Sécurité : Analyse Technique Sécuriser les Accès Microsoft | Guide Microsoft 365

Virtualisation

25 articles
SDN Proxmox VE 9 : Zones, VNets, IPAM et Firewalls Architecture Proxmox VE 9.1 : Cluster 3 Nœuds + HA Réplication Proxmox VE : ZFS, Snapshots et Checklist Administration CLI Proxmox VE : Diagnostic Cluster Déploiement Automatisé Proxmox : Terraform et Ansible Proxmox VE 9.1 : Paramètres Avancés VM et Nested Virt Outils Proxmox VE : Monitoring, IaC et Écosystème 2026 Optimisation Proxmox VE 9 : CPU, RAM, ZFS, Ceph et HA Dimensionnement Proxmox VE 9 : CPU, RAM, Stockage, HA Proxmox VE : Cluster HA, Live Migration et Ceph 2026 Proxmox vs VMware vs Hyper-V : Comparatif Sécurité et Durcissement VMware ESXi : Guide Complet de Sécurisation ESXi Hardening : Guide Complet de Sécurisation Avancée Migration VMware vers Proxmox VE : Guide Complet : Guide Hyper-V Shielded VMs : Sécurisation Avancée du : Guide Proxmox Backup Server : Stratégie de Sauvegarde et Optimisation Proxmox - Guide Pratique Cybersecurite Évolutions Proxmox : Guide Expert Bonnes Pratiques Calculateur Sizing : Guide Expert Bonnes Pratiques NTP Proxmox : Guide Complet et Bonnes Pratiques pour Experts Dimensionnement : Strategies de Detection et de Remediation Guide Complet Proxmox - Guide Pratique Cybersecurite Migration VMware : Strategies de Detection et de Remediation Securite Proxmox VE : Guide Complet Hardening 2026 Hyper-V 2025 : Analyse Technique Approfondie et Securisation

Cybersécurité Générale

44 articles
Débuter en Pentest : Parcours et Ressources 2026 Carte des Menaces Cyber 2025-2026 : Threat Landscape 20 Erreurs Fatales en Cybersécurité : AD, Cloud et IA Certifications Cybersécurité 2026 : Guide Complet OSCP à CISSP 15 Mythes en Cybersécurité Démystifiés par un Pentester CrowdStrike vs Defender vs SentinelOne : Quel EDR en 2026 ? L'ingénierie sociale a gagné : vos firewalls ne servent plus à rien Quatre zero-days Chrome en 2026 : le navigateur est devenu la cible Zero-days exploités avant le patch : la nouvelle norme en 2026 Le délai d'exploitation se réduit à néant : ce que ça Deepfakes et Social Engineering : Menaces IA en 2026 Culture Sécurité en Entreprise : Changer les Comportements Programme Sensibilisation Cyber : Méthode et KPI 2026 Exercices Phishing Interne : Outils et Bonnes Pratiques Quand les défenseurs passent à l'attaque : leçons de Patch Tuesday ne suffit plus : repenser la gestion des Data brokers : les coffres-forts que tout le monde veut Vos outils d automatisation sont devenus des cibles Équipements en fin de vie : maillon faible sécurité quand vos défenseurs travaillent pour l adversaire Pipelines IA en production : vos agents LLM sont des cibles Time-to-exploit : quand les 0-day brûlent en quelques heures OWASP Top 10 : Guide Complet Vulnérabilités Web 2026 Nessus et Greenbone : Guide Scanners Vulnérabilités ANSSI ReCyF : NIS2 en pratique, ce qui change pour vous Pipelines IA : vos clés API sont les nouvelles clés du SI Ransomwares : Pourquoi Vos Sauvegardes Ne Sauvent Plus CI/CD : L'Angle Mort de la Sécurité DevOps en 2026 Vos Outils IA : la Nouvelle Surface d'Attaque Ignorée Ransomware Trends Q1 2026 : Analyse des Groupes en 2026 IOC Management : Automatiser la Threat Intel : Guide Complet Cyber Threat Landscape France 2026 : Bilan ANSSI en 2026 Darkweb Monitoring : Outils et Techniques 2026 en 2026 InfoStealers 2026 : Lumma, Raccoon et RedLine en 2026 Supply Chain APT : Comprendre les Attaques Etatiques Top 10 des Attaques - Guide Pratique Cybersecurite Top 10 Outils Securite Kubernetes 2025 — Guide Pratique Livre Blanc : Sécurisation | Threat Intelligence 2026 Guide Complet Sécurité Active | Guide Cyberdefense Top 5 des Outils : Strategies de Detection et de Remediation Top 10 Solutions EDR/XDR | Threat Intelligence 2026 Top 10 Outils Audit - Guide Pratique Cybersecurite Threat Hunting : Detection Proactive avec MITRE en 2026 APT29 2026 : Nouvelles TTP et Campagnes Cloud en 2026

Articles Techniques

105 articles
Retours d’Expérience Pentest : 5 Missions Terrain Anonymisées BloodHound vs SharpHound vs BloodyAD : Guide Comparatif 2026 Burp Suite vs OWASP ZAP : Quel Scanner Web Choisir en 2026 ? Nuclei vs Nessus vs Qualys : Scanners de Vulnérabilités Comparés Format String Exploitation Moderne : Du Crash au RCE en 2026 Race Conditions Kernel : Double-Fetch, TOCTOU et Exploitation BGP Hijacking et OSPF Exploitation : Attaques Routage Internet GPU Side-Channels : Attaques sur CUDA, OpenCL et WebGPU Intel ME et AMD PSP : Exploitation des Coprocesseurs Cryptanalyse Pratique : Attaques sur AES, RSA et ECC SGX, TDX et TEE : Attaques sur les Enclaves Sécurisées 2026 Hypervisor Escape : Techniques d'Évasion VMware, KVM et QEMU Linux Kernel Exploitation : Escalade de Privilèges Side-Channel Attacks : Spectre, Meltdown et Rowhammer ROP/JOP Chains : Exploitation Moderne des Binaires Protégés Heap Exploitation : Use-After-Free et Tcache Poisoning SGX, TDX et TEE : Attaques sur les Enclaves Sécurisées Hack The Box : Méthodologie pour Progresser en 2026 DVWA vs Juice Shop vs WebGoat : Comparatif Labs Web Lab Pentest Proxmox : Guide Complet d'Installation 2026 Top 5 Plateformes CTF et Entraînement Cyber en 2026 Architecture de Sécurité Matérielle Windows 11 & Server 2025 Windows Scheduler Internals : Architecture, Performance Architecture Windows Server 2025 : Noyau NT Expert Architecture Vertical Slice + Clean Lite : Guide 2026 Cryptographie Post-Quantique : Migration Pratique en 2026 Zero Trust Network : Implementation Pratique 2026 en 2026 C2 Frameworks Modernes : Mythic, Havoc, Sliver et Détection DNS Attacks : Tunneling, Hijacking et Cache Poisoning Exploitation de l’Infrastructure as Code Terraform et Exploitation des Protocoles Email : SMTP Smuggling et Att... GCP Offensive Security : Exploitation des Services Google Purple Team : Méthodologie et Exercices Collaboratifs Race Conditions et TOCTOU : Exploitation des Bugs de Windows Kernel Exploitation : Drivers, Tokens et KASLR Threat Intelligence : Automatiser la Veille Cyber en 2026 Attaques sur les Identity Providers Okta, Entra et Keycloak Attaques sur les Pipelines ML/AI et Empoisonnement de Mod... SSRF Avance : Bypass des Protections Cloud 2026 en 2026 Windows Kernel : Exploitation de Drivers Vulnerables Agents IA pour la Cyber-Défense et le Threat Hunting Cyber-Défense Agentique contre les APTs : Guide Complet Red Teaming des Agents Autonomes : Méthodologie et Shadow Hacking et Outils IA Non-Autorisés en Entreprise Container Escape : Techniques d'Évasion Docker et 2026 Exploitation Active Directory Certificate Services (ADCS) Hardware Hacking : JTAG, SWD, UART et Extraction de Firmware Post-Exploitation : Pillage, Pivoting et Persistance Sécurité Mobile Offensive : Android et iOS en 2026 Service Mesh Exploitation : Attaques sur Istio, Linkerd et SIM Swapping et Attaques Telecom : SS7, Diameter et 5G UEFI Bootkits et Attaques sur le Firmware : Persistance A... Attaques sur les Bases de Données SQL, NoSQL et GraphQL Attaques CI/CD Avancées : GitOps, ArgoCD et Flux en Attaques Serverless : Exploitation de Lambda, Azure Attaques sur les Smart Contracts et la Sécurité Web3 Attaques Wireless Avancées : Wi-Fi 7, BLE 5.4 et Zigbee Browser Exploitation Moderne : V8, Blink et les Sandbox Bypass FIDO2 et Passkeys : Attaques sur l'Authentification ICS/SCADA : Pentest d'Environnements Industriels en 2026 Supply Chain : Detecter les Dependances Malveillantes Incident Response : Playbook Ransomware 2026 : Guide Complet Reverse Engineering : Analyse de Firmware IoT en 2026 GraphQL Injection : Techniques d'Exploitation 2026 API Security : Fuzzing Avance avec Burp et Nuclei en 2026 Cloud Forensics : Investigation AWS et Azure : Guide Complet OAuth 2.1 : Nouvelles Protections et Migration en 2026 Pentest Wi-Fi 7 : Nouvelles Surfaces d'Attaque en 2026 C2 Frameworks 2026 : Mythic vs Havoc vs Sliver en 2026 DNS Tunneling Detection : Guide SOC Analyst : Guide Complet Phishing 2026 : Techniques Avancees de Spear-Phishing Web3 Security : Audit de Smart Contracts Solidity en 2026 Attaques sur CI/CD (GitHub - Guide Pratique Cybersecurite Azure AD : attaques - Guide Pratique Cybersecurite Supply-chain applicative (typosquatting, dependency Secrets sprawl : collecte - Guide Pratique Cybersecurite SSRF moderne (IMDSv2, gopher/file, : Guide Complet NTLM Relay moderne (SMB/HTTP, | Guide Technique 2026 Evasion d’EDR/XDR : techniques : Analyse Technique Phishing sans pièce jointe - Guide Pratique Cybersecurite Persistence sur macOS & - Guide Pratique Cybersecurite WebCache Deception & cache - Guide Pratique Cybersecurite Abus OAuth/OIDC : Consent - Guide Pratique Cybersecurite Sécurité des LLM et - Guide Pratique Cybersecurite Chaîne d'exploitation Kerberos en : Analyse Technique Living-off-the-Land (LOL-Bins/LOLBAS) à l’échelle en Exfiltration furtive (DNS, DoH, : Analyse Technique Kubernetes offensif (RBAC abuse, : Analyse Technique Désérialisation et gadgets en | Guide Technique 2026 Attaques sur API GraphQL - Guide Pratique Cybersecurite Escalades de privilèges AWS | Guide Technique 2026 OT/ICS : passerelles, protocoles : Analyse Technique Cloud IAM : Escalade de Privileges Multi-Cloud en 2026 AWS Lambda Security : Attaques et Defenses : Guide Complet Terraform Security : Audit et Durcissement IaC en 2026 SIEM : Correlations Avancees pour Threat Hunting en 2026 Mobile Pentest : Bypass SSL Pinning Android 15 en 2026 Container Escape 2026 : Nouvelles Techniques Docker Bug Bounty 2026 : Strategies et Plateformes : Guide Complet EDR Bypass 2026 : Techniques et Contre-Mesures en 2026 ZED de PRIM’X : Conteneurs Chiffrés et Sécurité des Malware Analysis : Sandbox Evasion Techniques en 2026 Purple Team : Exercices Pratiques AD et Cloud en 2026 OSINT 2026 : Outils et Techniques de Reconnaissance Kubernetes RBAC : 10 Erreurs de Configuration Critiques

Conformité

54 articles
SOA ISO 27001 : Statement of Applicability Complet Feuille de Route ISO 27001 : Certification en 12 Étapes Checklist Audit ISO 27001 : 93 Contrôles Annexe A 2022 Charte Informatique Entreprise : Guide et Modèle Word Analyse de Risques ISO 27005 : Méthodologie Complète PSSI ISO 27001 : Guide Rédaction et Modèle Complet Aspects Juridiques et Éthiques de l’IA : Cadre Réglementaire Classification des données : méthodes et outils pratiques Analyse d'impact AIPD : méthodologie CNIL pas à pas NIS 2 et DORA : double conformité du secteur financier Maturité cybersécurité : modèles CMMC et NIST CSF 2.0 Cartographie des risques cyber avec EBIOS RM en 2026 SMSI ISO 27001 version 2022 : guide complet pas à pas Audit de conformité RGPD : checklist complète pour DPO NIS2, DORA et RGPD : Cartographie des Exigences Croisées IEC 62443 : Cybersécurité Industrielle OT - Guide : Guide Audit de Sécurité du SI : Méthodologie Complète et PRA/PCA Cyber : Plan de Reprise et Continuité d'Activité Qualification PASSI ANSSI : Devenir Prestataire d'Audit Audit de Securite Cloud : Checklist Conformite 2026 PCI DSS 4.0.1 : Nouvelles Exigences Mars 2026 en 2026 Conformite Multi-Referentiels : Approche Unifiee 2026 NIS 2 Phase Operationnelle : Bilan 6 Mois Apres en 2026 Aspects Juridiques et Ethiques de l'IA en Entreprise ISO/IEC 42001 Foundation : Système de Management IA ISO 42001 Lead Auditor : Auditer un Systeme de Management ISO 42001 Lead Implementer : Management de l’IA et RGPD et AI Act : Guide Complet pour les Organisations en ... Développement Sécurisé ISO 27001 : Cycle S-SDLC en 6 Cyber Assurance 2026 : Exigences et Marche Durci en 2026 SOC 2 Type II : Retour d'Experience Implementation DORA 2026 : Impact sur le Secteur Financier Francais Cyber-assurance 2026 : Nouvelles Exigences et Guide Complet AI Act 2026 : Guide Conformité Systèmes IA à Haut Risque Cyber Resilience Act 2026 : Guide Anticipation Produits C... DORA 2026 : Premier Bilan et Contrôles ACPR - Guide Complet NIS 2 Phase Opérationnelle 2026 : Guide Complet de Mise RGPD 2026 : Securite des Donnees et Enforcement CNIL - Gu... HDS 2026 : Certification Hébergeur de Données de Santé - PCI DSS 4.0.1 en 2026 : Retour d'Expérience et Guide SBOM 2026 : Obligation de Sécurité et Guide Complet SecNumCloud 2026 et EUCS : Guide Complet Qualification Cryptographie Post-Quantique : Guide Complet pour les SI ... ISO 27001:2022 Guide Complet Certification Expert 2026 NIS 2 : Guide Complet de la Directive Européenne sur la SOC 2 : Guide Complet Conformite pour Organisations RGPD 2026 : Durcissement des Sanctions par la CNIL HDS 2026 : Certification Hebergement de Donnees Sante Cyber Resilience Act : Guide de Conformite Produits RGPD et IA Generative : Guide de Conformite CNIL en 2026 SecNumCloud 2026 : Migration et Certification EUCS AI Act Classification : Systemes a Haut Risque en 2026 SBOM 2026 : Obligation de Transparence Logicielle en 2026 ISO 27001:2022 vs ISO 27001:2013 : Differences Cles

SOC et Detection

25 articles
Incident Triage : Classification et Priorisation SOC 2026 Threat Hunting Proactif : Techniques et Outils SOC 2026 Sigma Rules : Standard de Détection Universel Guide Complet SOC as a Service : Externaliser la Détection Guide 2026 XDR vs SIEM vs EDR : Comprendre les Différences en 2026 Purple Team : Collaboration entre SOC et Red Team Guide Détection du Mouvement Latéral : Guide Complet SOC 2026 Triage des Alertes SOC : Méthodologie Complète pour Analyste NDR : Détection Réseau et Réponse aux Menaces Guide 2026 SIEM Cloud-Native vs On-Premise : Comparatif Complet 2026 Log Management : Architecture et Rétention SOC : Guide Use Cases SIEM : 50 Règles Détection Essentielles : Gui SOC Metrics et KPIs : Mesurer la Performance : Guide Co SOAR : Automatisation Réponse Incident Guide : Guide Co Threat Intelligence Platforms : Comparatif 2026 : Guide Microsoft Sentinel : Déploiement et Règles KQL : Guide Splunk Enterprise Security : Configuration SOC : Guide Elastic SIEM : Stack Détection Open Source 2026 : Guide SOC Moderne : Architecture et Outils Guide 2026 : Guide Analyste SOC : Niveaux, Parcours et Compétences : Guide Threat Hunting : Méthodologie, Outils et Pratique pour Detection Engineering : Construire des Règles de : Guide Detection-as-Code : Pipeline CI/CD pour Règles SIEM et Sigma Rules : Guide Complet d'Écriture et Déploiement de Wazuh SIEM/XDR Open Source : Déploiement, Configuration

Cloud Security

45 articles
Cloud Forensics Avancée Post-Compromission sur AWS Cloud Pentest : Méthodologie Complète Audit AWS et Azure Cloud Logging : Guide Centralisation et Monitoring Sécurité Cloud Network Security : Guide Complet VPC, WAF et DDoS DevSecOps Cloud : Guide Pipeline CI/CD Sécurisé Complet Cloud Disaster Recovery : Guide PRA et Résilience Cloud Cloud Compliance : Guide RGPD, HDS et SecNumCloud 2026 Cloud Forensics : Guide Investigation Incident Cloud 2026 Infrastructure as Code Security : Guide Terraform Complet Cloud Encryption : Guide Chiffrement Données et Clés KMS CASB : Guide Comparatif Cloud Access Security Broker 2026 Container Security : Docker et Runtime Protection Avancée Serverless Security : Sécuriser Lambda et Functions Cloud Multi-Cloud Security : Guide Stratégie Sécurité Unifiée Cloud IAM : Guide Gestion Identités et Accès Cloud 2026 Kubernetes Security : Guide Durcissement Cluster K8s 2026 Sécurité AWS : Guide Complet Hardening Compte et Services Azure Security Center : Guide Configuration Complète 2026 GCP Security : Bonnes Pratiques et Guide Audit Cloud 2026 CSPM : Guide Cloud Security Posture Management Complet CNAPP : Guide Protection Cloud-Native Applications 2026 ZTNA Zero Trust Network Access Cloud : Guide Complet Disaster Recovery Cloud : PRA Multi-Région en 2026 Attaques sur Metadata Services Cloud : SSRF et IMDS FinOps Sécurité : Cryptomining Ressources Fantômes Secrets Management Cloud : Vault et Key Vault 2026 Cloud Compliance NIS 2 SecNumCloud ISO 27017 Guide Sécurité Multi-Cloud : Stratégie Unifiée AWS, Azure et GCP Cloud Misconfiguration : Top des Erreurs de Sécurité et Cloud IAM : Sécurisation des Identités et Accès AWS, CSPM : Cloud Security Posture Management - Guide Complet Souveraineté Cloud : Protéger les Données Sensibles en Container Registry : Guide Sécurité Images Docker 2026 Cloud Logging Monitoring : Visibilité Complète 2026 Service Mesh Security : Sécuriser Istio et Linkerd Cloud Pentest Azure : Exploitation Misconfiguration Terraform IaC Sécurisé : Checklist de Durcissement Cloud Pentest AWS avec Pacu et CloudFox : Le Guide Sécurité Serverless : Lambda Functions et Protection CNAPP Cloud-Native Application Protection Platform Kubernetes Security : RBAC et Network Policies 2026 GCP Security Command Center : Audit et Durcissement Azure Defender for Cloud : Guide Configuration 2026 AWS Security : Les 20 Services Sécurité Essentiels Sécuriser une Architecture Multi-Cloud AWS et Azure

Retro-Ingenierie

18 articles
Frida et DynamoRIO : Instrumentation Binaire Avancée 2026 Symbolic Execution : Angr, Triton et Découverte d'Exploits Analyse Mémoire Forensique : Volatility pour Malware Analyse de Shellcode : Techniques de Rétro-Ingénierie Rétro-Ingénierie de C2 : Cobalt Strike et Brute Ratel Anti-Analyse Malware : Techniques et Contournements Analyse de Stealers : RedLine, Raccoon, Lumma 2026 Unpacking Malware Avancé : Techniques et Outils 2026 Rétro-Ingénierie de Ransomware : Analyse Technique Analyse Dynamique de Malware Avancée : Sandbox Expert Anti-Rétro-Ingénierie APT - Techniques d'Évasion Avancées Disséquer l'Obscurité : Techniques Avancées de Déobfuscation IA Frameworks pour l'Analyse de Malwares - Deep Learning Malwares Mobiles & IA - Rétro-Ingénierie Cross-Platform Chasse aux Fantômes : Rétro-Ingénierie Ghidra : Guide de Reverse Engineering pour Débutants Fileless Malware : Analyse, Détection et Investigation Reverse Engineering .NET : Décompilation, Analyse et

News

202 articles
Microsoft force la mise à jour vers Windows 11 25H2 sur les PC non gérés Affinity : une fuite de données expose 175 000 utilisateurs du forum Axios npm piraté : la Corée du Nord derrière l attaque supply chain React2Shell : 766 serveurs Next.js compromis, credentials volés Drift Protocol : hack à 285 M$ attribué à la Corée du Nord Cisco IMC : faille critique CVSS 9.8 permet un accès admin NoVoice : un rootkit Android caché dans 50 apps du Play Store Apple étend iOS 18.7.7 pour contrer l'exploit DarkSword Fortinet : faille critique FortiClient EMS exploitée activement Slack déploie 30 fonctionnalités IA et devient un agent autonome Commission européenne hackée via Trivy : 30 entités UE exposées BrowserGate : LinkedIn scanne vos extensions de navigateur en secret CVE-2026-0625 : zero-day critique dans les routeurs D-Link EOL GlassWorm : 72 extensions Open VSX piégées ciblent les développeurs CVE-2026-5281 : zero-day Chrome WebGPU exploité activement Le CMA britannique lance une enquête sur les licences cloud Microsoft Google NotebookLM passe à Gemini 2.5 Flash pour le raisonnement OpenAI teste des Skills pour ChatGPT, inspirées de Claude Faille critique Fortinet CVE-2026-32756 : exploitation active Akira Ransomware cible les ESXi via une faille vCenter inédite Microsoft lance Copilot Security Agents pour automatiser le SOC Claude 4 Opus d Anthropic : benchmark et implications sécurité NIS 2 : Premières Sanctions ANSSI en France 2026 Rebellions lève 400 M$ pour défier Nvidia sur les puces IA Exchange Online : Microsoft peine à résoudre des pannes persistantes TridentLocker frappe Sedgwick, sous-traitant du gouvernement US Hims & Hers : ShinyHunters vole des millions de tickets Zendesk Qilin revendique le vol de données du parti allemand Die Linke Interlock exploite un zero-day Cisco FMC CVSS 10 depuis janvier SparkCat : un malware vole les cryptos depuis les stores mobiles Microsoft lance ses propres modèles IA pour défier OpenAI Fuite Claude Code : des dépôts GitHub piégés diffusent Vidar PTC Windchill : la police allemande réveille les admins GitHub Copilot entraîne ses IA sur vos données dès le 24 285 M$ volés en 12 minutes par des hackers nord-coréens 766 serveurs Next.js compromis par vol de credentials une faille CVSS 9.8 permet le reset des mots de passe admin Cisco corrige deux failles critiques CVSS 9.8 dans IMC et Le FBI alerte sur les risques des applications mobiles ShareFile : deux failles chaînées permettent une RCE sans NoVoice : un malware Android sur Google Play vole les un exploit kit iOS cible WebKit et le kernel Apple Microsoft alerte sur une campagne VBS avec bypass UAC TrueChaos : un APT chinois exploite TrueConf pour cibler Microsoft lance Copilot Wave 3 et Agent 365 pour l'ère UAC-0255 usurpe le CERT-UA et diffuse le RAT AGEWHEEZE Chrome : Google corrige un 4e zero-day exploité en 2026 L'Iran relance Pay2Key avec des pseudo-ransomwares TeamPCP compromet des environnements cloud via des Le CMA ouvre une enquête sur Microsoft pour ses licences VMware Aria Operations : RCE critique exploitée activement Cisco SD-WAN : un zero-day CVSS 10 exploité depuis trois ans Citrix NetScaler : faille critique CVSS 9.3 exploitée Databricks lance Lakewatch, un SIEM dopé à l'IA générative Microsoft enchaîne les correctifs d'urgence Windows en 2026 Axios piraté : un RAT distribué via npm à 100 millions CareCloud Breach : Dossiers Patients Exposés en 2026 le malware IA qui vole vos identifiants navigateur ChatGPT : une faille permettait l'exfiltration de données LexisNexis piraté : 400 000 profils cloud exposés via ShinyHunters vole 350 Go de données à la Commission Aflac notifie 22 millions de clients après une cyberattaque CTRL : toolkit RAT russe ciblant les entreprises via RDP macOS Tahoe 26.4 : Apple bloque les attaques ClickFix 10 561 failles détectées dans 1,2 million de commits GitHub : de fausses alertes VS Code propagent un malware Microsoft retire la mise à jour KB5079391 après des Le DoJ démantèle des botnets IoT derrière le DDoS record FortiGate : campagne active de vol de credentials ciblant CISA alerte sur une RCE exploitée, 24 700 instances exposées CVE-2026-20131 : Interlock exploite un zero-day Cisco FMC NIST renouvelle son guide de sécurité DNS après douze ans Handala pirate la messagerie du directeur du FBI Kash Patel Infinity Stealer : un nouveau malware cible macOS via Windows 11 : Microsoft publie un correctif d'urgence le fossé des compétences se creuse entre experts et novices Ubiquiti UniFi : faille CVSS 10 expose 29 000 équipements CVE-2026-21385 : Qualcomm corrige un zero-day Android CVE-2026-0625 : zero-day exploité sur routeurs D-Link Google corrige deux zero-days Skia et V8 exploités Mistral lance Voxtral TTS, modèle vocal open source à 4B GitHub lance la détection IA pour sécuriser le code source CVE-2026-3055 : Citrix NetScaler sous reconnaissance active Crunchyroll piraté : 6,8 millions de comptes compromis TeamPCP piège le SDK Telnyx sur PyPI via stéganographie WAV CVE-2025-53521 : F5 BIG-IP exploité, CISA exige un patch BlackCat : deux experts cybersécurité plaident coupable CVE-2026-32746 : RCE root non authentifié dans Telnetd APT28 exploite un 0-day MSHTML avant le Patch Tuesday Red Menshen : BPFDoor espionne les télécoms depuis 2021 Anthropic : la justice américaine bloque le ban de Trump Commission européenne : 350 Go volés via un cloud AWS Bearlyfy frappe 70 entreprises russes avec GenieLocker LangChain et LangGraph : trois failles critiques révélées PolyShell : 57 % des boutiques Magento vulnérables attaquées CVE-2026-33017 Langflow : RCE non authentifié exploité Qilin cible Malaysia Airlines : données passagers volées Conduent : brèche SafePay expose 25 millions d'Américains Mistral Small 4 : un seul modèle MoE remplace trois IA PolyShell : skimmer WebRTC vole 56 % des boutiques Magento CanisterWorm : TeamPCP infecte Trivy et 66 packages npm GlassWorm utilise Solana comme C2 pour son RAT furtif Medusa Ransomware : 9 jours hors-ligne pour un hôpital US Mandiant M-Trends 2026 : accès initial cédé en 22 secondes CVE-2026-20131 Cisco FMC : CVSS 10.0, hôpitaux visés CERTFR-2026-ALE-003 : ANSSI alerte sur les messageries Opération Checkmate : BlackSuit ransomware démantélé LiteLLM piraté : attaque supply chain PyPI TeamPCP EvilTokens PhaaS : 340 organisations M365 touchées Slopoly : Hive0163 déploie un malware généré par IA FCC interdit l'import de routeurs étrangers aux USA Silver Fox APT : espionnage et cybercrime ciblant l Asie Firefox 149 intègre un VPN gratuit et le Split View CVE-2026-32746 : RCE root non authentifié, GNU Telnetd CVE-2026-22557 Ubiquiti UniFi CVSS 10.0, 87 000 exposés TELUS Digital : ShinyHunters et le Vol de 1 PO de Data CVE-2025-32975 : Quest KACE SMA CVSS 10.0 exploité NVIDIA Agent Toolkit : IA autonome sécurisée en prod CVE-2026-3055 Citrix NetScaler : fuite de tokens SAML Crunchyroll confirme une fuite touchant 6,8 M d'utilisateurs Tycoon 2FA démantelé : Europol met fin au PhaaS MFA bypass TeamPCP étend son attaque supply chain à Checkmarx KICS CVE-2026-33017 Langflow : RCE exploité 20h après disclosure Stryker : le wiper iranien Handala détruit 80 000 terminaux Zero-Day CVSS 10.0 PTC Windchill : webshells en production Un hacker russe condamné à 81 mois pour ransomware La Corée du Nord piège les devs crypto via VS Code CMA UK : décision imminente contre AWS et Microsoft Moscou Usurpe Signal pour Cibler Officiels et Journalistes Microsoft Corrige en Urgence son Patch Tuesday Cassé GlassWorm Piège 72 Extensions VSCode pour Voler des Secrets PhantomRaven : Campagne npm Cible les Secrets CI/CD VMware Aria Operations CVE-2026-22719 : CISA KEV RCE Cisco FMC CVE-2026-20131 : Interlock RCE Root Actif DarkSword : exploit iOS zero-day ciblant les iPhones Le DoJ démantèle 4 botnets IoT au record de 31 Tbps n8n : 4 Failles RCE Critiques, 24 700 Serveurs Exposés Trivy : Attaque Supply Chain via GitHub Actions 2026 Meta : Agent IA Autonome Déclenche un Incident Critique Mistral Small 4 : Le Modèle Open Source 119B Tout-en-Un CVE-2026-21992 : Oracle Identity Manager RCE CVSS 9.8 Malaysia Airlines : le Groupe Quilin Exfiltre les Données Marquis Financial : 672 000 Victimes et Données Bancaires CVE-2025-68613 n8n : CISA KEV, 24 700 instances RCE exposées Navia Benefit Solutions : 2,7M dossiers santé exposés Opération Alice : 373 000 sites dark web démantelés CVE-2026-32746 : RCE Root dans GNU Telnetd CVSS 9.8 APT28 BadPaw et MeowMeow : Nouvelles Armes Contre l'Ukraine APT41 Silver Dragon : Espionnage via Google Drive C2 CVE-2026-20131 : Cisco FMC Zero-Day CVSS 10 Exploité CVE-2026-20963 SharePoint RCE Exploité : Alerte CISA KEV CVE-2026-33017 Langflow RCE : Exploité en Moins de 20h Iran-Handala : Wiper sur Stryker, FBI Saisit les Domaines CERT-FR : Messageries Instantanées Détournées Sans Malware TELUS Digital : ShinyHunters Vole 1 Pétaoctet de Données GLM-5 : Zhipu AI Lance un Modele 744B Parametres en 2026 Kali Linux 2025.4 : Passage a Wayland par Defaut en 2026 RSAC 2026 : Les Tendances Cybersecurite de l'Annee Patch Tuesday Fevrier 2026 : 4 Zero-Days Critiques Google Finalise l'Acquisition de Wiz pour 32 Milliards Gemini 3.1 Pro : 1 Million de Tokens en Contexte en 2026 Entra ID : Jailbreak de l'Authenticator Decouvert en 2026 FIRST Prevoit 50 000 CVE Publiees en 2026 : Guide Complet Entra ID : Migration Obligatoire vers DigiCert G2 en 2026 Anthropic Lance Cowork : Claude Sans Code pour Tous FCC Alerte : Ransomware Quadruple Depuis 2021 en 2026 Qilin Ransomware Domine le Paysage des Menaces Q1 2026 McDonald's India : Everest Ransomware Frappe Fort en 2026 CNIL France Travail : Sanction de 5 Millions EUR en 2026 CNIL : Free Mobile Sanctionne a 42 Millions EUR en 2026 Patch Tuesday Janvier 2026 : 112 CVE Corrigees en 2026 Microsoft Publie un Guide de Durcissement AD Complet Kali Linux 2025.3 : 15 Nouveaux Outils de Pentest en 2026 Cegedim Sante : 15 Millions de Patients Exposes en 2026 Kubernetes 1.35 : User Namespaces en Production en 2026 CNIL : Amende de 3,5M EUR pour Partage Illegal de Donnees SoundCloud et Inotiv : Double Fuite de Donnees en 2026 Leroy Merlin : Fuite de Donnees de 2 Millions de Clients GPT-5.2 : OpenAI Repousse les Limites a 400K Tokens React2Shell : RCE Critique CVSS 10 dans React Native BadSuccessor : Nouvelle Faille Critique Windows AD NIS 2 : l'Allemagne Adopte sa Loi de Transposition Shai-Hulud 2 : Supply Chain NPM Compromis a Grande Echelle Llama 4 Scout et Maverick : Meta Passe au Multimodal Microsoft Renforce la Protection CSP dans Entra ID Attaques Active Directory en Hausse de 42% en 2025 CVE-2025-20337 : RCE Critique dans Cisco ISE : Guide Complet Claude 4.5 : Anthropic Mise sur les Agents IA en 2026 Gemini 3 : Google Bat Tous les Benchmarks LLM en 2026 GPT-5.1 : OpenAI Lance son Modele le Plus Puissant ISO 27001:2022 : Fin de Transition en Octobre 2025 DoorDash : Fuite Massive via Social Engineering en 2026 OpenAI Renonce a l'Open Source pour ses Modeles IA SimonMed : Medusa Ransomware Expose 500K Patients en 2026 Ingénierie Sociale par IA : Menace Cyber n°1 en 2025 Failles de Sécurité Critiques Découvertes dans l'App Cisco Lance un Outil pour Sécuriser les Déploiements Faille Microsoft 365 Copilot Permet l'Exfiltration de Microsoft Déploie un Fix d'Urgence pour le Bug en 2026 Crimson Collective Exfiltre 12 To via F5 BIG-IP en 2026 Oracle EBS : Zero-Day RCE Exploite en Production en 2026 CVE-2025-64446 : Faille Critique FortiWeb CVSS 9.8

Livres Blancs

14 articles
Livres Blancs Gratuits
Voir tous →

Téléchargement gratuit · Aucune inscription requise

Tous les livres blancs
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Checklist Sécurité ANC

📊 Checklist Sécurité Microsoft 365

Sécurisation M365 : Entra ID, Conditional Access, Exchange Online, SharePoint, Teams, Intune, DLP et Purview.

74 sections 297 contrôles 56823 mots PDF + Excel

La plus complète de nos checklists avec 297 contrôles sur 74 sections : MFA et Conditional Access, Exchange Online (anti-phishing, anti-malware), SharePoint et OneDrive, Microsoft Teams, Intune/MDM, DLP, Microsoft Purview et supervision du tenant. Indispensable pour tout environnement M365.

📑 Table des matières

CHECKLIST SÉCURITÉ MICROSOFT 365

AYI NEDJIMI CONSULTANTS (ANC)

Référentiel : CIS Microsoft 365 Foundations Benchmark v6.0.1 + CISA SCuBA M365 Baseline v1.7 + ANSSI + BOD 18-01 / BOD 25-01


Document : CHECKLIST-M365-ANC Version : 4.6 Date : 2026-03-26 Classification : CONFIDENTIEL Auteur : AYI NEDJIMI CONSULTANTS


LÉGENDE

Symbole Signification
Conforme
Non conforme
⚠️ Partiellement conforme
N/A Non applicable
🔴 Critique
🟠 Élevé
🟡 Moyen
🟢 Faible

MODE DÉCOUVERTE RAPIDE — 15 Questions Clés (< 30 min)

Objectif : Identifier les risques critiques en moins de 30 minutes, avant l’audit complet. Scoring : OUI = 0 pt | NON = 1 pt | Seuil d’alerte : ≥ 5 réponses NON Résultat : Un score élevé indique des lacunes critiques prioritaires à traiter immédiatement.

# Question clé Contrôle Risque si NON Statut
Q1 MFA est-il activé pour TOUS les comptes administrateurs ? 1.1.1 🔴 Critique — compromission totale du tenant ☐ OUI ☐ NON
Q2 L’authentification héritée (Legacy Auth) est-elle bloquée par Conditional Access ? 1.3.1 🔴 Critique — bypass MFA complet ☐ OUI ☐ NON
Q3 Le nombre de Global Admins est-il ≤ 4 à 8 et ces comptes sont-ils Cloud-Only sans licence Exchange/Teams (uniquement licence admin P2) ? 1.8.2 🔴 Critique — surface d’attaque élevée ☐ OUI ☐ NON
Q4 PIM est-il activé pour tous les rôles privilégiés (aucune assignation permanente) ? 1.8.1 🔴 Critique — droits permanents = risque persistant ☐ OUI ☐ NON
Q5 Defender for Office 365 : Safe Links et Safe Attachments sont-ils activés ? 2.3.1 / 2.3.2 🔴 Critique — phishing et malware non filtrés ☐ OUI ☐ NON
Q6 Des politiques DLP sont-elles actives sur Exchange, SharePoint et Teams ? 6.1.3 🟠 Élevé — fuite de données non détectée ☐ OUI ☐ NON
Q7 L’Audit Log unifié est-il activé avec rétention ≥ 1 an ? 6.1.1 🟠 Élevé — investigation forensic impossible ☐ OUI ☐ NON
Q8 Le partage externe SharePoint est-il ≤ “Invités existants uniquement” ? 5.1.1 🔴 Critique — exfiltration de données ☐ OUI ☐ NON
Q9 DMARC est-il configuré en p=reject (pas p=none) pour tous les domaines ? 2.2.4 🔴 Critique — usurpation d’identité email ☐ OUI ☐ NON
Q10 Les étiquettes de sensibilité sont-elles publiées pour tous les utilisateurs ? 6.1.4 🟠 Élevé — pas de classification des données ☐ OUI ☐ NON
Q11 Les Service Principals / App Registrations inactifs > 90j ont-ils été examinés ? 1.5c.6 🟠 Élevé — identités zombies exploitables ☐ OUI ☐ NON
Q12 Le Secure Score est-il ≥ 50% de l’objectif défini et suivi mensuellement ? 8.1.1 🟠 Élevé — posture de sécurité dégradée ☐ OUI ☐ NON
Q13 Le signalement de sécurité Teams est-il activé pour les utilisateurs ? 4.2.6 🟡 Moyen — phishing Teams non signalé ☐ OUI ☐ NON
Q14 Le SSPR est-il configuré avec ≥ 2 méthodes d’authentification sécurisées ? 1.2b.5 🟠 Élevé — réinitialisation de mot de passe non sécurisée ☐ OUI ☐ NON
Q15 Les règles de redirection automatique de boîte mail vers l’extérieur sont-elles bloquées ? 3.1.1 / 3.2.11 🔴 Critique — exfiltration silencieuse des emails ☐ OUI ☐ NON

Interprétation du score de découverte rapide

Nb NON Niveau de risque Action recommandée
0–1 🟢 Faible Audit complet de confirmation — posture mature
2–4 🟡 Moyen Audit complet avec focus sur les NON identifiés
5–8 🟠 Élevé Plan de remédiation immédiat pour les questions critiques
≥ 9 🔴 Critique Intervention d’urgence requise — sécurité fondamentale absente

INFORMATIONS CLIENT

Champ Valeur
Organisation
Tenant ID
Domaine principal
Date d’audit
Auditeur
Version M365

SECTION 1 — GESTION DES IDENTITÉS ET DES ACCÈS


1.1 Authentification Multi-Facteurs (MFA)


1.1.1 — Activer MFA pour tous les comptes Administrateurs

Niveau : 🔴 Critique Référence CIS : CIS Control 5.3 MITRE ATT&CK : T1078.004 (Valid Accounts: Cloud) · T1556.006 (Modify Authentication: MFA) · T1621 (MFA Request Generation)

Description : L’authentification multi-facteurs (MFA) est la mesure de sécurité la plus efficace pour protéger les comptes administrateurs contre les compromissions. Sans MFA, un mot de passe volé suffit à compromettre l’intégralité du tenant M365. Les comptes administrateurs disposant de privilèges élevés sont les cibles prioritaires des attaquants.

Vérification :

  • Accéder à : Entra ID > Protection > Authentification multifacteur > Paramètres
  • Ou via PowerShell :
Get-MgUser -Filter "assignedLicenses/$count ne 0" | Get-MgUserAuthenticationMethod
  • Vérifier que 100% des comptes avec rôles admin ont MFA activé
  • Vérifier dans les rapports de connexion qu’aucune connexion admin ne s’est faite sans MFA

Remédiation :

  1. Activer les Paramètres de sécurité par défaut (Security Defaults) si l’organisation n’utilise pas l’Accès Conditionnel
  2. Ou créer une Politique d’Accès Conditionnel : Utilisateurs → Tous les utilisateurs avec rôles admin → Accorder → Exiger MFA
  3. Enrôler tous les administrateurs dans MFA via : https://aka.ms/mfasetup
  4. Méthodes recommandées par ordre de préférence : Application Authenticator > Clé FIDO2 > SMS (déconseillé)

Impact si non conforme : Compromission totale du tenant en cas de phishing ou fuite de mot de passe administrateur.


1.1.2 — Activer MFA pour tous les utilisateurs

Niveau : 🟠 Élevé Référence CIS : CIS Control 5.3 MITRE ATT&CK : T1078 (Valid Accounts) · T1586.003 (Compromise Accounts: Cloud) · T1199 (Trusted Relationship)

Description : Tous les utilisateurs, pas uniquement les administrateurs, doivent utiliser le MFA. Un compte utilisateur standard compromis peut servir de pivot pour des attaques de latéralisation, l’exfiltration de données ou des attaques BEC (Business Email Compromise).

Vérification :

  • Entra ID > Protection > Authentification multifacteur > Rapport d’activité
  • Vérifier le pourcentage d’utilisateurs enrôlés dans MFA
  • PowerShell :
Get-MgReportAuthenticationMethodUserRegistrationDetail | Where-Object {$_.IsMfaRegistered -eq $false}

Remédiation :

  1. Déployer une Politique d’Accès Conditionnel ciblant tous les utilisateurs
  2. Utiliser la fonctionnalité Campagne d’enrôlement MFA dans Entra ID pour guider les utilisateurs
  3. Définir un délai de grâce raisonnable (14 jours maximum)
  4. Former les utilisateurs via Microsoft Learn ou sessions internes

1.1.3 — Désactiver MFA via SMS comme méthode principale

Niveau : 🟡 Moyen Référence CIS : CIS Control 5.3

Description : Le SMS est vulnérable aux attaques de SIM swapping et d’interception SS7. Bien qu’il soit préférable à l’absence de MFA, il ne doit pas être la méthode principale recommandée par l’organisation.

Vérification :

  • Entra ID > Protection > Méthodes d’authentification > Stratégies
  • Vérifier si le SMS est activé et quelle est sa priorité

Remédiation :

  1. Dans Entra ID > Méthodes d’authentification, favoriser Microsoft Authenticator avec Number Matching et Additional Context
  2. Désactiver ou déprioriser le SMS pour les comptes sensibles
  3. Activer les clés FIDO2 pour les environnements à haute sécurité
  4. Activer la résistance au phishing : Paramètres > Number Matching = Activé

1.1.4 — Exiger une MFA Résistante au Phishing pour les Rôles Privilégiés

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.3.6v1 Référence CIS : CIS Control 5.3

Description : Les méthodes MFA classiques (notification push, TOTP) restent vulnérables aux attaques de type AiTM (Adversary-in-the-Middle) et phishing en temps réel (Evilginx2, Modlishka). Les méthodes résistantes au phishing — FIDO2/clés de sécurité physiques (YubiKey, etc.), Windows Hello for Business, ou certificats client — sont liées cryptographiquement au domaine légitime et ne peuvent pas être relayées par un proxy d’attaque.

Vérification :

  • Entra ID > Protection > Accès Conditionnel > Vérifier l’existence d’une politique exigeant une MFA résistante au phishing pour les rôles admin
  • PowerShell :
Get-MgIdentityConditionalAccessPolicy | Where-Object {$_.DisplayName -like "*phishing*" -or $_.DisplayName -like "*FIDO*"} | Select-Object DisplayName, State

Remédiation :

  1. Créer une politique CA : Utilisateurs → Rôles d’annuaire (sélectionner tous les rôles admin)
  2. Accorder → Exiger la force d’authentification → Créer une force d’authentification personnalisée avec : FIDO2 Security Key, Windows Hello for Business, Certificate-based Authentication (hardware)
  3. Enrôler tous les administrateurs dans au moins une méthode résistante au phishing
  4. Pour les environnements très sensibles : étendre aux utilisateurs à accès privilégié (RH, Finance, Direction)

Impact si non conforme : Les campagnes AiTM (type EvilProxy, Evilginx) peuvent intercepter les tokens MFA push en temps réel.


1.1.5 — Désactiver SMS, Appel Vocal et Email OTP comme méthodes MFA

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.3.5v2 Référence : NIST SP 800-63B

Description : Le SMS, l’appel vocal et l’Email OTP sont explicitement déconseillés par le NIST SP 800-63B pour l’authentification des systèmes gouvernementaux et d’entreprise. Ces méthodes sont vulnérables au SIM swapping, à l’interception SS7, au vishing, et au forwarding de messages. La CISA impose leur désactivation dans les organisations fédérales américaines (BOD 25-01).

Vérification :

  • Entra ID > Protection > Méthodes d’authentification > Stratégies
  • Vérifier le statut de “SMS”, “Voice Call”, “Email OTP”
  • PowerShell :
Get-MgPolicyAuthenticationMethodPolicyAuthenticationMethodConfiguration -AuthenticationMethodConfigurationId "Sms" | Select-Object State
Get-MgPolicyAuthenticationMethodPolicyAuthenticationMethodConfiguration -AuthenticationMethodConfigurationId "Voice" | Select-Object State

Remédiation :

  1. Entra ID > Protection > Méthodes d’authentification > Stratégies
  2. Désactiver “SMS” (état : Désactivé)
  3. Désactiver “Voice Call” (état : Désactivé)
  4. Désactiver “Email OTP” (état : Désactivé)
  5. Avant désactivation : s’assurer que 100% des utilisateurs ont une méthode alternative (Authenticator App ou FIDO2)
  6. Utiliser la fonctionnalité de campagne d’enrôlement MFA pour migrer les utilisateurs

1.1.6 — Activer Number Matching pour Microsoft Authenticator

Niveau : 🟠 Élevé Référence CIS : CIS Control 5.3

Description : Le Number Matching prévient les attaques de type MFA Fatigue (MFA Bombing) où un attaquant envoie des notifications push répétées jusqu’à ce que l’utilisateur accepte par erreur ou fatigue. Avec Number Matching, l’utilisateur doit saisir un code affiché sur l’écran de connexion.

Vérification :

  • Entra ID > Protection > Méthodes d’authentification > Microsoft Authenticator > Configurer
  • Vérifier que “Correspondance de nombre” = Activé

Remédiation :

  1. Entra ID > Protection > Méthodes d’authentification > Microsoft Authenticator
  2. Cliquer sur “Configurer”
  3. Activer “Correspondance de nombre” pour tous les utilisateurs
  4. Activer également “Contexte supplémentaire” (affiche l’application et la localisation)

1.1.7 — Finaliser la migration des méthodes d’authentification (Authentication Methods Migration)

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.AAD.3.4v1

Description : Microsoft dispose de deux systèmes de gestion des méthodes d’authentification : l’ancien (hérité, dans les paramètres MFA legacy) et le nouveau (Authentication Methods Policy dans Entra ID). Tant que la migration n’est pas complète, des politiques contradictoires peuvent coexister, créant des lacunes de sécurité et des configurations inattendues.

Vérification :

  • Entra ID > Protection > Méthodes d’authentification > Stratégies > Migration
  • Vérifier que l’état est “Migration terminée” et non “En cours” ou “Non commencée”

Remédiation :

  1. Entra ID > Protection > Méthodes d’authentification > Gérer la migration
  2. Auditer les méthodes activées dans l’ancienne console MFA
  3. Reconfigurer de manière équivalente dans la nouvelle console Authentication Methods
  4. Cliquer sur “Terminer la migration” une fois la configuration validée
  5. Après migration : toute gestion se fait exclusivement via Authentication Methods Policy

1.1.8 — Bloquer l’authentification héritée (Legacy Authentication)

Niveau : 🔴 Critique Référence CIS : CIS Control 4.8

Description : Les protocoles d’authentification héritée (SMTP AUTH, POP3, IMAP, MAPI basique, EWS Basic Auth) ne supportent pas le MFA. Ils représentent un vecteur d’attaque majeur car ils permettent de bypasser entièrement le MFA via des attaques par force brute ou password spray.

Vérification :

  • Entra ID > Connexions > Filtrer par “Application cliente” → protocoles hérités
  • PowerShell :
Get-MgAuditLogSignIn -Filter "clientAppUsed eq 'SMTP Auth' or clientAppUsed eq 'POP3' or clientAppUsed eq 'IMAP4'" | Select-Object UserPrincipalName, ClientAppUsed, CreatedDateTime
  • Vérifier les 30 derniers jours d’activité

Remédiation :

  1. Créer une Politique d’Accès Conditionnel : Bloquer les authentifications héritées
    • Utilisateurs : Tous
    • Applications cloud : Toutes
    • Conditions > Applications clientes : cocher “Autres clients”
    • Accorder : Bloquer l’accès
  2. Avant le blocage, identifier les applications utilisant encore ces protocoles
  3. Migrer les applications vers les protocoles modernes (OAuth 2.0, MSAL)
  4. Dans Exchange : Désactiver SMTP AUTH au niveau tenant sauf exceptions justifiées

1.2 Paramètres M365 Admin Center (Org Settings)


1.2.1 — Utiliser des licences à empreinte applicative réduite pour les comptes admin

Niveau : 🟠 Élevé Référence CIS : 1.1.4 (L1) — Automated Profile : E3 Level 1

Description : Les comptes administrateurs dédiés ne doivent pas disposer de licences M365 complètes incluant Teams, Exchange, SharePoint, etc. Une licence complète augmente inutilement la surface d’attaque : si un compte admin est compromis, l’attaquant hérite de toutes les capacités de la licence. La recommandation CIS est d’utiliser des licences minimales (ex: Azure AD P2 seule) pour les comptes admin purs.

Vérification :

# Lister les comptes admin et leurs licences
$adminRoles = Get-MgDirectoryRole -Filter "DisplayName eq 'Global Administrator'"
$adminMembers = Get-MgDirectoryRoleMember -DirectoryRoleId $adminRoles.Id
foreach ($admin in $adminMembers) {
    $user = Get-MgUser -UserId $admin.Id -Property DisplayName,AssignedLicenses,UserPrincipalName
    Write-Output "$($user.UserPrincipalName): $($user.AssignedLicenses.SkuId -join ', ')"
}

Vérifier qu’aucun compte admin dédié ne possède de licence incluant Exchange Online, Teams, SharePoint, OneDrive, etc.

Remédiation :

  1. Pour chaque compte admin dédié, retirer les licences M365 complètes
  2. Assigner uniquement les licences nécessaires pour les fonctions admin (ex: Microsoft Entra ID P2, Microsoft 365 E3 sans Exchange/Teams si besoin de conformité)
  3. Les admins utilisent leurs comptes utilisateur standards pour accéder à Teams, email, etc.
  4. Vérifier que les comptes admin n’ont pas de boîte mail activée

Valeur par défaut : Aucune restriction — les comptes admin peuvent avoir n’importe quelle licence.


1.2.2 — Bloquer la connexion aux boîtes mail partagées (Shared Mailboxes)

Niveau : 🟠 Élevé Référence CIS : 1.2.2 (L1) — Automated Profile : E3 Level 1

Description : Les boîtes mail partagées sont conçues pour être accédées via délégation, pas par connexion directe. Un compte de boîte mail partagée avec connexion activée peut être utilisé par un attaquant comme point d’entrée : ces comptes ont souvent des mots de passe anciens, ne sont pas soumis au MFA standard, et passent sous le radar des revues d’accès.

Vérification :

# Identifier les shared mailboxes avec connexion non bloquée
Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited |
    ForEach-Object {
        $mbx = $_
        $user = Get-MgUser -UserId $mbx.ExternalDirectoryObjectId -Property AccountEnabled,UserPrincipalName -ErrorAction SilentlyContinue
        if ($user.AccountEnabled -eq $true) {
            Write-Output "ATTENTION - Connexion active : $($user.UserPrincipalName)"
        }
    }

Remédiation :

# Bloquer la connexion sur toutes les shared mailboxes (Microsoft Graph)
Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited | ForEach-Object {
    Update-MgUser -UserId $_.ExternalDirectoryObjectId -AccountEnabled:$false
}

Les boîtes mail partagées restent accessibles via délégation depuis les comptes utilisateur autorisés.

Valeur par défaut : Connexion activée par défaut sur les comptes de boîtes partagées.


1.2.3 — Restreindre les groupes publics aux groupes approuvés par l’organisation

Niveau : 🟡 Moyen Référence CIS : 1.2.1 (L2) — Automated Profile : E3 Level 2

Description : Les groupes M365 publics (Microsoft 365 Groups avec accès public) permettent à n’importe quel utilisateur de l’organisation de rejoindre le groupe et d’accéder à son contenu (Teams, SharePoint, emails du groupe). Sans gouvernance, des données sensibles peuvent être stockées dans des groupes publics accessibles à tous.

Vérification :

# Lister les groupes publics non approuvés
Get-MgGroup -Filter "groupTypes/any(g:g eq 'Unified') and visibility eq 'Public'" |
    Select-Object DisplayName, Id, Visibility |
    Sort-Object DisplayName

Remédiation :

  1. M365 Admin Center > Équipes et groupes > Groupes actifs
  2. Pour chaque groupe public non justifié : changer la visibilité en “Privé”
  3. Créer une politique de nommage et de gouvernance pour les nouveaux groupes
  4. PowerShell pour convertir en privé :
Update-MgGroup -GroupId <GroupId> -Visibility "Private"
  1. Activer l’approbation d’un administrateur pour la création de nouveaux groupes publics

Valeur par défaut : La visibilité du groupe est définie lors de la création, par défaut souvent “Public”.


1.2.4 — Configurer le délai d’expiration de session pour les appareils non gérés (≤ 3 heures)

Niveau : 🟠 Élevé Référence CIS : 1.3.2 (L2) — Automated Profile : E3 Level 2

Description : Sans délai d’expiration de session, une session M365 reste active indéfiniment sur un appareil non géré (ordinateur partagé, cybercafé, appareil personnel). Un attaquant ayant un accès physique temporaire à l’appareil peut réutiliser la session. La CIS recommande 3 heures maximum pour les appareils non gérés.

Vérification :

  • M365 Admin Center > Paramètres > Org Settings > Sécurité et confidentialité > Délai d’expiration de session inactive
  • PowerShell :
# Via SharePoint (contrôle le délai pour OWA/M365 web sur appareils non gérés)
Get-SPOTenant | Select-Object SignInAccelerationDomain, IdleSessionSignOut, IdleSessionSignOutWarnMinutes, IdleSessionSignOutMinutes

Remédiation :

  1. M365 Admin Center > Paramètres > Org Settings > Sécurité et confidentialité
  2. Activer “Délai d’expiration de session inactive pour les utilisateurs non actifs dans les applications web Microsoft 365”
  3. Délai d’inactivité : 3 heures (ou moins selon la politique interne)
  4. Avertissement avant déconnexion : 5 minutes
  5. Via PowerShell SharePoint :
Set-SPOTenant -IdleSessionSignOut $true -IdleSessionSignOutWarnMinutes 5 -IdleSessionSignOutMinutes 180

Valeur par défaut : Pas de délai d’expiration configuré par défaut.

Note : Les contrôles CIS 1.3.4 à 1.3.9 (Office Store, Forms, Customer Lockbox, Stockage tiers, Sway, Bookings) sont couverts en Section 12 — Gestion Administrative (contrôles 12.1.6 à 12.1.11).


1.2b Politiques de Mots de Passe


1.2b.1 — Désactiver l’expiration automatique des mots de passe

Niveau : 🟡 Moyen Référence CIS : CIS Control 5.2 / NIST SP 800-63B

Description : Contrairement aux politiques historiques, le NIST recommande depuis 2017 de ne pas forcer l’expiration périodique des mots de passe. Cette pratique pousse les utilisateurs à choisir des mots de passe prévisibles avec incrémentation (ex: Motdepasse1 → Motdepasse2). Microsoft recommande désormais de ne pas expirer les mots de passe, couplé à la surveillance des compromissions.

Vérification :

  • Microsoft 365 Admin Center > Paramètres > Org Settings > Security & Privacy > Password expiration policy
  • Vérifier que “Set passwords to never expire” est activé

Remédiation :

  1. M365 Admin Center > Paramètres > Org Settings > Sécurité et confidentialité
  2. Activer “Les mots de passe n’expirent jamais”
  3. Activer à la place la protection par mot de passe Entra ID (protection contre les mots de passe faibles/compromis)
  4. Activer l’Identity Protection pour détecter les credentials compromis

1.2b.2 — Activer la Protection des Mots de Passe Entra ID

Niveau : 🟠 Élevé Référence CIS : CIS Control 5.2

Description : La protection par mot de passe Entra ID bloque l’utilisation de mots de passe communs et facilement devinables. Microsoft maintient une liste des mots de passe compromis, et les organisations peuvent ajouter leurs propres termes interdits (nom de l’entreprise, termes métier, etc.).

Vérification :

  • Entra ID > Protection > Méthodes d’authentification > Protection par mot de passe
  • Vérifier le mode (Audit ou Appliqué) et la liste personnalisée

Remédiation :

  1. Entra ID > Protection > Méthodes d’authentification > Protection par mot de passe
  2. Activer “Activer la protection par mot de passe sur Windows Server Active Directory” si AD hybride
  3. Passer du mode Audit au mode Appliqué après période de test
  4. Ajouter termes interdits personnalisés : nom entreprise, variantes, termes sectoriels

1.2b.3 — Configurer le verrouillage intelligent (Smart Lockout) — Seuil ≤10 / Durée ≥60s

Niveau : 🟠 Élevé Référence CIS : CIS Control 5.2 + M365SAT CISAz66/67 + EIDSCA.PR05/PR06 — Automated Licence requise : Entra ID Free

Description : Le Smart Lockout doit être configuré avec des valeurs précises : seuil ≤ 10 tentatives et durée ≥ 60 secondes. Par défaut, les valeurs sont trop permissives. Un seuil > 10 facilite les attaques par password spray (qui envoient 1 tentative par compte sur des milliers de comptes, sous le radar des lockouts). La durée de 60 secondes minimum empêche les attaques rapides en rafale.

Vérification :

# Vérifier via l'API interne Azure AD (non disponible via Graph standard)
$token = (Get-MgContext).AccessToken
$headers = @{ Authorization = "Bearer $token" }
$lockoutConfig = Invoke-RestMethod -Uri "https://main.iam.ad.ext.azure.com/api/PasswordProtectionPolicy" `
    -Headers $headers -Method GET -ErrorAction SilentlyContinue
$lockoutConfig | Select-Object lockoutThreshold, lockoutDurationInSeconds
# Résultat attendu : lockoutThreshold ≤ 10, lockoutDurationInSeconds ≥ 60
  • Portail : Entra ID > Protection > Méthodes d’authentification > Protection par mot de passe

Remédiation :

  1. Entra ID > Protection > Méthodes d’authentification > Protection par mot de passe
  2. Seuil de verrouillage : 10 maximum (idéalement 5 pour environnements sensibles)
  3. Durée de verrouillage : 60 secondes minimum (idéalement 120s)
  4. Mode : passer d’Audit à Appliqué après validation
  5. Pour environnements très sensibles : seuil = 5, durée = 120s

Valeur par défaut : Seuil = 10 (correct), durée = 60s (correct) — mais le mode est souvent “Audit” et non “Appliqué”.


1.2b.4 — Configurer une liste de mots de passe bannis personnalisée

Niveau : 🟡 Moyen Référence CIS : CIS Control 5.2 + M365SAT CISAz68 + EIDSCA.PR03 — Manual Licence requise : Entra ID P1

Description : En complément de la liste globale de mots de passe bannis Microsoft (500+ millions de mots de passe compromis), chaque organisation doit configurer une liste personnalisée incluant : le nom de l’entreprise, ses variantes, les termes métier courants, les noms de produits, etc. Ces termes sont facilement devinables par des attaquants qui connaissent l’organisation (OSINT).

Vérification :

# Vérifier la liste personnalisée via l'API interne
$token = (Get-MgContext).AccessToken
$headers = @{ Authorization = "Bearer $token" }
$pwdProtection = Invoke-RestMethod -Uri "https://main.iam.ad.ext.azure.com/api/PasswordProtectionPolicy" `
    -Headers $headers -Method GET -ErrorAction SilentlyContinue
$pwdProtection | Select-Object enableBannedPasswordCheck, bannedPasswordList
# Résultat attendu : enableBannedPasswordCheck = True, bannedPasswordList non vide
  • Entra ID > Protection > Méthodes d’authentification > Protection par mot de passe > Liste personnalisée

Remédiation :

  1. Entra ID > Protection > Méthodes d’authentification > Protection par mot de passe
  2. Activer “Appliquer la liste personnalisée”
  3. Ajouter minimum : nom entreprise, acronymes, termes métier principaux (15+ termes)
  4. Activer aussi sur l’AD on-premises si environnement hybride (agent Azure AD Password Protection)

Valeur par défaut : Liste personnalisée vide — seule la liste globale Microsoft est active.


1.2b.5 — Exiger 2 méthodes pour la réinitialisation de mot de passe (SSPR)

Niveau : 🟠 Élevé Référence CIS : CIS 5.2.4.1 + M365SAT CISAz65 — Automated Licence requise : Entra ID P1

Description : La réinitialisation de mot de passe en libre-service (SSPR) avec une seule méthode (ex: email uniquement) ne constitue pas un vrai second facteur. Si l’attaquant a accès à la boîte mail, il peut réinitialiser le mot de passe et prendre le contrôle du compte M365. Exiger 2 méthodes indépendantes (ex: application d’authentification + téléphone) empêche ce scénario.

Vérification :

# Vérifier le nombre de méthodes requises pour SSPR
$ssprPolicy = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/policies/authenticationMethodsPolicy" -Method GET
$ssprConfig = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/directory/authenticationMethodConfigurations/passwordReset" -Method GET -ErrorAction SilentlyContinue
# Vérifier aussi via l'API interne :
$token = (Get-MgContext).AccessToken
$headers = @{ Authorization = "Bearer $token" }
$sspr = Invoke-RestMethod -Uri "https://main.iam.ad.ext.azure.com/api/PasswordReset/IsEnabled" `
    -Headers $headers -Method GET -ErrorAction SilentlyContinue
Write-Host "SSPR enabled: $sspr"
  • Entra ID > Protection > Réinitialisation du mot de passe > Méthodes d’authentification > “Nombre de méthodes requises pour la réinitialisation” = 2

Remédiation :

  1. Entra ID > Protection > Réinitialisation du mot de passe > Méthodes d’authentification
  2. Nombre de méthodes requises : 2
  3. Méthodes recommandées : Application d’authentification + Téléphone (pas email seul)
  4. Désactiver les questions de sécurité (devinables via OSINT)
  5. Désactiver l’authentification par email seul comme méthode SSPR

Valeur par défaut : 1 méthode requise — insuffisant pour une protection réelle.


1.3 Accès Conditionnel (Conditional Access)


1.3.1 — Activer les Paramètres de Sécurité par Défaut ou l’Accès Conditionnel

Niveau : 🔴 Critique Référence CIS : CIS Control 4.1 MITRE ATT&CK : T1078.004 (Valid Accounts: Cloud) · T1550.001 (Application Access Token) · T1110 (Brute Force)

Description : Les Security Defaults fournissent un niveau de sécurité minimal sans configuration. Pour les organisations plus matures, l’Accès Conditionnel offre une granularité plus fine. L’un ou l’autre DOIT être activé. Un tenant sans l’un ni l’autre est extrêmement vulnérable.

Vérification :

  • Entra ID > Vue d’ensemble > Paramètres de sécurité par défaut (Security Defaults)
  • OU Entra ID > Protection > Accès Conditionnel > Politiques

Remédiation :

  1. Si organisation < 50 utilisateurs sans équipe IT : activer Security Defaults
  2. Si organisation avec besoins spécifiques : désactiver Security Defaults et créer des politiques CA granulaires
  3. Ne jamais avoir les deux désactivés simultanément

1.3.2 — Politique CA : Exiger un appareil conforme ou hybride Azure AD

Niveau : 🟠 Élevé Référence CIS : CIS Control 12.1

Description : Restreindre l’accès aux ressources M365 aux seuls appareils conformes (gérés par Intune avec politiques de conformité validées) ou hybrides Azure AD réduit considérablement la surface d’attaque et empêche l’accès depuis des appareils personnels non sécurisés.

Vérification :

  • Accès Conditionnel > Politiques
  • Vérifier l’existence d’une politique vérifiant la conformité des appareils

Remédiation :

  1. Créer politique CA : Utilisateurs → Tous, Ressources → Toutes apps cloud
  2. Conditions > Plateformes d’appareils → Sélectionner plateformes concernées
  3. Accorder → Exiger que l’appareil soit marqué comme conforme
  4. Prérequis : Déployer Intune et définir des politiques de conformité

1.3.3 — Politique CA : Bloquer les pays à risque

Niveau : 🟠 Élevé Référence CIS : CIS Control 13.1

Description : Bloquer les connexions provenant de pays où l’organisation n’a pas d’activité réduit significativement la surface d’attaque pour les campagnes de phishing et de password spray souvent initiées depuis des pays spécifiques.

Vérification :

  • Accès Conditionnel > Emplacements nommés > Vérifier les politiques de blocage géographique

Remédiation :

  1. Entra ID > Protection > Accès Conditionnel > Emplacements nommés
  2. Créer un emplacement “Pays autorisés” avec les pays légitimes
  3. Créer politique CA : Conditions > Emplacements → Exclure les pays autorisés → Bloquer

1.3.4 — Politique CA : Protéger l’accès à Azure/Entra ID Management

Niveau : 🔴 Critique Référence CIS : CIS Control 4.1

Description : L’accès au portail Azure et aux APIs de gestion doit être restreint aux seuls utilisateurs légitimes depuis des postes de travail d’administration dédiés (PAW - Privileged Access Workstations).

Vérification :

  • Vérifier l’existence d’une politique CA ciblant “Microsoft Azure Management”
  • Vérifier les conditions restrictives appliquées

Remédiation :

  1. Créer politique CA ciblant l’application “Microsoft Azure Management”
  2. Restreindre aux administrateurs uniquement
  3. Exiger MFA renforcé (FIDO2 ou Windows Hello for Business)
  4. Optionnel : Restreindre aux PAW (appareils spécifiques via filtres d’appareils)

1.3.5 — Politique CA : Fréquence de reconnexion et sessions persistantes

Niveau : 🟡 Moyen Référence CIS : CIS Control 4.3

Description : Les sessions persistantes sur des appareils non gérés représentent un risque si l’appareil est compromis ou partagé. Définir une fréquence de reconnexion limite la durée d’exposition en cas de vol de session.

Vérification :

  • Politiques CA > Sessions > Vérifier les paramètres de fréquence de connexion

Remédiation :

  1. Pour appareils non conformes : fréquence de connexion = 1 heure
  2. Pour appareils conformes : fréquence de connexion = 8 heures ou persistante
  3. Désactiver “Rester connecté” pour les appareils non gérés
  4. Politique CA : Conditions > Appareils non conformes → Session → Fréquence de connexion : 1h

1.3.6 — Bloquer le flux Device Code (Device Code Flow) — Storm-2372

Niveau : 🔴 Critique Référence : Maester MT.1052 + CISA Advisory 2025 — Automated Licence requise : Entra ID P1

Description : Le Device Code Flow (deviceCodeFlow) est une méthode d’authentification OAuth conçue pour les appareils sans navigateur (TV, imprimantes). En 2025, le groupe d’attaquants Storm-2372 (étatique) a massivement exploité ce flux pour du phishing : l’attaquant demande un code appareil, l’envoie à la victime par email/Teams, la victime entre le code sur un site légitime Microsoft et l’attaquant obtient un token d’accès complet sans jamais avoir besoin du mot de passe. Ce flux doit être bloqué par une politique CA.

Vérification :

# Vérifier si une politique CA bloque le Device Code Flow
$caPolicies = Get-MgIdentityConditionalAccessPolicy -All | Where-Object { $_.State -eq "enabled" }
$deviceCodePolicy = $caPolicies | Where-Object {
    $_.Conditions.AuthenticationFlows -ne $null -and
    $_.Conditions.AuthenticationFlows.TransferMethods -contains "deviceCodeFlow"
}
if ($deviceCodePolicy) {
    Write-Host "✅ Device Code Flow bloqué par la politique : $($deviceCodePolicy.DisplayName)" -ForegroundColor Green
} else {
    Write-Host "❌ CRITIQUE : Aucune politique CA ne bloque le Device Code Flow (Storm-2372 vector)" -ForegroundColor Red
}

Remédiation :

  1. Entra ID > Sécurité > Accès conditionnel > Nouvelle politique
  2. Nom : “ANC-CA-Block-DeviceCodeFlow”
  3. Utilisateurs : Tous les utilisateurs
  4. Conditions > Flux d’authentification > Device Code Flow = Inclure
  5. Contrôles d’accès > Accorder > Bloquer l’accès
  6. État : Activé
# PowerShell via Graph
$params = @{
    displayName = "ANC-CA-Block-DeviceCodeFlow"
    state = "enabled"
    conditions = @{
        users = @{ includeUsers = @("All") }
        authenticationFlows = @{ transferMethods = "deviceCodeFlow" }
    }
    grantControls = @{ operator = "OR"; builtInControls = @("block") }
}
Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies" -Method POST -Body ($params | ConvertTo-Json -Depth 5)

Valeur par défaut : Device Code Flow autorisé — aucune restriction par défaut.


1.3.7 — Bloquer le flux d’authentification legacy (Other Clients)

Niveau : 🔴 Critique Référence : CIS 5.2.1.1 (L1) + CISA MS.AAD.1.1v1 — Automated Licence requise : Entra ID P1

Description : Les clients d’authentification legacy (MAPI, POP, IMAP, SMTP AUTH, Exchange ActiveSync ancienne version) ne supportent pas le MFA et l’Accès Conditionnel. Une politique CA doit bloquer explicitement les deux types : “Other clients” et “Exchange ActiveSync clients”. De nombreux audits révèlent que seul l’un des deux est bloqué, laissant un vecteur ouvert.

Vérification :

# Vérifier les deux types de clients legacy
$caPolicies = Get-MgIdentityConditionalAccessPolicy -All | Where-Object { $_.State -eq "enabled" }

# Politique pour "Other clients"
$blockOther = $caPolicies | Where-Object {
    $_.Conditions.ClientAppTypes -contains "exchangeActiveSync" -or
    $_.Conditions.ClientAppTypes -contains "other"
} | Where-Object {
    $_.GrantControls.BuiltInControls -contains "block"
}

Write-Host "Legacy auth (Other) bloqué : $(if($blockOther){'✅'}else{'❌ CRITIQUE'})"

Remédiation :

  1. Politique CA couvrant exchangeActiveSync ET other client types
  2. Vérifier que les deux sont dans la même politique ou deux politiques distinctes
  3. Exclure uniquement les comptes Break Glass

Valeur par défaut : Clients legacy non bloqués — auth sans MFA possible.


1.3.8 — Politique CA : Auth résistante au phishing pour les administrateurs (FIDO2/Passkey)

Niveau : 🟠 Élevé Référence : CISA MS.AAD.3.6v1 + M365-Assess CA-PHISHRES-001 — Automated Licence requise : Entra ID P1 + Microsoft Authenticator / FIDO2

Description : Le MFA classique (SMS, push notification) est vulnérable aux attaques de type AiTM (Adversary-in-the-Middle) et MFA fatigue. Les méthodes d’authentification résistantes au phishing (FIDO2, Windows Hello for Business, Certificate-based Auth) ne peuvent pas être interceptées car elles sont liées au domaine. La CISA exige ces méthodes pour les rôles hautement privilégiés.

Vérification :

# Vérifier une politique CA exigeant l'auth résistante au phishing pour les admins
$caPolicies = Get-MgIdentityConditionalAccessPolicy -All | Where-Object { $_.State -eq "enabled" }
$phishResistant = $caPolicies | Where-Object {
    $_.GrantControls.AuthenticationStrength -ne $null
} | Where-Object {
    $_.Conditions.Users.IncludeRoles.Count -gt 0
}
$phishResistant | Select-Object DisplayName, @{N='Strength';E={$_.GrantControls.AuthenticationStrength.DisplayName}} | Format-Table

Remédiation :

  1. Entra ID > Sécurité > Méthodes d’authentification > Niveaux d’authentification
  2. Utiliser le niveau prédéfini “Phishing-resistant MFA”
  3. Politique CA ciblant les rôles admin avec ce niveau d’authentification requis
  4. Déployer les clés FIDO2 ou Windows Hello for Business pour les admins

Valeur par défaut : MFA standard (pas résistant au phishing) — méthodes SMS/push autorisées.


1.3.9 — Politique CA : Restreindre l’accès aux réseaux conformes uniquement (Compliant Network)

Niveau : 🟠 Élevé Référence : Entra ID P1 + Global Secure Access Licence requise : Entra ID P1 + Entra Suite (pour Global Secure Access)

Description : La condition “Réseau conforme” (Compliant Network) dans l’Accès Conditionnel restreint l’accès aux ressources M365 aux seuls appareils passant par le réseau approuvé de l’organisation — qu’il soit physique (réseau d’entreprise) ou virtuel (Microsoft Entra Internet Access). Elle complète les Named Locations en ajoutant une dimension de conformité réseau : même depuis une IP d’entreprise, un appareil personnel ou compromis peut être bloqué si le trafic ne transite pas par le SWG approuvé. C’est une défense clé contre les contournements de CA via VPN partagés.

Vérification :

# Vérifier l'existence d'une politique CA avec condition de réseau conforme
$caPolicies = Get-MgIdentityConditionalAccessPolicy -All | Where-Object { $_.State -eq "enabled" }
$compliantNetwork = $caPolicies | Where-Object {
    ($_.Conditions | ConvertTo-Json -Depth 5) -match "compliantNetwork|networkType"
}
if ($compliantNetwork) {
    Write-Host "✅ Politique CA avec Compliant Network trouvée : $($compliantNetwork.DisplayName)" -ForegroundColor Green
} else {
    Write-Host "⚠️  Aucune politique CA avec condition réseau conforme" -ForegroundColor Yellow
}
# Portail : Entra ID > CA > [Politique] > Conditions > Réseaux > Réseau conforme

Remédiation :

  1. Prérequis : déployer Microsoft Entra Internet Access (Global Secure Access)
  2. Créer politique CA : Conditions > Réseaux > Inclure “Réseau conforme”
  3. Applications cloud : Exchange Online, SharePoint Online, Teams
  4. Accorder : Accorder l’accès (le réseau conforme est lui-même le contrôle)
  5. Démarrer en mode “Rapport seul” avant d’activer pour mesurer l’impact

Valeur par défaut : Aucune condition réseau conforme — accès depuis n’importe quel réseau possible.


1.3b Paramètres Utilisateurs Entra ID Supplémentaires


1.3b.1 — Désactiver le MFA par utilisateur (Per-User MFA legacy)

Niveau : 🔴 Critique Référence CIS : 5.1.2.1 (L1) — Automated Profile : E3 Level 1

Description : La console MFA “par utilisateur” (legacy, accessible via https://account.activedirectory.windowsazure.com/usermanagement/mfasettings.aspx) est l’ancienne méthode de gestion du MFA, distincte de l’Accès Conditionnel. Si des utilisateurs ont leur MFA géré via cet ancien système ET via l’Accès Conditionnel, des conflits peuvent survenir. La CIS exige que le MFA per-user legacy soit désactivé pour tous les utilisateurs, le MFA étant exclusivement géré via l’Accès Conditionnel.

Vérification :

# Vérifier les utilisateurs avec per-user MFA encore activé (Enforced ou Enabled)
$uri = "https://graph.microsoft.com/beta/users?`$select=userPrincipalName,strongAuthenticationRequirements"
$response = Invoke-MgGraphRequest -Uri $uri -Method GET
$response.value | Where-Object {
    $_.strongAuthenticationRequirements.state -ne $null -and
    $_.strongAuthenticationRequirements.state -ne "disabled"
} | Select-Object userPrincipalName, @{N='MFA State';E={$_.strongAuthenticationRequirements.state}}

Remédiation :

  1. Accéder à l’ancienne console MFA : https://account.activedirectory.windowsazure.com/usermanagement/mfasettings.aspx
  2. Sélectionner tous les utilisateurs > Désactiver le MFA per-user
  3. Ou via PowerShell (module MSOnline legacy) :
# Via l'API beta
$allUsers = Get-MgUser -All -Property UserPrincipalName,StrongAuthenticationRequirements
$allUsers | Where-Object {$_.StrongAuthenticationRequirements} | ForEach-Object {
    # Utiliser l'ancienne interface ou l'API beta pour désactiver
}
  1. S’assurer qu’une politique CA est en place pour exiger le MFA avant de désactiver le per-user MFA

Impact : Si le per-user MFA est désactivé SANS politique CA correspondante, les utilisateurs n’auront plus de MFA. Toujours vérifier la politique CA avant.


1.3b.2 — Restreindre l’accès au portail Entra ID Admin Center aux administrateurs

Niveau : 🟠 Élevé Référence CIS : 5.1.2.4 (L1) — Manual Profile : E3 Level 1

Description : Par défaut, les utilisateurs standards peuvent accéder à certaines fonctionnalités du portail Entra ID (https://entra.microsoft.com) et y consulter des informations sur les utilisateurs, groupes et applications. Restreindre cet accès aux administrateurs limite la reconnaissance interne possible depuis un compte compromis.

Vérification :

  • Entra ID > Utilisateurs > Paramètres utilisateur > “Restreindre l’accès au portail d’administration Entra ID”

Remédiation :

  1. Entra ID > Utilisateurs > Paramètres utilisateur
  2. “Restreindre l’accès au portail d’administration Microsoft Entra” = Oui
  3. Nota : Ce paramètre ne restreint pas l’accès via PowerShell ou API — utiliser des politiques CA pour cela

Valeur par défaut : Non restreint — tous les utilisateurs peuvent accéder au portail Entra.


Note : Les contrôles 1.3b.3 (Rester connecté), 1.3b.4 (LinkedIn), 1.3b.5 (Groupe dynamique guests), 1.3b.6 (Groupes de sécurité) sont consolidés en Section 1.9 — contrôles 1.9.6, 1.9.7, 1.9.1, 1.9.2.

1.3c Gestion des Appareils Entra ID


1.3c.1 — Ne pas ajouter le Global Administrator comme administrateur local lors de la jonction Entra

Note : Ce contrôle est consolidé en Section 12 — contrôle 12.1.x (Gestion Administrative des appareils). Référence CIS : 5.1.4.3 (L1).


1.3c.2 — Activer la solution de mot de passe administrateur local (LAPS)

Niveau : 🟠 Élevé Référence CIS : 5.1.4.5 (L1) — Automated Profile : E3 Level 1

Description : LAPS (Local Administrator Password Solution) gère automatiquement les mots de passe des comptes administrateurs locaux Windows. Sans LAPS, tous les postes de travail peuvent avoir le même mot de passe admin local — si un attaquant l’obtient, il peut se déplacer latéralement sur l’ensemble du parc. LAPS génère un mot de passe unique par machine, stocké dans Entra ID, et le renouvelle régulièrement.

Vérification :

  • Entra ID > Appareils > Tous les appareils > Sélectionner un appareil > Mot de passe administrateur local
  • PowerShell :
# Vérifier si LAPS est activé dans Entra ID
$deviceSettings = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/deviceRegistrationPolicy" -Method GET
$deviceSettings.localAdminPassword.isEnabled

Remédiation :

  1. Entra ID > Appareils > Paramètres d’appareil
  2. Activer “Gestion des mots de passe d’administrateur local”
  3. Configurer la stratégie de rotation : fréquence recommandée = après chaque utilisation ou 30 jours
  4. Via Intune : déployer une politique LAPS pour tous les appareils Windows
  5. Restreindre qui peut lire les mots de passe LAPS (rôle “Local Administrator Password Reader”)

Valeur par défaut : LAPS non configuré par défaut.


1.3c.3 — Restreindre la récupération des clés BitLocker par les utilisateurs

Niveau : 🟡 Moyen Référence CIS : 5.1.4.6 (L2) — Automated Profile : E3 Level 2

Description : Si les utilisateurs peuvent récupérer eux-mêmes leurs clés BitLocker depuis Entra ID, un attaquant ayant compromis le compte M365 d’un utilisateur peut déchiffrer le disque dur de son poste de travail. Les clés BitLocker ne doivent être récupérables que par les administrateurs IT ou le helpdesk.

Vérification :

  • Entra ID > Appareils > Paramètres d’appareil > “Les utilisateurs peuvent récupérer la clé BitLocker”

Remédiation :

  1. Entra ID > Appareils > Paramètres d’appareil
  2. “Les utilisateurs peuvent récupérer la clé BitLocker pour leurs appareils” = Non
  3. Définir un processus helpdesk pour la récupération des clés BitLocker sur demande justifiée

Valeur par défaut : Les utilisateurs peuvent récupérer leurs propres clés BitLocker.


1.3c.4 — Limiter le nombre maximum d’appareils par utilisateur

Niveau : 🟡 Moyen Référence CIS : 5.1.4.2 (L1) — Automated Profile : E3 Level 1

Description : Limiter le nombre d’appareils qu’un utilisateur peut enregistrer dans Entra ID réduit la surface d’attaque et limite les abus (enregistrement massif d’appareils malveillants pour obtenir des tokens d’accès).

Vérification :

  • Entra ID > Appareils > Paramètres d’appareil > “Nombre maximal d’appareils par utilisateur”
(Get-MgPolicyDeviceRegistrationPolicy).UserDeviceQuota

Remédiation :

  1. Entra ID > Appareils > Paramètres d’appareil
  2. Nombre maximal d’appareils par utilisateur : 5 (ou selon politique interne, CIS recommande une valeur limitée)
  3. Pour les utilisateurs ayant besoin de plus d’appareils : créer un groupe d’exception documenté

Valeur par défaut : Illimité.


1.3d Gestion Hybride


1.3d.1 — Activer la synchronisation du hachage de mot de passe (PHS) pour les déploiements hybrides

Niveau : 🟠 Élevé Référence CIS : 5.1.8.1 (L1) — Manual Profile : E3 Level 1

Description : La synchronisation du hachage de mot de passe (Password Hash Sync - PHS) entre l’AD on-premises et Entra ID permet plusieurs bénéfices sécurité : 1) détection des credentials compromis (Microsoft Identity Protection peut vérifier les hachages contre des bases de données de compromission connues), 2) continuité en cas de panne AD FS, 3) protection contre les attaques de pulvérisation de mots de passe. Sans PHS, Entra ID ne peut pas détecter les compromissions de mots de passe AD.

Vérification :

  • Entra Connect / Entra Cloud Sync > Vérifier que la synchronisation du hachage est activée
  • PowerShell (sur le serveur Entra Connect) :
Get-ADSyncScheduler | Select-Object SyncCycleEnabled
  • Dans Entra ID : vérifier sous “Méthodes d’authentification” si le “Leaked Credentials” detection est actif (nécessite PHS)

Remédiation :

  1. Sur le serveur Azure AD Connect : ouvrir l’assistant de configuration
  2. Tâches supplémentaires > Personnaliser les options de synchronisation
  3. Activer “Synchronisation du hachage de mot de passe”
  4. Pour Entra Cloud Sync : vérifier dans les paramètres du connecteur

Valeur par défaut : Dépend de la configuration initiale choisie lors de l’installation d’Entra Connect.


1.4 Accès Conditionnel Basé sur le Risque (Identity Protection)


1.4.1 — Bloquer les utilisateurs détectés comme à haut risque

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.2.1v1 Licence requise : Entra ID P2 MITRE ATT&CK : T1078 (Valid Accounts) · T1586 (Compromise Accounts) · T1110.004 (Brute Force: Credential Stuffing)

Description : Entra ID Identity Protection calcule un score de risque pour chaque utilisateur basé sur des signaux d’intelligence des menaces (Microsoft détecte des milliards de connexions et identifie des patterns d’attaque). Un utilisateur “haut risque” a probablement ses credentials dans une base de données compromise ou a montré des comportements anormaux. Ces comptes doivent être bloqués immédiatement jusqu’à remédiation sécurisée.

Vérification :

  • Entra ID > Protection > Accès Conditionnel > Vérifier l’existence d’une politique de risque utilisateur élevé
  • PowerShell :
Get-MgIdentityConditionalAccessPolicy | Where-Object {
    $_.Conditions.UserRiskLevels -contains "high"
} | Select-Object DisplayName, State

Remédiation :

  1. Entra ID > Protection > Accès Conditionnel > Créer une politique
  2. Conditions > Risque de l’utilisateur → Élevé
  3. Accorder → Bloquer l’accès
  4. Alternativement : Exiger MFA + Changement de mot de passe sécurisé (si vous souhaitez permettre une auto-remédiation)
  5. Configurer les alertes pour notifier le SOC lors de la détection d’utilisateurs à haut risque (MS.AAD.2.2v1)

1.4.2 — Bloquer les connexions détectées comme à haut risque

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.2.3v1 Licence requise : Entra ID P2

Description : Distinct du risque utilisateur, le risque de connexion évalue chaque tentative de connexion individuellement : voyage impossible (connexion depuis Paris puis New York en 10 minutes), adresses IP anonymisées (Tor, VPN connus malveillants), pulvérisation de mots de passe, etc. Ces connexions doivent être bloquées même si les credentials sont corrects.

Vérification :

  • Entra ID > Protection > Accès Conditionnel > Vérifier l’existence d’une politique de risque de connexion élevé
  • Entra ID > Protection > Rapport sur les connexions risquées

Remédiation :

  1. Créer une politique CA : Conditions > Risque de connexion → Élevé
  2. Accorder → Bloquer l’accès (ou Exiger MFA résistante au phishing)
  3. Pour le risque moyen : Exiger MFA comme étape d’auto-remédiation
  4. Réviser hebdomadairement le tableau de bord des connexions risquées

1.4b Politique CA Supplémentaires (CIS v6.0.1)


1.4b.1 — Bloquer les sessions navigateur persistantes pour les administrateurs

Niveau : 🟠 Élevé Référence CIS : 5.2.2.4 (L1) — Automated Profile : E3 Level 1

Description : Les sessions navigateur persistantes (cookies de session à longue durée de vie) permettent de rester authentifié même après la fermeture du navigateur. Pour les comptes administrateurs, cette persistance est particulièrement dangereuse : un token volé ou un cookie exfiltré reste valide indéfiniment. Les sessions admin doivent être non-persistantes et soumises à une fréquence de reconnexion stricte.

Vérification :

# Vérifier les politiques CA avec paramètres de session pour les admins
Get-MgIdentityConditionalAccessPolicy | Where-Object {
    $_.SessionControls.PersistentBrowser -ne $null
} | Select-Object DisplayName, @{N='PersistentBrowser';E={$_.SessionControls.PersistentBrowser.Mode}}

Remédiation :

  1. Créer une politique CA ciblant les utilisateurs avec rôles d’administration
  2. Session > Session de navigateur persistante : Jamais persistante
  3. Session > Fréquence de connexion : 1 heure (ou à chaque fois pour les rôles les plus sensibles)
  4. Cette politique doit s’appliquer même sur des appareils conformes pour les comptes admin

1.4b.2 — Bloquer le risque de connexion moyen ET élevé (pas seulement élevé)

Niveau : 🟠 Élevé Référence CIS : 5.2.2.8 (L2) — Automated Profile : E3 Level 2 Licence requise : Entra ID P2

Description : Notre checklist bloque uniquement le risque de connexion ÉLEVÉ. Le CIS v6.0.1 recommande également de bloquer ou d’exiger une action pour le risque MOYEN. Un risque moyen peut indiquer des activités suspectes comme une connexion depuis un pays inhabituel ou une anomalie de comportement qui mérite investigation.

Vérification :

Get-MgIdentityConditionalAccessPolicy | Where-Object {
    $_.Conditions.SignInRiskLevels -contains "medium"
} | Select-Object DisplayName, State

Remédiation :

  1. Modifier la politique CA de risque de connexion existante
  2. Ajouter “Moyen” aux niveaux de risque couverts
  3. Pour le risque moyen : Exiger MFA (auto-remédiation) plutôt que bloquer directement
  4. Pour le risque élevé : maintenir le blocage complet

1.4b.3 — Exiger une fréquence de connexion “À chaque fois” pour l’inscription Intune

Niveau : 🟡 Moyen Référence CIS : 5.2.2.11 (L1) — Automated Profile : E3 Level 1

Description : Lors de l’inscription d’un appareil dans Intune, l’utilisateur doit se ré-authentifier systématiquement. Cela évite qu’un attaquant avec un token de session volé puisse inscrire un appareil malveillant dans la gestion Intune de l’organisation, ce qui lui donnerait accès aux configurations et politiques déployées.

Vérification :

  • Vérifier l’existence d’une politique CA ciblant l’application “Microsoft Intune Enrollment”
  • Session > Fréquence de connexion : “À chaque fois”

Remédiation :

  1. Créer politique CA : Applications cloud → Microsoft Intune Enrollment
  2. Session > Fréquence de connexion = “À chaque fois” (Every time)
  3. Cette politique force une authentification fraîche à chaque tentative d’enrôlement

1.5 Gestion des Applications et Consentements


1.5.1 — Restreindre l’enregistrement d’applications aux administrateurs uniquement

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.AAD.5.1v1

Description : Par défaut, n’importe quel utilisateur peut enregistrer des applications dans Entra ID. Des applications malveillantes enregistrées par des utilisateurs compromis peuvent obtenir des tokens OAuth persistants avec des permissions larges sur les données de l’organisation.

Vérification :

(Get-MgPolicyAuthorizationPolicy).DefaultUserRolePermissions.AllowedToCreateApps

Doit retourner : False

Remédiation :

$permObj = (Get-MgPolicyAuthorizationPolicy).DefaultUserRolePermissions
$permObj.AllowedToCreateApps = $false
Update-MgPolicyAuthorizationPolicy -DefaultUserRolePermissions $permObj

1.5.2 — Restreindre le consentement aux applications tierces aux administrateurs uniquement

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.5.2v1 MITRE ATT&CK : T1528 (Steal Application Access Token) · T1550.001 (Use Alternate Auth Material: Application Access Token) · T1071.001 (Web Protocols)

Description : Le consentement OAuth des utilisateurs est exploité dans les attaques de type “Consent Phishing” (ou OAuth Phishing) : un attaquant crée une application malveillante qui demande des permissions sur les données M365, envoie un lien à la victime, et obtient un accès persistant sans mot de passe ni MFA une fois le consentement accordé.

Vérification :

  • Entra ID > Applications d’entreprise > Paramètres utilisateur > Consentement utilisateur pour les applications
  • Doit être configuré sur : “Ne pas autoriser le consentement utilisateur”

Remédiation :

  1. Entra ID > Applications d’entreprise > Consentement et permissions
  2. Consentement utilisateur pour les applications : “Ne pas autoriser le consentement utilisateur”
  3. Activer le workflow d’approbation administrateur (MS.AAD.5.3v1) pour que les utilisateurs puissent demander l’autorisation
  4. Désigner des réviseurs de consentement (RSSI, équipe IT)

1.5.3 — Activer le workflow de consentement administrateur

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.AAD.5.3v1

Description : Une fois le consentement utilisateur désactivé, les utilisateurs légitimes qui ont besoin d’une application tierce doivent pouvoir soumettre une demande d’approbation. Sans ce workflow, ils contournent les politiques en cherchant des alternatives non sécurisées.

Vérification :

  • Entra ID > Applications d’entreprise > Consentement et permissions > Workflow d’approbation administrateur

Remédiation :

  1. Entra ID > Applications d’entreprise > Paramètres utilisateur > Workflow d’approbation administrateur
  2. Activer “Les utilisateurs peuvent demander le consentement administrateur pour les applications auxquelles ils ne peuvent pas accorder leur consentement”
  3. Ajouter des réviseurs de consentement
  4. Délai d’expiration des demandes : 30 jours

1.5.4 — Exiger des Éditeurs Vérifiés (Verified Publishers) pour les applications tierces

Niveau : 🟠 Élevé Référence : Entra ID — OAuth Governance Licence requise : Entra ID P1

Description : Les applications OAuth tierces d’éditeurs non vérifiés sont la source principale des attaques de Consent Phishing : n’importe qui peut créer une application Azure AD demandant des permissions M365, sans aucune validation d’identité. Les éditeurs vérifiés (Verified Publishers) ont prouvé leur identité via Microsoft Partner Network. Restreindre le consentement ou la visibilité aux seules applications d’éditeurs vérifiés réduit drastiquement la surface des applications malveillantes.

Vérification :

# Lister les applications tierces consentées sans éditeur vérifié
$sps = Get-MgServicePrincipal -All | Where-Object {
    $_.AppOwnerOrganizationId -ne (Get-MgContext).TenantId -and
    $_.VerifiedPublisher.DisplayName -eq $null
}
Write-Host "Applications tierces sans éditeur vérifié : $($sps.Count)"
$sps | Select-Object DisplayName, AppId | Format-Table

Remédiation :

  1. Entra ID > Applications d’entreprise > Consentement et permissions > Paramètres de consentement utilisateur
  2. “Consentement pour les applications d’éditeurs vérifiés” : activer la restriction
  3. Pour les applications existantes sans éditeur vérifié : évaluer le besoin et révoquer les consentements non justifiés
  4. Entra ID > Applications d’entreprise > filtrer par “Non vérifié” et revoir chaque application
  5. Former les utilisateurs à identifier le badge “Éditeur vérifié” avant de consentir

Valeur par défaut : Aucune restriction sur le statut d’éditeur — applications vérifiées et non vérifiées traitées identiquement.


1.5b Méthodes d’Authentification Supplémentaires (CIS v6.0.1)


1.5b.1 — Activer le MFA préféré par le système (System-Preferred MFA)

Niveau : 🟠 Élevé Référence CIS : 5.2.3.6 (L1) — Automated Profile : E3 Level 1

Description : La fonctionnalité “System-Preferred MFA” fait en sorte qu’Entra ID présente automatiquement la méthode MFA la plus sécurisée disponible pour l’utilisateur, plutôt que la méthode qu’il a définie comme préférée (qui pourrait être le SMS). Cela garantit que si un utilisateur a à la fois l’Authenticator App et le SMS enregistrés, Entra ID lui proposera toujours l’Authenticator App en premier.

Vérification :

Get-MgPolicyAuthenticationMethodPolicyAuthenticationMethodConfiguration -AuthenticationMethodConfigurationId "MicrosoftAuthenticator" |
    Select-Object -ExpandProperty AdditionalProperties |
    ConvertTo-Json
# Chercher "isSoftwareOathEnabled" et les paramètres de system-preferred

Remédiation :

  1. Entra ID > Protection > Méthodes d’authentification > Stratégies > Paramètres
  2. Activer “Méthode d’authentification préférée du système”
  3. Cela s’applique automatiquement à tous les utilisateurs enrôlés dans plusieurs méthodes

1.5b.2 — S’assurer que tous les utilisateurs membres sont capables MFA (MFA Capable)

Niveau : 🟠 Élevé Référence CIS : 5.2.3.4 (L1) — Automated Profile : E3 Level 1

Description : Un utilisateur “MFA Capable” a enregistré au moins une méthode d’authentification forte dans Entra ID. Un utilisateur non enrôlé dans une méthode MFA ne peut pas satisfaire les exigences MFA des politiques CA, ce qui peut bloquer son accès ou forcer un contournement. L’objectif est 100% des utilisateurs membres enrôlés dans MFA.

Vérification :

# Rapport des utilisateurs non enrôlés dans MFA
Get-MgReportAuthenticationMethodUserRegistrationDetail |
    Where-Object {$_.IsMfaRegistered -eq $false -and $_.UserType -eq "member"} |
    Select-Object UserPrincipalName, UserDisplayName, IsMfaRegistered, MethodsRegistered

Remédiation :

  1. Activer la campagne d’enrôlement MFA dans Entra ID
  2. Entra ID > Protection > Méthodes d’authentification > Campagne d’enrôlement
  3. Définir un délai de grâce de 14 jours maximum
  4. Suivre le taux d’enrôlement dans les rapports Entra ID
  5. Pour les utilisateurs récalcitrants : intervention helpdesk individuelle

1.5b.3 — Activer la protection par mot de passe pour l’Active Directory on-premises

Niveau : 🟠 Élevé Référence CIS : 5.2.3.3 (L1) — Automated Profile : E3 Level 1

Description : La protection par mot de passe Entra ID peut être étendue à l’Active Directory on-premises. Les mêmes listes de mots de passe interdits (liste globale Microsoft + liste personnalisée de l’organisation) sont appliquées lors des changements de mot de passe dans l’AD local. Sans cette extension, les mots de passe faibles peuvent exister dans l’AD on-premises même si la protection cloud est active.

Vérification :

  • Vérifier si l’agent de protection par mot de passe Azure AD est installé sur les Domain Controllers
# Sur les DCs - vérifier le service
Get-Service -Name "AzureADPasswordProtectionDCAgent" -ErrorAction SilentlyContinue

Remédiation :

  1. Télécharger l’agent de protection par mot de passe Azure AD
  2. Installer sur tous les Domain Controllers
  3. Installer le service proxy sur les serveurs membres (pour la communication avec Entra ID)
  4. Entra ID > Protection > Méthodes d’authentification > Protection par mot de passe
  5. Passer en mode “Appliqué” après la période d’audit

1.5b.4 — Configurer la réinitialisation de mot de passe en libre-service (SSPR) pour tous les utilisateurs

Niveau : 🟠 Élevé Référence CIS : 5.2.4.1 (L1) — Manual Profile : E3 Level 1

Description : Le SSPR (Self-Service Password Reset) permet aux utilisateurs de réinitialiser leur mot de passe eux-mêmes sans passer par le helpdesk. Bien que cela soit une mesure de commodité, le CIS recommande qu’il soit activé pour TOUS les utilisateurs car un SSPR non disponible peut pousser les utilisateurs à utiliser des mots de passe simples dont ils se souviennent facilement (pour éviter les appels au helpdesk). Le SSPR correctement sécurisé (avec vérification d’identité à 2 méthodes) est aussi sécurisé que le helpdesk.

Vérification :

  • Entra ID > Protection > Réinitialisation du mot de passe > Propriétés
  • Vérifier que “Réinitialisation de mot de passe en libre-service activée” = Tout

Remédiation :

  1. Entra ID > Protection > Réinitialisation du mot de passe > Propriétés
  2. Activer pour : Tout (tous les utilisateurs)
  3. Configuration recommandée : 2 méthodes requises pour la réinitialisation
  4. Méthodes autorisées : Application mobile / Notification, Code d’application mobile, Email, Téléphone
  5. Désactiver : Questions de sécurité (facilement devinables via OSINT)
  6. Activer la réécriture des mots de passe vers l’AD on-premises (si environnement hybride)

1.5c Sécurité Avancée des Applications et Service Principals


1.5c.1 — Auditer les permissions dangereuses Midnight Blizzard (AppRoleAssignment + RoleManagement)

Niveau : 🔴 Critique Référence : MSRC Advisory Jan 2024 — Automated Licence requise : Entra ID P1 MITRE ATT&CK : T1098.003 (Account Manipulation: Add Cloud Credentials) · T1550.001 (Application Access Token) · T1528 (Steal Application Access Token)

Description : Les permissions AppRoleAssignment.ReadWrite.All et RoleManagement.ReadWrite.Directory permettent à une application de s’attribuer elle-même n’importe quel rôle ou permission dans le tenant, y compris Global Administrator. C’est le vecteur exact utilisé par Midnight Blizzard (SVR russe) en janvier 2024 pour compromettre Microsoft. Toute application tierce ou interne disposant de ces permissions représente un risque critique immédiat.

Vérification :

# Détecter les apps avec permissions dangereuses
$dangerousPerms = @(
    "AppRoleAssignment.ReadWrite.All",
    "RoleManagement.ReadWrite.Directory",
    "Application.ReadWrite.All",
    "Directory.ReadWrite.All"
)
$sps = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/servicePrincipals?`$expand=appRoleAssignments" -Method GET
foreach ($sp in $sps.value) {
    $assignments = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$($sp.id)/appRoleAssignedTo" -Method GET
    # Filtrer par permissions dangereuses
    Write-Host "$($sp.displayName) — $($assignments.value.Count) assignments"
}
# Approche simplifiée via Graph Explorer :
# GET /v1.0/servicePrincipals?$filter=appRoles/any(r:r/value eq 'AppRoleAssignment.ReadWrite.All')

Remédiation :

  1. Entra ID > Applications d’entreprise > Toutes les applications > Filtrer par permission
  2. Identifier toutes les apps avec AppRoleAssignment.ReadWrite.All ou RoleManagement.ReadWrite.Directory
  3. Pour chaque app : évaluer la légitimité du besoin — supprimer si non justifié
  4. Remplacer par des permissions à granularité fine (ex: RoleAssignmentSchedule.ReadWrite.Directory)
  5. Activer les alertes Defender pour Identité sur ces permissions

Valeur par défaut : Aucune restriction par défaut — toute app peut demander ces permissions si un admin consent.


1.5c.2 — Auditer les rôles Partner Tier1/Tier2 Support (invisibles dans l’interface Entra)

Niveau : 🔴 Critique Référence : Microsoft Partner Support Roles — Manual Licence requise : Entra ID Free

Description : Les rôles Partner Tier1 et Tier2 Support sont assignés par des partenaires Microsoft (revendeurs, MSP) et donnent accès au tenant avec des privilèges élevés, parfois équivalents au Global Administrator. Ces rôles sont invisibles dans l’interface Entra ID standard et ne sont pas listés dans PIM. Un partenaire non fiable ou compromis peut utiliser ces rôles pour prendre le contrôle complet du tenant sans laisser de trace dans les logs habituels.

Vérification :

# Détecter les rôles Partner cachés
$partnerRoles = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/directoryRoles" -Method GET
$partnerRoles.value | Where-Object {
    $_.displayName -like "*Partner*" -or $_.displayName -like "*Tier1*" -or $_.displayName -like "*Tier2*"
} | ForEach-Object {
    $members = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/directoryRoles/$($_.id)/members" -Method GET
    [PSCustomObject]@{ Role = $_.displayName; Members = ($members.value | Select-Object -ExpandProperty displayName) -join ", " }
} | Format-Table

# Vérifier aussi via la relation delegatedAdminRelationships
Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/tenantRelationships/delegatedAdminRelationships" -Method GET |
    ConvertTo-Json -Depth 3

Remédiation :

  1. Microsoft 365 Admin Center > Paramètres > Relations partenaires
  2. Identifier tous les partenaires avec accès délégué (DAP/GDAP)
  3. Supprimer les relations DAP au profit de GDAP (Granular Delegated Admin Privileges)
  4. Restreindre les rôles GDAP au strict nécessaire (pas de Global Admin)
  5. Activer les notifications d’accès partenaires

Valeur par défaut : Les rôles Partner sont invisibles dans Entra UI et non audités par défaut.


1.5c.3 — Applications avec credentials certificat (bypass potentiel MFA/CA)

Niveau : 🔴 Critique Référence : CIS 5.2.6.x — Automated Licence requise : Entra ID P1

Description : Les applications utilisant des credentials de type certificat ou secret client peuvent s’authentifier directement via OAuth 2.0 sans passer par les politiques de Conditional Access ou le MFA. Si ces applications ont des permissions élevées (Mail.Read, User.ReadWrite.All, etc.), un attaquant qui obtient le certificat ou le secret peut accéder aux données M365 en contournant toutes les protections d’identité. C’est particulièrement critique pour les Service Principals avec des rôles d’annuaire permanents.

Vérification :

# Applications avec credentials certificat ET rôles d'annuaire permanents
$apps = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/applications?`$select=displayName,appId,keyCredentials,passwordCredentials" -Method GET
$apps.value | Where-Object { $_.keyCredentials.Count -gt 0 } | ForEach-Object {
    $roles = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/servicePrincipals?`$filter=appId eq '$($_.appId)'&`$expand=memberOf" -Method GET
    [PSCustomObject]@{
        App = $_.displayName
        KeyCreds = $_.keyCredentials.Count
        DirectoryRoles = ($roles.value[0].memberOf.value | Where-Object { $_.'@odata.type' -eq '#microsoft.graph.directoryRole' } | Select-Object -ExpandProperty displayName) -join ", "
    }
} | Where-Object { $_.DirectoryRoles } | Format-Table

# Maester MT.1057 : apps encore avec secrets (à migrer vers workload identity)
$appsWithSecrets = Get-MgApplication -All | Where-Object { $_.PasswordCredentials.Count -gt 0 }
$appsWithSecrets | Select-Object DisplayName, @{N="SecretExpiry"; E={($_.PasswordCredentials | Sort-Object EndDateTime | Select-Object -Last 1).EndDateTime}} | Format-Table

Remédiation :

  1. Migrer vers les Workload Identity Federations (pas de secret/certificat stocké)
  2. Pour les apps devant conserver des credentials : rotation régulière (< 90 jours)
  3. Supprimer les credentials expirés ou inutilisés
  4. Configurer des alertes sur l’expiration via Azure Monitor ou scripts automatisés
  5. Restreindre les permissions de ces apps au strict minimum nécessaire
  6. Activer App Instance Property Lock pour empêcher la modification des credentials

Valeur par défaut : Pas de restriction sur le type de credential — secrets et certificats autorisés par défaut.


1.5c.4 — Managed Identities avec permissions Graph dangereuses

Niveau : 🟠 Élevé Référence : M365-Assess ENTRA-ENTAPP-008/009 — Automated Licence requise : Entra ID P1

Description : Les Managed Identities (identités gérées Azure) sont une excellente pratique pour éviter les secrets, mais si elles se voient attribuer des permissions Graph dangereuses (Mail.Send, User.ReadWrite.All, Files.ReadWrite.All) ou des rôles d’annuaire, elles deviennent un vecteur d’escalade de privilèges depuis Azure vers M365. Une VM Azure ou un Function App compromis pourrait exfiltrer tous les emails ou modifier des comptes utilisateurs.

Vérification :

# Managed Identities avec permissions Graph élevées
$managedIds = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/servicePrincipals?`$filter=servicePrincipalType eq 'ManagedIdentity'" -Method GET
foreach ($mi in $managedIds.value) {
    $appRoles = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$($mi.id)/appRoleAssignments" -Method GET
    if ($appRoles.value.Count -gt 0) {
        Write-Host "⚠️ $($mi.displayName)" -ForegroundColor Yellow
        $appRoles.value | ForEach-Object { Write-Host "  → $($_.principalDisplayName) : $($_.resourceDisplayName)" }
    }
}

Remédiation :

  1. Inventorier toutes les Managed Identities et leurs permissions Graph
  2. Supprimer les permissions non justifiées (Mail.Send, Files.ReadWrite.All, User.ReadWrite.All)
  3. Appliquer le principe du moindre privilège — préférer des permissions de lecture
  4. Documenter chaque Managed Identity et son usage légitime
  5. Revue trimestrielle des permissions des Managed Identities

Valeur par défaut : Aucune permission assignée par défaut — mais les admins peuvent en attribuer sans restriction.


1.5c.5 — App registrations : propriétaires sans MFA enregistré

Niveau : 🟠 Élevé Référence : Maester MT.1063 — Automated Licence requise : Entra ID P1

Description : Les propriétaires d’application (App Registration Owners) peuvent modifier les credentials, les permissions et les paramètres d’une application. Si un propriétaire n’a pas de MFA enregistré, son compte peut être compromis via phishing ou credential stuffing, permettant à l’attaquant de modifier l’application pour obtenir des accès supplémentaires.

Vérification :

# App owners sans MFA
$apps = Get-MgApplication -All
foreach ($app in $apps) {
    $owners = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/applications/$($app.Id)/owners" -Method GET
    foreach ($owner in $owners.value) {
        $authMethods = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/users/$($owner.id)/authentication/methods" -Method GET -ErrorAction SilentlyContinue
        $hasMFA = $authMethods.value.Count -gt 1  # Plus que juste le mot de passe
        if (-not $hasMFA) {
            Write-Host "⚠️ App: $($app.DisplayName) — Owner without MFA: $($owner.displayName)" -ForegroundColor Red
        }
    }
}

Remédiation :

  1. Identifier tous les propriétaires d’app registrations sans MFA
  2. Forcer l’enregistrement MFA pour ces utilisateurs
  3. Supprimer les propriétaires inutiles (principe du moindre privilège)
  4. Préférer des groupes de sécurité comme propriétaires plutôt que des individus

Valeur par défaut : Aucune vérification MFA pour les propriétaires d’applications.


1.5c.6 — Workload Identities dormantes — Service Principals inactifs depuis > 90 jours

Niveau : 🟠 Élevé Référence : CIS 5.1.x + M365-Assess ENTRA-ENTAPP — Automated Licence requise : Entra ID P1 (Workload Identities Premium pour surveillance continue)

Description : Les Service Principals (identités de workload) inactifs depuis plus de 90 jours représentent un risque de sécurité : des credentials non révoqués (secrets/certificats) sur des identités abandonnées peuvent être exfiltrés et exploités sans que personne ne le détecte. Ces identités “zombies” sont particulièrement dangereuses car elles disposent souvent de permissions Graph élevées héritées de leur configuration initiale.

Vérification :

# Service Principals avec signInActivity > 90 jours (Workload Identities Premium requis)
$cutoff = (Get-Date).AddDays(-90)
$sps = Get-MgServicePrincipal -All -Property "displayName,appId,signInActivity,keyCredentials,passwordCredentials"
$dormant = $sps | Where-Object {
    $_.SignInActivity.LastSignInDateTime -lt $cutoff -or
    $_.SignInActivity.LastSignInDateTime -eq $null
} | Select-Object DisplayName, AppId, @{N="LastSignIn";E={$_.SignInActivity.LastSignInDateTime}},
    @{N="HasSecrets";E={$_.PasswordCredentials.Count -gt 0}},
    @{N="HasCerts";E={$_.KeyCredentials.Count -gt 0}}
$dormant | Format-Table
# Résultat attendu : Aucun SP actif avec credentials valides et SignIn > 90j

Remédiation :

  1. Pour chaque SP dormant identifié : vérifier l’utilité avec l’équipe propriétaire
  2. Supprimer les credentials (secrets/certificats) des SP non utilisés
  3. Désactiver les SP non utilisés (Update-MgServicePrincipal -ServicePrincipalId <Id> -AccountEnabled:$false)
  4. Supprimer complètement les SP inutiles et leurs app registrations associées
  5. Mettre en place une revue trimestrielle des workload identities via Access Reviews Entra ID
  6. Activer Workload Identities Premium pour la détection continue des comportements anormaux

Valeur par défaut : Aucune détection automatique des SP dormants — les identités inactives conservent leurs permissions et credentials indéfiniment.


1.6 Journalisation et SIEM


1.6.1 — Envoyer les journaux de sécurité Entra ID vers un SIEM

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.4.1v1 Référence : OMB M-21-31

Description : Les journaux Entra ID (connexions, audit, provisionning) doivent être transmis en temps réel vers un SIEM ou un SOC pour la corrélation, la détection et la réponse aux incidents. La rétention native M365 (90 jours standard) est insuffisante pour les investigations d’incidents découverts tarditement. Le NIST et l’OMB M-21-31 exigent 12 mois de rétention active + 18 mois de stockage froid.

Vérification :

  • Entra ID > Journaux de diagnostic (Diagnostic Settings)
  • Vérifier qu’une destination est configurée (Log Analytics, Event Hub, Storage Account, SIEM partenaire)

Remédiation :

  1. Entra ID > Surveillance > Paramètres de diagnostic > Ajouter un paramètre de diagnostic
  2. Sélectionner les journaux : SignInLogs, AuditLogs, NonInteractiveUserSignInLogs, ServicePrincipalSignInLogs, ManagedIdentitySignInLogs, RiskyUsers, UserRiskEvents
  3. Destination : Log Analytics Workspace (Microsoft Sentinel recommandé) ou Event Hub vers SIEM tiers
  4. Durée de rétention Log Analytics : 90 jours minimum, archive 18 mois
  5. Pour conformité OMB M-21-31 : 12 mois actif + 18 mois stockage froid

1.7 Gestion des Invités (Guest Access)


1.7.1 — Restreindre l’accès des invités aux objets de l’annuaire

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.AAD.8.1v1

Description : Par défaut, les utilisateurs invités peuvent énumérer les objets de l’annuaire Entra ID (utilisateurs, groupes, applications). Cette capacité peut être utilisée pour de la reconnaissance interne par des comptes invités malveillants ou compromis.

Vérification :

  • Entra ID > Identités externes > Paramètres de collaboration externe
  • Vérifier les permissions des utilisateurs invités

Remédiation :

  1. Entra ID > Identités externes > Paramètres de collaboration externe
  2. Autorisations des utilisateurs invités : “Les utilisateurs invités ont un accès limité aux propriétés et appartenances des objets d’annuaire” (ou “L’accès des utilisateurs invités est restreint à…”)
  3. Ne pas utiliser “Les utilisateurs invités ont les mêmes accès que les membres”

1.7.2 — Restreindre qui peut inviter des utilisateurs invités

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.AAD.8.2v1

Description : Si n’importe quel utilisateur peut inviter des guests, des invitations non contrôlées peuvent introduire des comptes externes non vérifiés dans le tenant, augmentant la surface d’attaque et les risques de fuite de données.

Vérification :

(Get-MgPolicyAuthorizationPolicy).AllowInvitesFrom

Doit retourner : adminsAndGuestInviters ou adminsOnly

Remédiation :

  1. Entra ID > Identités externes > Paramètres de collaboration externe
  2. “Qui peut inviter des utilisateurs invités” : Administrateurs et utilisateurs ayant le rôle d’inviteur d’invités
  3. Ou : Uniquement les administrateurs (option la plus restrictive)

1.7.3 — Restreindre les invitations aux domaines externes approuvés

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.AAD.8.3v1

Description : Sans liste blanche de domaines, des comptes invités peuvent être créés depuis n’importe quel domaine, y compris des domaines créés spécifiquement pour l’attaque. Restreindre aux domaines partenaires connus réduit ce risque.

Vérification :

  • Entra ID > Identités externes > Paramètres de collaboration externe > Restrictions de collaboration

Remédiation :

  1. Entra ID > Identités externes > Paramètres de collaboration externe
  2. Restrictions de collaboration : “Autoriser les invitations uniquement aux domaines spécifiés”
  3. Ajouter la liste des domaines partenaires approuvés
  4. Révision trimestrielle de la liste des invités actifs

1.8 Gestion des Rôles Privilégiés


1.8.1 — Activer Privileged Identity Management (PIM)

Niveau : 🔴 Critique Référence CIS : CIS Control 5.4 Licence requise : Entra ID P2 MITRE ATT&CK : T1078.004 (Valid Accounts: Cloud) · T1548 (Abuse Elevation Control Mechanism) · T1098 (Account Manipulation)

Description : PIM implémente le principe du Just-In-Time (JIT) : les administrateurs n’ont pas de droits permanents, ils les activent à la demande pour une durée limitée avec justification. Cela réduit drastiquement la fenêtre d’exposition en cas de compromission de compte admin.

Vérification :

  • Entra ID > Gestion des identités > Privileged Identity Management
  • Vérifier les rôles configurés en mode “Eligible” vs “Active permanent”
  • PowerShell :
Get-MgRoleManagementDirectoryRoleAssignment | Where-Object {$_.AssignmentType -eq "Assigned"} | Select-Object PrincipalId, RoleDefinitionId

Remédiation :

  1. Activer PIM pour tous les rôles privilégiés Entra ID
  2. Convertir les assignations permanentes en assignations “Éligibles”
  3. Configurer : durée d’activation max = 4 heures, justification obligatoire, approbation pour rôles critiques
  4. Configurer les alertes PIM (assignations permanentes détectées, activations suspectes)
  5. Rôles prioritaires à protéger : Global Administrator, Privileged Role Administrator, Security Administrator, Exchange Administrator, SharePoint Administrator

1.8.2 — Limiter le nombre d’Administrateurs Globaux

Niveau : 🔴 Critique Référence CIS : CIS Control 5.4 MITRE ATT&CK : T1078.004 (Valid Accounts: Cloud) · T1136.003 (Create Account: Cloud) · T1087.004 (Account Discovery: Cloud)

Description : Le rôle Global Administrator est le plus puissant de M365. Plus il y a de personnes avec ce rôle, plus la surface d’attaque est grande. Le CIS recommande entre 2 et 4 Global Admins maximum (pour la redondance sans excès).

Vérification :

  • Entra ID > Rôles et administrateurs > Administrateur général
  • PowerShell :
Get-MgDirectoryRoleMember -DirectoryRoleId (Get-MgDirectoryRole -Filter "DisplayName eq 'Global Administrator'").Id | Select-Object -ExpandProperty AdditionalProperties

Remédiation :

  1. Conserver uniquement 2 à 4 Global Admins maximum
  2. Remplacer le Global Admin par des rôles spécialisés (Exchange Admin, SharePoint Admin, etc.) pour les tâches spécifiques
  3. Utiliser des comptes dédiés “break glass” (comptes d’urgence) distincts des comptes quotidiens
  4. Activer PIM pour le rôle Global Admin

1.8.3 — Utiliser des rôles à granularité fine plutôt que Global Admin

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.7.2v1

Description : Le Global Administrator a accès à TOUT dans le tenant M365. La grande majorité des tâches d’administration peuvent être effectuées avec des rôles spécialisés qui limitent l’impact d’une compromission. Un administrateur Exchange n’a pas besoin d’accéder à SharePoint ou Intune.

Vérification :

# Identifier les utilisateurs avec Global Admin qui pourraient avoir un rôle plus restreint
$gaMembers = Get-MgDirectoryRoleMember -DirectoryRoleId (Get-MgDirectoryRole -Filter "DisplayName eq 'Global Administrator'").Id
$gaMembers | ForEach-Object {
    Get-MgUserAppRoleAssignment -UserId $_.Id
}

Remédiation : Rôles de remplacement recommandés par fonction :

  • Exchange : Exchange Administrator
  • SharePoint : SharePoint Administrator
  • Teams : Teams Administrator
  • Sécurité : Security Administrator / Security Reader
  • Utilisateurs : User Administrator
  • Facturation : Billing Administrator
  • Intune : Intune Administrator
  • Conformité : Compliance Administrator

1.8.4 — Provisionner les administrateurs avec des comptes cloud uniquement

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.7.3v1

Description : Les comptes admin synchronisés depuis l’Active Directory on-premises héritent des risques de l’AD : si un DC est compromis, l’attaquant obtient automatiquement les credentials des comptes admin cloud. Les comptes admin cloud-only sont isolés de cette chaîne de compromission.

Vérification :

# Vérifier les admins synchronisés depuis on-prem (OnPremisesSyncEnabled = true)
Get-MgDirectoryRoleMember -DirectoryRoleId (Get-MgDirectoryRole -Filter "DisplayName eq 'Global Administrator'").Id | ForEach-Object {
    Get-MgUser -UserId $_.Id | Select-Object DisplayName, UserPrincipalName, OnPremisesSyncEnabled
}

Remédiation :

  1. Créer de nouveaux comptes admin directement dans Entra ID (cloud-only)
  2. Format recommandé : adm_prenom.nom@domaine.com (ne pas synchroniser depuis l’AD)
  3. Migrer les assignations de rôles vers ces nouveaux comptes cloud-only
  4. Révoquer les rôles sur les comptes synchronisés

1.8.5 — Exiger une approbation pour l’activation du rôle Global Administrator

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.7.6v1 Licence requise : Entra ID P2 (PIM)

Description : Même avec PIM, l’activation du rôle le plus puissant (Global Admin) ne doit pas être auto-approuvée. Exiger une approbation humaine d’un second administrateur crée un contrôle de validation (“four-eyes principle”) qui ralentit un attaquant ayant compromis un compte éligible.

Vérification :

  • Entra ID > PIM > Rôles Entra ID > Administrateur général > Paramètres
  • Vérifier que “Approbation requise” est activé et qu’au moins un approbateur est configuré

Remédiation :

  1. PIM > Rôles Entra ID > Administrateur général > Paramètres du rôle > Modifier
  2. Activation : Exiger l’approbation → Oui
  3. Ajouter des approbateurs (au moins 2 personnes de confiance distinctes)
  4. Durée maximale d’activation : 4 heures

1.8.6 — Configurer des alertes sur les activations de rôles privilégiés

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.AAD.7.7v1, MS.AAD.7.8v1, MS.AAD.7.9v1 Licence requise : Entra ID P2 (PIM)

Description : Toute activation de rôle hautement privilégié doit déclencher une notification immédiate vers le SOC ou le RSSI. Les assignations permanentes de rôles (sans PIM) doivent également déclencher une alerte — elles peuvent indiquer qu’un attaquant a consolidé un accès persistant.

Vérification :

  • PIM > Rôles Entra ID > Alertes > Vérifier les alertes configurées
  • Vérifier que les notifications email sont configurées pour chaque rôle critique

Remédiation :

  1. PIM > Rôles Entra ID > Alertes PIM : activer toutes les alertes disponibles
  2. PIM > Chaque rôle critique > Paramètres > Notifications : configurer l’email du SOC/RSSI pour activation et assignation
  3. Rôles prioritaires pour alertes : Global Admin, Privileged Role Admin, Security Admin, Exchange Admin, SharePoint Admin, User Admin
  4. Créer des règles d’alerte Microsoft Sentinel (ou SIEM) pour corréler avec d’autres activités suspectes

1.8.7 — Créer des comptes d’urgence (Break Glass Accounts)

Niveau : 🔴 Critique Référence CIS : CIS Control 5.4 MITRE ATT&CK : T1078.004 (Valid Accounts: Cloud) · T1098.001 (Account Manipulation: Additional Cloud Credentials) · T1556 (Modify Authentication Process)

Description : Les comptes d’urgence permettent de récupérer l’accès au tenant en cas de panne MFA, de problème avec les politiques CA, ou de compromission des comptes admin normaux. Sans ces comptes, l’organisation risque d’être bloquée hors de son propre tenant.

Vérification :

  • Vérifier l’existence de 2 comptes d’urgence avec le rôle Global Admin
  • Vérifier qu’ils sont exclus de TOUTES les politiques CA (y compris MFA)
  • Vérifier qu’ils utilisent des mots de passe complexes stockés dans un coffre-fort physique
  • Vérifier la surveillance des connexions sur ces comptes (alerte immédiate si utilisés)

Remédiation :

  1. Créer 2 comptes type : breakglass01@domaine.com et breakglass02@domaine.com
  2. Mots de passe aléatoires de 32+ caractères, imprimés et stockés en coffre-fort physique
  3. Exclure ces comptes de TOUTES les politiques CA
  4. Créer une alerte : toute connexion sur ces comptes = notification immédiate SOC/RSSI
  5. Tester trimestriellement que ces comptes fonctionnent
  6. Ne jamais utiliser pour les tâches quotidiennes

1.8.8 — Utiliser des comptes admin dédiés (sans messagerie)

Niveau : 🟠 Élevé Référence CIS : CIS Control 5.4

Description : Les comptes administrateurs ne doivent pas recevoir d’emails. Un admin qui lit ses emails depuis son compte admin peut être victime de phishing, et si le compte admin est compromis via phishing, l’attaquant a directement accès aux privilèges admin. Les comptes admin doivent être distincts des comptes utilisateur quotidiens.

Vérification :

  • Vérifier que les comptes admin n’ont pas de boîte mail active ou de licence Exchange
  • Vérifier que les admins utilisent des comptes séparés pour les tâches admin vs quotidiennes

Remédiation :

  1. Créer des comptes admin avec convention de nommage distincte (ex: adm_prenom.nom@domaine.com)
  2. Ne pas assigner de licence Exchange/M365 aux comptes admin purs
  3. Utiliser un compte utilisateur standard pour la messagerie et naviguer, un compte admin pour les tâches d’administration
  4. Former les administrateurs à utiliser des navigateurs séparés ou profils distincts

1.8.9 — Activer les révisions d’accès pour les utilisateurs invités (Guests)

Niveau : 🟠 Élevé Référence CIS : 5.3.2 (L2) — Automated Profile : E3 Level 2 Licence requise : Entra ID P2

Description : Au-delà des révisions d’accès pour les rôles admin, les comptes invités doivent faire l’objet de révisions régulières. Les invités sont souvent des prestataires, partenaires ou anciens collaborateurs dont l’accès n’est plus justifié mais n’a jamais été révoqué. Chaque invité actif est un risque potentiel.

Vérification :

  • Entra ID > Gestion des identités > Révisions d’accès
  • Vérifier l’existence de révisions ciblant le groupe dynamique des guests

Remédiation :

  1. Créer une révision d’accès trimestrielle pour le groupe dynamique “Tous les invités”
  2. Réviseurs : responsables métier ou sponsoring managers des invités
  3. Paramètre : si non répondu dans 30 jours → supprimer l’accès automatiquement
  4. Exiger une justification pour conserver l’accès

1.8.10 — Exiger une approbation pour l’activation du rôle Privileged Role Administrator

Niveau : 🔴 Critique Référence CIS : 5.3.5 (L1) — Automated Profile : E3 Level 1 Licence requise : Entra ID P2 (PIM)

Description : Le rôle “Privileged Role Administrator” permet de modifier les attributions de rôles PIM elles-mêmes — c’est le “roi des rois” en termes de persistance : un attaquant obtenant ce rôle peut s’octroyer n’importe quel autre rôle. Il doit donc être traité avec le même niveau de contrôle que le Global Administrator.

Vérification :

  • PIM > Rôles Entra ID > Administrateur de rôles privilégiés > Paramètres
  • Vérifier que “Approbation requise” est activé

Remédiation :

  1. PIM > Rôles Entra ID > Administrateur de rôles privilégiés > Paramètres du rôle > Modifier
  2. Approbation requise pour activation : Oui
  3. Approbateurs : au moins 2 Global Admins distincts
  4. Durée maximale d’activation : 2 heures

1.8.11 — Activer les révisions d’accès (Access Reviews) pour les rôles admin

Niveau : 🟠 Élevé Référence CIS : CIS Control 5.4 Licence requise : Entra ID P2

Description : Les droits d’administration s’accumulent avec le temps (privilege creep). Les Access Reviews permettent une révision périodique des assignations de rôles pour s’assurer que seuls les utilisateurs légitimes conservent leurs droits.

Vérification :

  • Entra ID > Gestion des identités > Révisions d’accès
  • Vérifier l’existence de révisions programmées pour les rôles admin

Remédiation :

  1. Créer des révisions d’accès trimestrielles pour tous les rôles admin
  2. Désignation des réviseurs : managers directs ou RSSI
  3. Paramètre : si le réviseur ne répond pas dans le délai → supprimer l’accès automatiquement
  4. Révision annuelle pour les utilisateurs standards sur les applications sensibles

1.8.12 — Détecter les comptes administrateurs inactifs depuis plus de 90 jours

Niveau : 🟠 Élevé Référence : M365-Assess ENTRA-STALEADMIN-001 — Automated Licence requise : Entra ID P1

Description : Les comptes administrateurs inactifs depuis plus de 90 jours représentent un risque élevé : ils sont souvent liés à des anciens employés, des comptes de service abandonnés ou des comptes créés temporairement et jamais désactivés. Un attaquant qui obtient ces credentials (breach, dark web) accède directement à des rôles élevés sans déclencher d’alerte comportementale.

Vérification :

# Admins inactifs depuis plus de 90 jours
$threshold = (Get-Date).AddDays(-90)
$adminRoles = Get-MgDirectoryRole
foreach ($role in $adminRoles) {
    $members = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -All
    foreach ($member in $members) {
        $user = Get-MgUser -UserId $member.Id -Property "displayName,userPrincipalName,signInActivity" -ErrorAction SilentlyContinue
        if ($user -and $user.SignInActivity.LastSignInDateTime -lt $threshold) {
            [PSCustomObject]@{
                Role = $role.DisplayName
                User = $user.DisplayName
                UPN  = $user.UserPrincipalName
                LastSignIn = $user.SignInActivity.LastSignInDateTime
            }
        }
    }
} | Format-Table

Remédiation :

  1. Désactiver immédiatement les comptes admins sans connexion depuis > 90 jours
  2. Révoquer les sessions actives : Revoke-MgUserSignInSession -UserId <id>
  3. Déplacer les comptes suspects dans un groupe de quarantaine avant suppression
  4. Implémenter un processus offboarding qui inclut la révocation des rôles admin
  5. Configurer une alerte automatique mensuelle sur les admins inactifs

Valeur par défaut : Aucune alerte sur l’inactivité des comptes admin.


1.8.13 — Vérifier que les administrateurs privilégiés ne sont pas exclus des politiques CA critiques

Niveau : 🔴 Critique Référence : M365-Assess CA-EXCLUSION-001 + Maester MT.1036 — Automated Licence requise : Entra ID P1

Description : Les politiques de Conditional Access contiennent souvent des exclusions (comptes de service, comptes d’urgence). Si des administrateurs privilégiés ou des groupes admin se retrouvent dans les exclusions de politiques CA critiques (MFA, blocage auth legacy, conformité appareil), ces comptes peuvent contourner toutes les protections. C’est l’une des failles les plus fréquemment exploitées lors d’incidents M365.

Vérification :

# Vérifier les exclusions dans les politiques CA critiques
$caPolicies = Get-MgIdentityConditionalAccessPolicy -All | Where-Object { $_.State -eq "enabled" }
foreach ($policy in $caPolicies) {
    $excludedUsers = $policy.Conditions.Users.ExcludeUsers
    $excludedGroups = $policy.Conditions.Users.ExcludeGroups
    if ($excludedUsers.Count -gt 0 -or $excludedGroups.Count -gt 0) {
        # Vérifier si des admins privilégiés sont dans les exclusions
        foreach ($userId in $excludedUsers) {
            $user = Get-MgUser -UserId $userId -ErrorAction SilentlyContinue
            $adminRoles = Get-MgUserMemberOf -UserId $userId | Where-Object { $_.AdditionalProperties.'@odata.type' -eq '#microsoft.graph.directoryRole' }
            if ($adminRoles) {
                Write-Host "⚠️ CRITICAL: Admin user $($user.DisplayName) excluded from policy: $($policy.DisplayName)" -ForegroundColor Red
            }
        }
    }
}

Remédiation :

  1. Revoir toutes les exclusions des politiques CA — enlever les comptes admin non justifiés
  2. Les exclusions doivent se limiter aux comptes Break Glass et aux comptes de service documentés
  3. S’assurer que les exclusions sont temporaires et révisées mensuellement
  4. Documenter chaque exclusion avec sa justification et sa date d’expiration
  5. Utiliser les noms de groupes plutôt que des utilisateurs individuels pour faciliter l’audit

Valeur par défaut : Aucune validation automatique des exclusions CA.


1.8.14 — Détecter les comptes AD synchronisés dans des rôles cloud privilégiés

Niveau : 🔴 Critique Référence : CIS 5.4.x + M365-Assess ENTRA-SYNCADMIN-001 — Automated Licence requise : Entra ID P1

Description : Les comptes synchronisés depuis l’Active Directory on-premises ne doivent jamais avoir de rôles cloud privilégiés. Si le compte AD on-prem est compromis (ransomware, DC compromise, GPO malveillante), l’attaquant hérite automatiquement des rôles cloud. La règle absolue : les admins cloud doivent être des comptes cloud-only. C’est le chemin d’attaque AD → M365 le plus fréquent en 2026.

Vérification :

# Comptes synchros avec rôles cloud privilégiés — vecteur critique
$adminRoles = Get-MgDirectoryRole
$syncedAdmins = @()
foreach ($role in $adminRoles) {
    $members = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -All
    foreach ($member in $members) {
        $user = Get-MgUser -UserId $member.Id -Property "displayName,userPrincipalName,onPremisesSyncEnabled" -ErrorAction SilentlyContinue
        if ($user -and $user.OnPremisesSyncEnabled -eq $true) {
            $syncedAdmins += [PSCustomObject]@{
                Role = $role.DisplayName
                User = $user.DisplayName
                UPN  = $user.UserPrincipalName
                OnPremSync = $true
            }
        }
    }
}
$syncedAdmins | Format-Table
# Résultat attendu : Aucun résultat

Remédiation :

  1. Créer des comptes cloud-only dédiés pour chaque admin ayant un compte synchro
  2. Transférer les rôles admin cloud vers les comptes cloud-only
  3. Supprimer les rôles cloud des comptes synchros
  4. Désactiver les comptes synchros dans Entra ID (conserver pour accès on-prem uniquement)
  5. Configurer une alerte sur toute future assignation de rôle cloud à un compte synchro

Valeur par défaut : Aucune restriction — les comptes synchros peuvent avoir des rôles cloud.


1.8.15 — Enforcer l’authentification Passwordless (FIDO2 / Windows Hello for Business) pour les comptes privilégiés

Niveau : 🔴 Critique Référence CISA SCuBA : MS.AAD.3.6v1 + MS.AAD.3.8v1 — Manual Licence requise : Entra ID P1 + Entra ID P2 (recommandé)

Description : L’authentification passwordless (FIDO2, Windows Hello for Business, Microsoft Authenticator Passwordless) élimine les risques liés aux mots de passe : credential stuffing, phishing, password spray. Pour les comptes privilégiés, c’est le niveau de protection le plus élevé recommandé par CISA en 2026. Les méthodes classiques MFA (OTP, SMS, Authenticator push) restent vulnérables aux attaques de type AiTM (Adversary-in-The-Middle). Le passwordless élimine ce vecteur car il n’y a pas de secret partageable.

Vérification :

# Vérifier les méthodes d'authentification des admins — identifier ceux sans Passwordless
$adminRoles = Get-MgDirectoryRole | Where-Object { $_.DisplayName -match "Administrator" }
foreach ($role in $adminRoles) {
    $members = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -All
    foreach ($member in $members) {
        $methods = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/users/$($member.Id)/authentication/methods" -Method GET -ErrorAction SilentlyContinue
        $hasPasswordless = $methods.value | Where-Object {
            $_.'@odata.type' -match "fido2|microsoftAuthenticatorAuthentication|windowsHelloForBusiness"
        }
        if (-not $hasPasswordless) {
            Write-Host "⚠️ Admin sans Passwordless: $($member.AdditionalProperties.displayName) — Role: $($role.DisplayName)" -ForegroundColor Red
        }
    }
}

Remédiation :

  1. Entra ID > Protection > Méthodes d’authentification > Politiques
  2. Activer FIDO2 Security Keys pour les comptes admin (Microsoft.Graph.Identity.SignIns)
  3. Créer une politique CA : Admins privilégiés → Exiger auth résistante au phishing (FIDO2/WHfB)
  4. Déployer des clés FIDO2 physiques (YubiKey, Feitian) pour les Global Admins et les comptes Break Glass
  5. Former les administrateurs à l’usage des clés FIDO2 et WHfB
  6. Supprimer les méthodes SMS et appel vocal pour les comptes admin via la politique de méthodes d’auth

Valeur par défaut : Aucune exigence Passwordless — les admins peuvent utiliser des méthodes MFA traditionnelles vulnérables au phishing AiTM.


1.9 Groupes, Appareils et Paramètres Avancés


1.9.1 — Créer un groupe dynamique pour les utilisateurs invités

Niveau : 🟠 Élevé Référence CIS : CIS 5.1.3.1 (L1) — Automated Profile : E3 Level 1

Description : Un groupe dynamique Entra ID avec la règle (user.userType -eq "Guest") permet d’appliquer automatiquement des politiques d’accès conditionnel, des restrictions et des contrôles de sécurité à tous les invités actuels et futurs. Sans ce groupe, les nouveaux comptes invités peuvent temporairement échapper aux contrôles de sécurité.

Vérification :

Connect-MgGraph -Scopes "Group.Read.All"
$groups = Get-MgGroup -All | Where-Object { $_.GroupTypes -contains "DynamicMembership" }
$groups | Where-Object { $_.MembershipRule -match "userType" } | ft DisplayName, MembershipRule

Vérifier qu’un groupe existe avec la règle (user.userType -eq "Guest").

Remédiation :

$params = @{
    DisplayName = "Dynamic Guest Group"
    MailNickname = "DynGuestUsers"
    MailEnabled = $false
    SecurityEnabled = $true
    GroupTypes = @("DynamicMembership")
    MembershipRule = '(user.userType -eq "Guest")'
    MembershipRuleProcessingState = "On"
}
New-MgGroup @params

Utiliser ce groupe dans les politiques d’Accès Conditionnel ciblant les invités.


1.9.2 — Désactiver la création de groupes de sécurité par les utilisateurs

Niveau : 🟠 Élevé Référence CIS : CIS 5.1.3.2 (L1) — Automated Profile : E3 Level 1

Description : Par défaut, tous les utilisateurs peuvent créer des groupes de sécurité dans Azure Portal, l’API ou PowerShell. Cela peut conduire à une prolifération incontrôlée de groupes et à des escalades de privilèges si ces groupes sont ensuite utilisés pour gérer des accès.

Vérification :

(Get-MgPolicyAuthorizationPolicy).DefaultUserRolePermissions | Select-Object AllowedToCreateSecurityGroups
# Valeur attendue : False

Remédiation :

$params = @{
    defaultUserRolePermissions = @{
        AllowedToCreateSecurityGroups = $false
    }
}
Update-MgPolicyAuthorizationPolicy -BodyParameter $params

Ou via Entra ID > Groupes > Paramètres généraux : “Les utilisateurs peuvent créer des groupes de sécurité dans les portails Azure” → Non.


1.9.3 — Limiter le nombre maximum d’appareils par utilisateur (≤ 20)

Niveau : 🟠 Élevé Référence CIS : CIS 5.1.4.2 (L1) — Automated Profile : E3 Level 1

Description : Cette limite définit le nombre maximum d’appareils qu’un utilisateur peut inscrire dans Entra ID. Un quota élevé (défaut : 50) permet à un attaquant ayant compromis un compte d’inscrire de multiples appareils pour établir de la persistance. Microsoft recommande ≤ 20 appareils par utilisateur.

Vérification :

$Uri = "https://graph.microsoft.com/beta/policies/deviceRegistrationPolicy"
(Invoke-MgGraphRequest -Method GET -Uri $Uri).userDeviceQuota
# Valeur attendue : ≤ 20

Remédiation :

  • Entra ID > Appareils > Paramètres des appareils
  • “Nombre maximum d’appareils par utilisateur” → 20 (ou moins)

1.9.4 — Ne pas ajouter le Global Administrator comme admin local lors de la jointure Entra

Niveau : 🔴 Critique Référence CIS : CIS 5.1.4.3 (L1) — Automated Profile : E3 Level 1

Description : Par défaut, le rôle Global Administrator est ajouté automatiquement au groupe des administrateurs locaux lors de la jointure Entra. Cela viole le principe du moindre privilège — les GA ont alors un accès admin local sur tous les appareils joints, ce qui crée un vecteur latéral majeur.

Vérification :

$Uri = "https://graph.microsoft.com/beta/policies/deviceRegistrationPolicy"
(Invoke-MgGraphRequest -Method GET -Uri $Uri).azureADJoin.localAdmins
# Valeur attendue : enableGlobalAdmins = False

Remédiation :

  • Entra ID > Appareils > Paramètres des appareils
  • “Le rôle Global Administrator est ajouté comme administrateur local lors de la jointure Microsoft Entra” → Non

1.9.5 — Restreindre la jointure d’appareils à Entra ID

Niveau : 🟡 Moyen Référence CIS : CIS 5.1.4.1 (L2) — Automated Profile : E3 Level 2

Description : Par défaut, tous les utilisateurs peuvent joindre leurs appareils à Entra ID. Un attaquant ayant compromis un compte standard peut inscrire un appareil malveillant qui hérite des politiques MDM et semble conforme, obtenant ainsi un accès persistant aux ressources cloud sans déclencher de MFA.

Vérification :

$Uri = "https://graph.microsoft.com/beta/policies/deviceRegistrationPolicy"
(Invoke-MgGraphRequest -Method GET -Uri $Uri).azureADJoin.allowedToJoin
# Type attendu : #microsoft.graph.enumeratedDeviceRegistrationMembership (Sélectionné) ou #microsoft.graph.noDeviceRegistrationMembership (Aucun)

Remédiation :

  • Entra ID > Appareils > Paramètres des appareils
  • “Les utilisateurs peuvent joindre des appareils à Microsoft Entra” → Sélectionné (définir un groupe autorisé) ou Aucun

1.9.6 — Masquer l’option “Rester connecté” (Stay signed in)

Niveau : 🟡 Moyen Référence CIS : CIS 5.1.2.5 (L2) — Manual Profile : E3 Level 2

Description : L’option “Rester connecté” crée un jeton d’actualisation persistant de 90 jours. Sur un ordinateur partagé ou public, cela permet à tout utilisateur suivant d’accéder aux données M365 sans authentification. Cette option doit être masquée pour tous les utilisateurs.

Vérification :

  • Entra ID > Entreprise > Paramètres utilisateur
  • “Afficher l’option Maintenir la connexion” → Non

Remédiation :

  1. Entra ID Admin Center > Identité > Marque de société
  2. Sélectionner votre configuration de marque
  3. “Afficher l’option permettre aux utilisateurs de rester connectés” → Non
  4. Sauvegarder

1.9.7 — Désactiver les connexions de compte LinkedIn

Niveau : 🟡 Moyen Référence CIS : CIS 5.1.2.6 (L2) — Manual Profile : E3 Level 2

Description : L’intégration LinkedIn permet aux utilisateurs de connecter leur compte professionnel Microsoft avec LinkedIn. Cela expose des informations organisationnelles (contacts, organigrammes) à un réseau social externe et peut faciliter des attaques de spear-phishing ciblées.

Vérification :

  • Entra ID > Utilisateurs > Paramètres utilisateur
  • “Connexions de compte LinkedIn” → Non

Remédiation :

  1. Entra ID Admin Center > Identité > Utilisateurs > Paramètres utilisateur
  2. “Les utilisateurs peuvent connecter leur compte professionnel ou scolaire avec LinkedIn” → Non
  3. Sauvegarder

1.10 Cross-Tenant Access, Tenant Restrictions et Évaluation Continue des Accès (CAE)


1.10.1 — Configurer les paramètres d’accès cross-tenant (XTAP)

Niveau : 🟠 Élevé Référence CIS : CIS 5.1.5.1 (L1) — Manual Profile : E3 Level 1 Licence requise : Entra ID P1

Description : Les paramètres d’accès cross-tenant (Cross-Tenant Access Policies — XTAP) contrôlent comment les utilisateurs de votre tenant interagissent avec d’autres organisations Entra ID, et réciproquement. Par défaut, tous les accès B2B entre tenants sont autorisés sans restriction. Une mauvaise configuration permet à des utilisateurs externes non approuvés d’accéder à vos ressources ou à vos utilisateurs d’exfiltrer des données vers des tenants non contrôlés.

Vérification :

# Vérifier la politique par défaut cross-tenant
$policy = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy" -Method GET
$policy | ConvertTo-Json -Depth 5

# Vérifier les politiques spécifiques par organisation partenaire
$partners = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners" -Method GET
$partners.value | Select-Object tenantId, displayName | Format-Table

Vérifier que la politique par défaut est restrictive (inboundTrust, b2bCollaborationInbound/Outbound configurés).

Remédiation :

  1. Entra ID > Identités externes > Paramètres d’accès cross-tenant
  2. Paramètres par défaut : Configurer pour bloquer toute collaboration B2B par défaut
  3. Paramètres inbounds : Bloquer tous les utilisateurs externes sauf exceptions autorisées
  4. Paramètres outbounds : Restreindre les applications accessibles depuis l’extérieur
  5. Créer des politiques spécifiques pour les partenaires de confiance uniquement
  6. Activer l’authentification multi-facteurs de confiance pour les partenaires spécifiques (MFA trust)

Valeur par défaut : Toutes les collaborations B2B sont autorisées par défaut.


1.10.2 — Implémenter les Tenant Restrictions v2 (TRv2)

Niveau : 🟠 Élevé Référence : CISA SCuBA MS.AAD.7.x — Manual Profile : E3 Level 1 Licence requise : Entra ID P1 + proxy réseau ou Windows 11 intégré

Description : Les Tenant Restrictions v2 (TRv2) empêchent les utilisateurs d’accéder à des tenants M365 non autorisés depuis les appareils ou réseaux de l’organisation. C’est une défense critique contre l’exfiltration de données via des tenants personnels ou non approuvés. Un utilisateur pourrait créer un tenant gratuit et y transférer des données sensibles — TRv2 bloque cette technique.

Vérification :

# Vérifier la politique de restriction de tenant
$policy = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/default" -Method GET
$policy.tenantRestrictions | ConvertTo-Json

# Pour Windows 11 : vérifier via registre (à exécuter sur les postes de travail)
# HKLM\SOFTWARE\Policies\Microsoft\Windows\TenantRestrictions

Remédiation :

  1. Entra ID > Identités externes > Paramètres d’accès cross-tenant > Paramètres par défaut > Restrictions de tenant
  2. Activer les restrictions de tenant et définir les tenants autorisés
  3. Pour les appareils Windows 11 : configurer via Intune la stratégie TRv2 (Global Secure Access ou proxy)
  4. Pour les environnements avec proxy : injecter les en-têtes Restrict-Access-To-Tenants et Restrict-Access-Context
  5. Utiliser Microsoft Entra Global Secure Access si disponible

Valeur par défaut : Aucune restriction de tenant configurée — les utilisateurs peuvent accéder à n’importe quel tenant.


1.10.3 — Activer l’Évaluation Continue des Accès (CAE)

Niveau : 🟠 Élevé Référence : CISA SCuBA MS.AAD.6.x — Automated Profile : E3 Level 1 Licence requise : Entra ID P1

Description : L’Évaluation Continue des Accès (CAE — Continuous Access Evaluation) permet à Entra ID de révoquer en temps quasi-réel les tokens d’accès lorsqu’un événement critique se produit (désactivation de compte, réinitialisation de mot de passe, modification de risque). Sans CAE, un token valide peut être utilisé pendant jusqu’à 1 heure même si le compte a été compromis et désactivé entre-temps. CAE réduit cette fenêtre à quelques secondes/minutes.

Vérification :

# Vérifier l'état de CAE
$caePolicy = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/continuousAccessEvaluationPolicy" -Method GET
$caePolicy | ConvertTo-Json

# Résultat attendu : migrationState = "migrationComplete" ou isEnabled = $true
  • Portail Entra ID > Protection > Évaluation continue des accès

Remédiation :

  1. Entra ID > Protection > Évaluation continue des accès
  2. Activer CAE pour l’ensemble du tenant (migration vers le mode “Tous les utilisateurs”)
  3. Vérifier que les applications clés supportent CAE (Exchange Online, SharePoint, Teams — supportés nativement)
  4. Configurer les politiques CA avec le mode “Strict Location Enforcement” si nécessaire
  5. PowerShell :
$params = @{
    isEnabled = $true
}
Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/continuousAccessEvaluationPolicy" -Method PATCH -Body ($params | ConvertTo-Json)

Valeur par défaut : CAE activé en mode migration partielle — à forcer en mode complet.


1.10.4 — Auditer les accès B2B et réaliser des Access Reviews régulières

Niveau : 🟡 Moyen Référence CIS : CIS 5.1.8.1 (L2) — Manual Profile : E3 Level 2 Licence requise : Entra ID P2

Description : Les utilisateurs invités (B2B) accumulent souvent des accès non nécessaires au fil du temps. Sans revues périodiques, des anciens partenaires, prestataires ou collaborateurs temporaires conservent des accès indéfiniment. Les Access Reviews automatisent ce processus de certification et révocation périodique des accès.

Vérification :

# Lister les Access Reviews actives
$reviews = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions" -Method GET
$reviews.value | Select-Object displayName, status, createdDateTime | Format-Table

# Compter les utilisateurs invités actifs
(Get-MgUser -Filter "userType eq 'Guest'" -All).Count

Remédiation :

  1. Entra ID > Gouvernance des identités > Access Reviews > Nouvelle révision d’accès
  2. Configurer une révision trimestrielle de tous les utilisateurs invités
  3. Assigner les réviseurs (managers des sponsors ou groupe d’administration)
  4. Activer la révocation automatique si non réponse dans le délai (auto-apply)
  5. Configurer une politique d’expiration pour les comptes invités inactifs depuis 90 jours

Valeur par défaut : Aucune Access Review configurée — les accès invités ne sont jamais révisés.


SECTION 1.11 — GOUVERNANCE DES DROITS (ENTITLEMENT MANAGEMENT)

Contexte : La gouvernance des droits (Entra ID Entitlement Management) est l’une des surfaces d’attaque les plus négligées. Des access packages avec des rôles supprimés, des groupes inexistants ou des approbateurs invalides créent des voies d’escalade silencieuses. Maester (MT.1106–1110) est le seul outil à automatiser ces vérifications.


1.11 Gestion des Access Packages et Catalogues


1.11.1 — Auditer les ressources d’access packages avec rôles obsolètes

Niveau : 🟠 Élevé Référence : Maester MT.1106 — Automated Licence requise : Entra ID P2 (Governance)

Description : Les access packages peuvent référencer des rôles d’applications qui ont été supprimés ou des Service Principals qui n’existent plus. Ces références fantômes créent des incohérences dans la gouvernance des droits et peuvent masquer des accès non révoqués.

Vérification :

# Vérifier les ressources de catalogues avec des rôles invalides
$catalogs = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/catalogs" -Method GET
foreach ($catalog in $catalogs.value) {
    $resources = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/catalogs/$($catalog.id)/resources?`$expand=roles" -Method GET
    $resources.value | Where-Object { $_.roles.Count -eq 0 } | ForEach-Object {
        Write-Host "⚠️ Catalog: $($catalog.displayName) — Resource sans rôles: $($_.displayName)" -ForegroundColor Yellow
    }
}

Remédiation :

  1. Entra ID > Gouvernance des identités > Gestion des droits > Catalogues
  2. Identifier les ressources sans rôles ou avec des rôles supprimés
  3. Supprimer les ressources invalides des catalogues
  4. Mettre à jour les access packages affectés

Valeur par défaut : Aucune validation automatique des ressources — les rôles supprimés restent référencés.


1.11.2 — Détecter les access packages référençant des groupes supprimés

Niveau : 🟠 Élevé Référence : Maester MT.1107 — Automated Licence requise : Entra ID P2

Description : Les access packages peuvent référencer des groupes de sécurité ou M365 qui ont été supprimés. Quand un utilisateur reçoit un access package avec un groupe supprimé, l’assignation échoue silencieusement — l’utilisateur pense avoir les droits mais ne les a pas, ou inversement, les droits restent assignés sans le groupe de contrôle.

Vérification :

# Détecter les groupes supprimés dans les access packages
$accessPackages = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackages?`$expand=resourceRoleScopes" -Method GET
foreach ($pkg in $accessPackages.value) {
    foreach ($rrs in $pkg.resourceRoleScopes) {
        $resourceId = $rrs.resourceRole.resource.id
        $group = Get-MgGroup -GroupId $resourceId -ErrorAction SilentlyContinue
        if (-not $group) {
            Write-Host "⚠️ Access Package '$($pkg.displayName)' — Groupe supprimé: $resourceId" -ForegroundColor Red
        }
    }
}

Remédiation :

  1. Identifier tous les access packages avec des groupes supprimés
  2. Supprimer les références invalides
  3. Recréer les groupes si nécessaire ou remplacer par des groupes existants
  4. Révoquer et réassigner les droits aux utilisateurs concernés

Valeur par défaut : Pas de validation — les groupes supprimés restent dans les access packages.


1.11.3 — Identifier les politiques d’access packages inactives ou orphelines

Niveau : 🟡 Moyen Référence : Maester MT.1108 — Automated Licence requise : Entra ID P2

Description : Des politiques d’assignation d’access packages peuvent devenir “orphelines” si les conditions de déclenchement ne sont plus valides (groupe de portée supprimé, politique expirée). Ces politiques peuvent créer des assignations inattendues ou bloquer des demandes légitimes.

Vérification :

$assignments = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/assignmentPolicies" -Method GET
$assignments.value | Where-Object { $_.status -eq "inactive" -or $_.status -eq "disabled" } |
    Select-Object displayName, status, createdDateTime | Format-Table

Remédiation :

  1. Désactiver et supprimer les politiques inactives sans assignations actives
  2. Documenter les politiques légitimement désactivées (maintenance planifiée)
  3. Révision semestrielle de toutes les politiques d’access packages

Valeur par défaut : Politiques inactives conservées indéfiniment.


1.11.4 — Valider les approbateurs des workflows d’access packages

Niveau : 🟠 Élevé Référence : Maester MT.1109 — Automated Licence requise : Entra ID P2

Description : Les workflows d’approbation des access packages peuvent référencer des utilisateurs qui ont quitté l’organisation ou dont le compte a été supprimé. Si l’approbateur n’existe plus, les demandes d’accès restent en attente indéfiniment ou passent sans approbation réelle.

Vérification :

# Vérifier les approbateurs valides dans les politiques d'access packages
$policies = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/assignmentPolicies?`$expand=requestApprovalSettings" -Method GET
foreach ($policy in $policies.value) {
    if ($policy.requestApprovalSettings.approvalStages) {
        foreach ($stage in $policy.requestApprovalSettings.approvalStages) {
            foreach ($approver in $stage.primaryApprovers) {
                if ($approver.objectType -eq "User") {
                    $user = Get-MgUser -UserId $approver.id -ErrorAction SilentlyContinue
                    if (-not $user -or $user.AccountEnabled -eq $false) {
                        Write-Host "⚠️ Policy: $($policy.displayName) — Approbateur invalide: $($approver.id)" -ForegroundColor Red
                    }
                }
            }
        }
    }
}

Remédiation :

  1. Identifier toutes les politiques avec des approbateurs invalides
  2. Remplacer les approbateurs inexistants par des utilisateurs actifs
  3. Préférer des groupes de sécurité comme approbateurs (plutôt que des individus)
  4. Alerte automatique sur la désactivation d’un compte approbateur

Valeur par défaut : Aucune validation des approbateurs — les workflows peuvent bloquer silencieusement.


1.11.5 — Détecter les catalogues sans access packages associés

Niveau : 🟢 Faible Référence : Maester MT.1110 — Automated Licence requise : Entra ID P2

Description : Des catalogues contenant des ressources mais sans access packages associés représentent des ressources “flottantes” qui ne peuvent pas être attribuées via le processus officiel de gouvernance. Ces ressources peuvent soit être des reliquats de configuration, soit des ressources qui devraient être accessibles mais ne le sont pas.

Vérification :

$catalogs = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/catalogs" -Method GET
foreach ($catalog in $catalogs.value) {
    $packages = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackages?`$filter=catalog/id eq '$($catalog.id)'" -Method GET
    if ($packages.value.Count -eq 0) {
        $resources = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/catalogs/$($catalog.id)/resources" -Method GET
        if ($resources.value.Count -gt 0) {
            Write-Host "⚠️ Catalogue '$($catalog.displayName)' a $($resources.value.Count) ressources mais aucun access package" -ForegroundColor Yellow
        }
    }
}

Remédiation :

  1. Créer des access packages pour les ressources dans des catalogues vides
  2. Ou supprimer les ressources non gouvernées de ces catalogues
  3. Supprimer les catalogues vides inutiles

Valeur par défaut : Aucune alerte — les catalogues sans access packages sont ignorés.


1.12 Protection des Tokens et Sessions Avancées


1.12.1 — Activer la Protection des Tokens (Token Protection) pour Exchange, SharePoint et Teams

Niveau : 🔴 Critique Référence : Entra ID P2 — CISA Phishing-resistant guidance Licence requise : Entra ID P2 + appareils Entra Joined

Description : La protection des tokens (Token Protection / Token Binding) lie cryptographiquement le token d’accès à l’appareil qui l’a obtenu. Sans cette protection, un attaquant ayant volé un access token (via AiTM, memory injection ou exfiltration réseau) peut le rejouer depuis n’importe quel autre appareil — c’est l’attaque Pass-the-Token. Avec Token Protection activé dans une politique CA, le token devient inutilisable en dehors de l’appareil d’origine car il est lié à la clé TPM.

Vérification :

# Vérifier les politiques CA avec Token Protection activé
$caPolicies = Get-MgIdentityConditionalAccessPolicy -All | Where-Object { $_.State -eq "enabled" }
$tokenProtected = $caPolicies | Where-Object {
    ($_.SessionControls | ConvertTo-Json -Depth 5) -match "tokenProtection|primaryRefreshToken"
}
if ($tokenProtected) {
    Write-Host "✅ Token Protection configuré : $($tokenProtected.DisplayName)" -ForegroundColor Green
} else {
    Write-Host "❌ Aucune politique CA avec Token Protection" -ForegroundColor Red
}
# Portail : Entra ID > Protection > Accès Conditionnel > créer politique > Session > Token Protection = Activé

Remédiation :

  1. Créer une politique CA : Applications cloud → Exchange Online, SharePoint Online, Teams
  2. Session > Protection des tokens = Activé
  3. Conditions : Appareils joints Entra ID ou conformes (requis pour le binding TPM)
  4. Exclure les appareils sans TPM (anciens postes) en phase de déploiement progressif
  5. Prioriser pour les comptes admin et utilisateurs sensibles en premier

Valeur par défaut : Token Protection désactivé — les tokens peuvent être rejoués depuis n’importe quel appareil.


1.12.2 — Activer les Actions Protégées (Protected Actions) pour les opérations Entra critiques

Niveau : 🔴 Critique Référence : Entra ID P2 Licence requise : Entra ID P2

Description : Les Actions Protégées (Protected Actions) exigent une ré-authentification fraîche (step-up MFA) avant d’exécuter des opérations Entra ID particulièrement sensibles, même si l’administrateur est déjà connecté avec une session valide. Un attaquant avec un token admin volé ne peut pas supprimer une politique CA, modifier les paramètres d’authentification ou assigner un rôle permanent sans déclencher un nouveau challenge MFA résistant au phishing.

Actions prioritaires à protéger : suppression de politiques CA, modification des paramètres fédérés, assignation de rôles permanents, modification de la liste des mots de passe interdits.

Vérification :

# Vérifier les actions protégées configurées dans les niveaux d'authentification
$authStrengths = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/authenticationStrengthPolicies" -Method GET
$authStrengths.value | Select-Object displayName, policyType | Format-Table
# Via portail : Entra ID Admin Center > Protection > Actions protégées
# Vérifier que les opérations critiques nécessitent une force d'authentification phishing-resistant

Remédiation :

  1. Entra ID Admin Center > Protection > Actions protégées
  2. Créer un groupe d’actions protégées : sélectionner les opérations critiques
  3. Assigner la force d’authentification “Phishing-resistant MFA” (FIDO2 / Certificate-based)
  4. Actions prioritaires à protéger :
    • Supprimer une politique d’accès conditionnel
    • Modifier les paramètres d’autorisation
    • Assigner des rôles PIM permanents
    • Modifier la fédération d’identité
  5. Tester que la ré-authentification step-up est bien déclenchée

Valeur par défaut : Aucune action protégée configurée — les opérations sensibles n’exigent pas de step-up auth.


1.13 Global Secure Access (Microsoft Entra Internet/Private Access)


1.13.1 — Déployer Microsoft Entra Internet Access (Secure Web Gateway cloud-natif)

Niveau : 🟡 Moyen Référence : Microsoft Entra Suite — Zero Trust Architecture Licence requise : Entra Suite ou Microsoft 365 E5

Description : Microsoft Entra Internet Access est un Secure Web Gateway (SWG) cloud-natif intégré à Entra ID. Il filtre le trafic Internet, applique les politiques CA au niveau réseau et implémente les Tenant Restrictions v2 sans proxy traditionnel. Cas d’usage critiques : bloquer l’accès aux tenants M365 non autorisés depuis les appareils d’entreprise (prévention de l’exfiltration via tenant personnel), filtrer les sites malveillants, surveiller le shadow IT.

Vérification :

  • Microsoft Entra Admin Center > Global Secure Access > Tableau de bord
  • Vérifier le profil de transfert “Internet Access” et le nombre d’utilisateurs connectés
  • Entra Admin Center > Global Secure Access > Trafic > Journaux réseau

Remédiation :

  1. Entra Admin Center > Global Secure Access > Démarrage > Activer Global Secure Access
  2. Activer le profil de transfert de trafic “Internet Access”
  3. Déployer le client Global Secure Access via Intune (Windows 10/11)
  4. Configurer le filtrage de contenu web (catégories : malware, phishing, adulte, Shadow IT)
  5. Activer la protection avancée contre les menaces web
  6. Configurer Tenant Restrictions v2 via le profil Global Secure Access

Valeur par défaut : Non déployé — nécessite une activation et une licence spécifique.


1.13.2 — Remplacer le VPN traditionnel par Microsoft Entra Private Access (ZTNA)

Niveau : 🟡 Moyen Référence : NIST SP 800-207 — Zero Trust Architecture Licence requise : Entra Suite

Description : Microsoft Entra Private Access est un Zero Trust Network Access (ZTNA) qui remplace le VPN en autorisant l’accès aux ressources privées on-premises (applications métier, fichiers réseau, serveurs) basé sur l’identité et la conformité de l’appareil — et non sur l’appartenance au réseau. Contrairement au VPN, il n’accorde pas l’accès à tout le réseau : seules les applications spécifiquement publiées sont accessibles, réduisant drastiquement le mouvement latéral possible en cas de compromission.

Vérification :

  • Entra Admin Center > Global Secure Access > Private Access
  • Vérifier les Application Segments configurés et les connecteurs déployés

Remédiation :

  1. Entra Admin Center > Global Secure Access > Private Access
  2. Créer des Application Segments pour chaque ressource interne (IP/FQDN + port)
  3. Déployer des connecteurs Entra Private Access sur le réseau interne (Windows ou Linux)
  4. Migrer progressivement les cas d’usage VPN vers Private Access
  5. Appliquer des politiques CA : conformité appareil + MFA pour chaque accès

Valeur par défaut : Non déployé — VPN traditionnel sans contrôle d’identité granulaire.


1.14 Lifecycle Workflows — Automatisation Joiner/Mover/Leaver


1.14.1 — Automatiser l’offboarding (Leaver) via Lifecycle Workflows Entra ID

Niveau : 🟠 Élevé Référence : Entra ID Governance P2 — CISA Zero Trust Licence requise : Entra ID Governance (P2)

Description : Les Lifecycle Workflows automatisent les processus d’offboarding : désactivation du compte à J0, révocation des sessions actives, retrait des groupes sensibles, notification au manager, suppression différée. Sans cette automatisation, les offboardings manuels génèrent des comptes actifs plusieurs jours après le départ d’un employé et des accès non révoqués — source principale de comptes “zombies” exploitables.

Vérification :

# Lister les Lifecycle Workflows actifs de type Leaver
$workflows = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/lifecycleWorkflows/workflows" -Method GET
$leaverWorkflows = $workflows.value | Where-Object { $_.category -eq "leaver" }
if ($leaverWorkflows) {
    $leaverWorkflows | Select-Object displayName, isEnabled, @{N="Tasks";E={$_.tasks.Count}} | Format-Table
    Write-Host "✅ $($leaverWorkflows.Count) workflow(s) Leaver configuré(s)" -ForegroundColor Green
} else {
    Write-Host "❌ Aucun Lifecycle Workflow Leaver configuré" -ForegroundColor Red
}

Remédiation :

  1. Entra ID Admin Center > Gouvernance des identités > Lifecycle Workflows
  2. Créer un workflow “Leaver” avec les tâches ordonnées :
    • J0 : Désactiver le compte utilisateur
    • J0 : Révoquer toutes les sessions actives
    • J0 : Retirer des groupes sensibles
    • J0 : Envoyer notification au manager
    • J+7 : Supprimer les licences
    • J+30 : Supprimer le compte (ou J+90 selon politique RH)
  3. Connecter à la date de départ via attribut employeeLeaveDateTime
  4. Tester en mode simulation avant activation

Valeur par défaut : Aucun Lifecycle Workflow configuré — offboarding 100% manuel, risque de délai.


1.14.2 — Configurer les Lifecycle Workflows pour les Joiners (onboarding + TAP automatique)

Niveau : 🟡 Moyen Référence : Entra ID Governance P2 Licence requise : Entra ID Governance (P2)

Description : Les workflows Joiner créent automatiquement un Temporary Access Pass (TAP) pour l’enrôlement MFA à J-1, assignent les licences selon le département et ajoutent l’utilisateur aux groupes appropriés. Sans automatisation, les délais d’onboarding et les erreurs d’assignation de droits sont fréquents. Le TAP automatique garantit que les nouveaux arrivants enrôlent une méthode MFA forte dès le premier jour sans passer par le helpdesk.

Vérification :

$workflows = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/identityGovernance/lifecycleWorkflows/workflows" -Method GET
$joinerWorkflows = $workflows.value | Where-Object { $_.category -eq "joiner" }
$joinerWorkflows | Select-Object displayName, isEnabled, @{N="Tasks";E={$_.tasks.Count}} | Format-Table

Remédiation :

  1. Créer un workflow “Joiner” déclenchant J-1 avant la date d’arrivée :
    • J-1 : Générer un TAP (valable 24h, utilisation unique)
    • J-1 : Envoyer email de bienvenue au manager avec le TAP
    • J0 : Assigner les licences selon le département
    • J0 : Ajouter aux groupes appropriés
  2. Connecter à la date d’arrivée via attribut employeeHireDate
  3. Activer la tâche “Activer le compte” uniquement le jour J (pas avant)

Valeur par défaut : Aucun workflow Joiner — provisioning 100% manuel.


1.15 Unités Administratives et Délégation Granulaire


1.15.1 — Implémenter des Restricted Management AUs pour protéger les comptes critiques

Niveau : 🟠 Élevé Référence : Entra ID P1 Licence requise : Entra ID P1

Description : Les Unités Administratives Restreintes (Restricted Management Administrative Units) placent des comptes dans une “zone de protection maximale” : même les Global Administrators ne peuvent pas modifier les paramètres, réinitialiser les mots de passe ou désactiver les méthodes d’authentification des membres sans être gestionnaires de l’AU. C’est la protection la plus forte pour les comptes Break Glass, les comptes RSSI et les comptes SOC — un attaquant ayant compromis un Global Admin ne peut pas neutraliser ces comptes.

Vérification :

# Lister les Restricted Management AUs
$aus = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits?`$filter=isMemberManagementRestricted eq true" -Method GET
if ($aus.value.Count -gt 0) {
    Write-Host "✅ $($aus.value.Count) Restricted Management AU(s) configurée(s)" -ForegroundColor Green
    foreach ($au in $aus.value) {
        $members = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/$($au.id)/members" -Method GET
        Write-Host "  AU: $($au.displayName) — $($members.value.Count) membre(s) protégé(s)"
    }
} else {
    Write-Host "❌ Aucune Restricted Management AU — comptes critiques non protégés" -ForegroundColor Red
}

Remédiation :

  1. Entra ID Admin Center > Identité > Rôles et administrateurs > Unités administratives > Nouvelle AU
  2. Activer isMemberManagementRestricted = $true (Portail ou API Graph)
  3. Ajouter les membres à protéger : comptes Break Glass, compte RSSI, comptes SOC, SPs critiques
  4. Désigner des gestionnaires de l’AU dédiés (distincts des GA standard)
  5. Documenter qui peut gérer cette AU et les procédures d’accès d’urgence

Valeur par défaut : Aucune Restricted Management AU — tous les GA peuvent modifier tous les comptes sans restriction.


1.15.2 — Déléguer la gestion des utilisateurs par Unités Administratives sans droits globaux

Niveau : 🟡 Moyen Référence : CIS 5.x — Least Privilege Licence requise : Entra ID P1

Description : Les Unités Administratives permettent de déléguer la gestion des utilisateurs et des groupes par périmètre organisationnel (pays, département, filiale) sans accorder des droits sur l’ensemble du tenant. Un IT admin d’une filiale n’a besoin que de gérer les utilisateurs de sa filiale — pas d’un rôle global. Sans AUs, toute délégation nécessite un rôle tenant-wide avec surface d’attaque étendue.

Vérification :

$aus = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits" -Method GET
$aus.value | Select-Object displayName, description, membershipType | Format-Table
# Vérifier que les admins délégués n'ont PAS de rôles au niveau tenant
$scopedRoles = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits" -Method GET

Remédiation :

  1. Créer des AUs par département, filiale ou région géographique
  2. Assigner le rôle “User Administrator” ou “Helpdesk Administrator” limité à l’AU (pas au tenant)
  3. Révoquer les rôles globaux des administrateurs locaux qui n’en ont pas besoin
  4. Configurer des AUs dynamiques si la structure est basée sur des attributs AD (department, country)

Valeur par défaut : Aucune AU configurée — délégation au niveau tenant uniquement.


1.16 Santé, Recommandations et Conformité Entra ID


1.16.1 — Activer et traiter les Recommandations de Sécurité Entra ID

Niveau : 🟠 Élevé Référence : Entra ID — Built-in Recommendations Licence requise : Entra ID P2

Description : Microsoft Entra ID génère automatiquement des recommandations de sécurité personnalisées basées sur l’analyse en temps réel du tenant : “X utilisateurs admin sans MFA résistant au phishing”, “X applications avec secrets expirés”, “Per-user MFA encore actif pour Y comptes”. Ces recommandations sont priorisées par impact. Les ignorer laisse des lacunes connues et documentées non traitées, ce qui constitue une faute de gestion en cas d’incident.

Vérification :

# Lister les recommandations actives haute priorité
$recommendations = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/directory/recommendations" -Method GET
$active = $recommendations.value | Where-Object { $_.status -notin @("completedBySystem","completedByUser","dismissed") }
Write-Host "Recommandations actives non traitées : $($active.Count)"
$active | Sort-Object priority | Select-Object displayName, status, priority, @{N="Impact";E={$_.impactedResources.Count}} | Format-Table
# Résultat attendu : 0 recommandation haute priorité en statut actif

Remédiation :

  1. Entra ID Admin Center > Identité > Vue d’ensemble > Recommandations
  2. Trier par priorité (Critique / Élevé)
  3. Traiter chaque recommandation selon les instructions Microsoft intégrées
  4. Recommandations non applicables : les “Ignorer” avec justification documentée
  5. Révision mensuelle des nouvelles recommandations générées

Valeur par défaut : Recommandations générées mais aucune action automatique — elles restent actives indéfiniment.


1.16.2 — Surveiller la santé de la synchronisation Entra Connect (Connect Health)

Niveau : 🟠 Élevé Référence : CIS 5.1.8.x — Manual Licence requise : Entra ID P1 Applicabilité : Environnements hybrides uniquement

Description : Entra Connect Health surveille la santé des serveurs de synchronisation AD. Un problème non détecté peut entraîner : des comptes désactivés on-premises qui restent actifs dans le cloud (accès fantôme persistant), des mots de passe non synchronisés (écart AD/Entra exploitable), ou des groupes de sécurité incorrects. La latence de synchronisation > 30 minutes est souvent le premier signe d’une compromission de l’infrastructure hybride.

Vérification :

# Vérifier la latence de synchronisation via Graph
$syncState = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/directory/onPremisesSynchronization" -Method GET -ErrorAction SilentlyContinue
$syncState.value | Select-Object lastSyncDateTime, synchronizationClientErrorCount | Format-Table
# Via portail : Entra ID > Surveillance et santé > Entra Connect Health > Alertes actives

Remédiation :

  1. Installer l’agent Entra Connect Health sur tous les serveurs Entra Connect / Cloud Sync
  2. Configurer des alertes email (SOC ou RSSI) pour les erreurs de synchronisation
  3. Objectif : délai de synchronisation ≤ 30 minutes, 0 objets en quarantaine
  4. Vérifier quotidiennement : erreurs d’exportation, objets en conflit, agents déconnectés
  5. Configurer une alerte si la synchronisation s’arrête > 1 heure

Valeur par défaut : Connect Health doit être installé manuellement — aucune surveillance sans agent.


1.17 PIM pour Groupes et Gestion des Comptes de Service


1.17.1 — Activer PIM pour les Groupes d’Accès Privilégiés (PIM for Groups)

Niveau : 🟠 Élevé Référence : Entra ID P2 (PIM) Licence requise : Entra ID P2

Description : PIM for Groups étend le contrôle Just-In-Time (JIT) au-delà des rôles Entra ID vers les groupes de sécurité : groupes donnant accès aux applications SaaS, aux ressources Azure, ou aux rôles personnalisés. Un groupe “Finance-Admins” donnant accès aux environnements de production financiers peut être géré via PIM — les membres ne sont actifs que lorsqu’ils ont besoin de cet accès, avec approbation et justification documentée. Les memberships permanents créent une surface d’attaque inutile.

Vérification :

# Lister les groupes gérés via PIM for Groups
$privilegedGroups = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/privilegedAccess/aadGroups/resources?`$filter=status eq 'Active'" -Method GET -ErrorAction SilentlyContinue
Write-Host "Groupes gérés via PIM for Groups : $($privilegedGroups.value.Count)"
$privilegedGroups.value | Select-Object displayName, status | Format-Table

# Identifier les groupes candidats (avec app role assignments, non gérés par PIM)
Get-MgGroup -Filter "securityEnabled eq true" -All | ForEach-Object {
    $assignments = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/groups/$($_.Id)/appRoleAssignments" -Method GET
    if ($assignments.value.Count -gt 0) {
        [PSCustomObject]@{ Group = $_.DisplayName; AppRoles = $assignments.value.Count }
    }
} | Sort-Object AppRoles -Descending | Format-Table

Remédiation :

  1. Entra ID > Gestion des identités > Privileged Identity Management > Groupes
  2. Identifier les groupes sensibles (accès applicatifs élevés, rôles custom, accès Azure)
  3. “Gérer” → activer la gestion PIM pour ces groupes
  4. Configurer : durée d’activation max = 4h, approbation requise, justification obligatoire
  5. Convertir les membres permanents en membres “Éligibles”

Valeur par défaut : Groupes de sécurité sans contrôle JIT — memberships permanents par défaut.


1.17.2 — Migrer les comptes de service avec mots de passe vers Managed Identities ou Workload Federation

Niveau : 🟠 Élevé Référence : CIS 5.x / CISA Zero Trust — Automated Licence requise : Entra ID Free + Azure

Description : Les comptes de service avec mots de passe sont une cible privilégiée : mots de passe rarement changés, souvent exclus du MFA et des politiques CA, rarement surveillés. Microsoft recommande de migrer vers les Managed Identities (ressources Azure) ou les Workload Identity Federations (CI/CD et applications externes). Ces alternatives éliminent complètement les mots de passe — l’identité est cryptographiquement liée à la ressource, aucun secret ne peut être volé ou rejoué.

Vérification :

# Comptes utilisateurs ressemblant à des comptes de service actifs
Get-MgUser -All -Property "UserPrincipalName,DisplayName,SignInActivity,AccountEnabled" |
    Where-Object {
        ($_.UserPrincipalName -match "svc|service|bot|auto|system|app|api") -and
        $_.AccountEnabled -eq $true
    } | Select-Object UserPrincipalName, @{N="LastSignIn";E={$_.SignInActivity.LastSignInDateTime}} | Format-Table

# Service Principals avec password credentials à migrer
Get-MgServicePrincipal -All -Property "DisplayName,PasswordCredentials" |
    Where-Object { $_.PasswordCredentials.Count -gt 0 } |
    Select-Object DisplayName, @{N="NbSecrets";E={$_.PasswordCredentials.Count}},
        @{N="ExpirationLaPlusProche";E={($_.PasswordCredentials | Sort-Object EndDateTime | Select-Object -First 1).EndDateTime}} |
    Format-Table

Remédiation :

  1. Inventorier tous les comptes de service avec mots de passe et leur propriétaire
  2. Migrer vers Managed Identity si ressource Azure (VM, Function App, Logic App)
  3. Migrer vers Workload Identity Federation si CI/CD (GitHub Actions, Azure DevOps, GitLab)
  4. Pour les cas impossibles à migrer : secret rotatif < 90j + exclusion CA documentée + alerte sur usage
  5. Supprimer immédiatement les comptes de service inactifs depuis > 90 jours

Valeur par défaut : Aucune restriction — comptes de service avec mots de passe en persistance indéfinie.


1.18 Workload Identity Federations et CI/CD Security


1.18.1 — Auditer les Federated Identity Credentials (OIDC) pour CI/CD

Niveau : 🔴 Critique Référence : Entra ID Free — CISA Zero Trust Licence requise : Entra ID Free

Description : Les Workload Identity Federations (GitHub Actions, Azure DevOps, GitLab, Kubernetes) permettent aux pipelines CI/CD de s’authentifier dans Entra ID via des tokens OIDC éphémères — sans secret stocké. C’est une excellente pratique, mais une mauvaise configuration (audience trop large, subject trop générique comme repo:org/*) permet à un attaquant ayant accès à n’importe quel repo de l’organisation d’obtenir un token valide vers le tenant M365. C’est un vecteur d’attaque supply chain critique en 2026.

Vérification :

# Lister toutes les Federated Identity Credentials configurées
$apps = Get-MgApplication -All -Property "displayName,federatedIdentityCredentials"
$apps | Where-Object { $_.FederatedIdentityCredentials.Count -gt 0 } | ForEach-Object {
    $app = $_
    $app.FederatedIdentityCredentials | ForEach-Object {
        [PSCustomObject]@{
            App      = $app.DisplayName
            Name     = $_.Name
            Issuer   = $_.Issuer
            Subject  = $_.Subject
            Audience = $_.Audiences -join ","
        }
    }
} | Format-Table
# Alertes : Subject contenant "*", "repo:org/*", ou audience non standard

Remédiation :

  1. Revoir chaque Federated Credential et vérifier que le Subject est précis (ex: repo:org/repo:environment:prod)
  2. Supprimer les credentials avec Subject trop large (* ou repo:org/*)
  3. Vérifier que l’Audience est api://AzureADTokenExchange uniquement
  4. Limiter les permissions de l’App Registration associée au strict minimum
  5. Documenter chaque Federated Credential avec son propriétaire et son use case

Valeur par défaut : Aucune validation des claims — Subject et Audience non contraints par défaut.


1.18.2 — Restreindre les permissions des App Registrations utilisées par les pipelines CI/CD

Niveau : 🟠 Élevé Référence : CIS 5.x — Least Privilege Licence requise : Entra ID Free

Description : Les App Registrations utilisées par les pipelines CI/CD (déploiement, tests automatisés, provisioning) accumulent souvent des permissions Graph élevées pour “simplifier” les workflows. Une pipeline compromise ou un token OIDC mal configuré peut alors exécuter des opérations critiques (créer des comptes, modifier des politiques CA, exfiltrer des données). Le principe du moindre privilège doit s’appliquer strictement aux identités CI/CD.

Vérification :

# Apps utilisées en CI/CD avec permissions Graph élevées
$dangerousPerms = @("Directory.ReadWrite.All","RoleManagement.ReadWrite.Directory","Application.ReadWrite.All","User.ReadWrite.All")
$apps = Get-MgApplication -All
foreach ($app in $apps) {
    $graphPerms = $app.RequiredResourceAccess |
        Where-Object { $_.ResourceAppId -eq "00000003-0000-0000-c000-000000000000" } |
        Select-Object -ExpandProperty ResourceAccess
    $high = $graphPerms | Where-Object { $_.Id -in $dangerousPerms }
    if ($high) {
        Write-Host "⚠️ $($app.DisplayName) — Permissions élevées : $($high.Id -join ', ')" -ForegroundColor Red
    }
}

Remédiation :

  1. Inventorier toutes les App Registrations liées aux pipelines CI/CD
  2. Remplacer les permissions ReadWrite par des permissions ReadOnly si possible
  3. Utiliser des rôles personnalisés Entra ID avec permissions minimales
  4. Revoir trimestriellement les permissions des apps CI/CD avec le responsable DevOps

Valeur par défaut : Aucune restriction spécifique aux apps CI/CD — elles peuvent demander toutes les permissions.


SECTION 2 — MICROSOFT DEFENDER FOR OFFICE 365


2.1 Politiques de Sécurité Prédéfinies (Preset Security Policies)


2.1.1 — Activer les politiques de sécurité Standard et Stricte

Niveau : 🔴 Critique Référence CISA SCuBA : MS.DEFENDER.1.1v1, MS.DEFENDER.1.2v1, MS.DEFENDER.1.3v1

Description : Microsoft propose des politiques de sécurité prédéfinies (Standard et Stricte) qui regroupent en un seul clic toutes les configurations optimales anti-spam, anti-phishing, anti-malware, Safe Attachments et Safe Links, alignées sur les recommandations Microsoft. Elles simplifient la configuration et garantissent un niveau de protection cohérent. La politique Stricte doit s’appliquer aux utilisateurs les plus sensibles.

Vérification :

  • Portail Microsoft Defender > Email & Collaboration > Politiques > Politiques de sécurité prédéfinies
  • Vérifier que Standard Protection et Strict Protection sont activées

Remédiation :

  1. Portail Defender > Email & Collaboration > Politiques & Règles > Stratégies contre les menaces > Stratégies de sécurité prédéfinies
  2. Activer “Protection standard” → Assigner à : Tous les destinataires
  3. Activer “Protection stricte” → Assigner à : Utilisateurs sensibles (Direction, Finance, RH, IT)
  4. EOP (Exchange Online Protection) ET Defender for Office 365 doivent tous deux être configurés
  5. La politique stricte prend la priorité sur la standard pour les utilisateurs des deux groupes

2.1.2 — Ajouter les comptes sensibles à la politique Stricte

Niveau : 🔴 Critique Référence CISA SCuBA : MS.DEFENDER.1.4v1, MS.DEFENDER.1.5v1

Description : Les comptes des dirigeants, de la finance, des RH et du service IT sont les cibles prioritaires des attaques BEC, du spear phishing et des fraudes au président. Ces utilisateurs doivent bénéficier du niveau de protection le plus élevé (politique Stricte) avec toutes les protections contre l’usurpation d’identité activées.

Vérification :

  • Portail Defender > Politiques de sécurité prédéfinies > Protection stricte > Utilisateurs, groupes et domaines inclus

Remédiation :

  1. Dans la politique Stricte, ajouter explicitement :
    • Tous les membres de la direction (PDG, DAF, DRH, DSI, RSSI, etc.)
    • Tous les membres de l’équipe finance et comptabilité
    • Tous les administrateurs IT et sécurité
    • Tout utilisateur avec accès à des systèmes critiques
  2. Créer un groupe Entra ID “Utilisateurs Protection Stricte” pour faciliter la gestion

2.2 Protection Anti-Phishing


2.2.1 — Configurer les politiques Anti-Phishing

Niveau : 🔴 Critique Référence CIS : CIS Control 9.2 Licence requise : Defender for Office 365 Plan 1 ou 2

Description : Les attaques de phishing représentent le vecteur d’intrusion n°1 dans les organisations. Les politiques anti-phishing de Defender for Office 365 incluent la protection contre l’usurpation d’identité (impersonation) de domaines et d’utilisateurs clés, ainsi que des fonctionnalités d’intelligence sur les boîtes mail.

Vérification :

  • Portail Microsoft Defender > Email & Collaboration > Politiques > Anti-phishing
  • Vérifier la politique par défaut et les politiques personnalisées
  • PowerShell :
Get-AntiPhishPolicy | Select-Object Name, Enabled, PhishThresholdLevel, EnableTargetedUserProtection, EnableOrganizationDomainsProtection, EnableMailboxIntelligence

Remédiation :

  1. Niveau de seuil de phishing : 3 (Agressif) ou 2 (Standard) minimum
  2. Activer la protection contre l’usurpation d’identité :
    • Utilisateurs protégés : PDG, DAF, DG, RSSI (ajouter adresses explicitement)
    • Domaines protégés : activer pour les domaines de l’organisation
  3. Activer Mailbox Intelligence
  4. Activer Mailbox Intelligence pour la protection contre l’usurpation d’identité
  5. Action si usurpation détectée : Mettre en quarantaine

2.2.2 — Configurer DMARC, DKIM et SPF

Niveau : 🔴 Critique Référence CIS : CIS Control 9.2

Description : Ces trois protocoles d’authentification email forment un triple rempart contre l’usurpation d’identité (spoofing). SPF définit les serveurs autorisés à envoyer des emails pour le domaine. DKIM signe cryptographiquement les messages. DMARC définit la politique en cas d’échec SPF/DKIM et permet les rapports d’abus.

Vérification :

# Vérification SPF
Resolve-DnsName -Name "_spf.domaine.com" -Type TXT
# Vérification DKIM
Get-DkimSigningConfig | Select-Object Domain, Enabled, Status
# Vérification DMARC
Resolve-DnsName -Name "_dmarc.domaine.com" -Type TXT

Ou utiliser : https://mxtoolbox.com/SuperTool.aspx

Remédiation : SPF :

v=spf1 include:spf.protection.outlook.com -all

(Le -all est obligatoire pour refuser tous les autres serveurs)

DKIM :

  1. Exchange Admin Center > Email Authentication > DKIM
  2. Activer DKIM pour chaque domaine
  3. Publier les enregistrements CNAME fournis par Microsoft dans le DNS

DMARC :

v=DMARC1; p=reject; rua=mailto:dmarc-reports@domaine.com; ruf=mailto:dmarc-forensics@domaine.com; pct=100
  • Commencer avec p=none pour observer, puis p=quarantine, puis p=reject

2.2.3 — Activer la Protection contre l’usurpation (Anti-Spoofing)

Niveau : 🔴 Critique Référence CIS : CIS Control 9.2

Description : L’anti-spoofing empêche les emails qui semblent provenir de domaines internes mais qui arrivent de sources externes non autorisées. C’est une protection critique contre les attaques BEC.

Vérification :

Get-AntiPhishPolicy | Select-Object Name, EnableSpoofIntelligence, AuthenticationFailAction

Remédiation :

  1. Activer Spoof Intelligence dans les politiques anti-phishing
  2. Action en cas de spoofing détecté : Déplacer en dossier Courrier indésirable ou Mettre en quarantaine
  3. Réviser régulièrement le tableau de bord Spoof Intelligence pour valider/bloquer les expéditeurs légitimes

2.3 Protection Anti-Malware et Safe Attachments


2.3.1 — Activer Safe Attachments

Niveau : 🔴 Critique Référence CIS : CIS Control 9.3 Licence requise : Defender for Office 365 Plan 1 MITRE ATT&CK : T1566.001 (Phishing: Spearphishing Attachment) · T1204.002 (User Execution: Malicious File) · T1027 (Obfuscated Files or Information)

Description : Safe Attachments ouvre les pièces jointes dans un environnement sandbox isolé avant de les livrer à l’utilisateur. Cette protection est essentielle contre les malwares zero-day qui n’ont pas encore de signature antivirus connue.

Vérification :

Get-SafeAttachmentPolicy | Select-Object Name, Enable, Action, Redirect, RedirectAddress

Remédiation :

  1. Portail Defender > Email & Collaboration > Politiques > Safe Attachments
  2. Activer Safe Attachments pour tous les domaines
  3. Action : Bloquer (Block) — les pièces jointes malveillantes sont bloquées
  4. Activer Safe Attachments pour SharePoint, OneDrive et Teams
  5. Activer le rapport de malwares en temps réel

2.3.2 — Activer Safe Links

Niveau : 🔴 Critique Référence CIS : CIS Control 9.3 Licence requise : Defender for Office 365 Plan 1

Description : Safe Links réécrit les URLs dans les emails et les documents Office pour passer par le service de vérification Microsoft au moment du clic. Cela protège contre les liens malveillants, même ceux qui deviennent malveillants après la livraison de l’email (time-of-click protection).

Vérification :

Get-SafeLinksPolicy | Select-Object Name, IsEnabled, EnableForInternalSenders, EnableSafeLinksForTeams, TrackClicks, AllowClickThrough

Remédiation :

  1. Activer Safe Links pour tous les domaines et utilisateurs
  2. Activer Safe Links pour les applications Office 365
  3. Activer Safe Links pour Teams
  4. AllowClickThrough : Désactivé (l’utilisateur ne peut pas bypasser l’alerte)
  5. TrackClicks : Activé (pour les rapports)
  6. Ne PAS utiliser de liste d’exclusion (Do not rewrite URLs list) sauf exception justifiée

2.3.3 — Configurer la politique Anti-Malware avec types de fichiers étendus

Niveau : 🟠 Élevé Référence CIS : CIS Control 9.3

Description : La politique anti-malware standard de M365 peut être renforcée pour bloquer proactivement les types de fichiers à haut risque (.exe, .ps1, .vbs, .bat, .js, etc.) même sans signature malware connue.

Vérification :

Get-MalwareFilterPolicy | Select-Object Name, EnableFileFilter, FileTypes

Remédiation :

  1. Exchange Admin Center > Protection > Filtre anti-programme malveillant
  2. Activer le filtrage des types de fichiers courants
  3. Types de fichiers à bloquer minimums : .exe, .dll, .ps1, .vbs, .bat, .cmd, .com, .js, .jar, .wsf, .msi
  4. Configurer des notifications à l’administrateur pour les pièces jointes bloquées

2.4 Protection contre le Spam


2.4.1 — Configurer les politiques Anti-Spam

Niveau : 🟠 Élevé Référence CIS : CIS Control 9.2

Description : Les emails de spam sont souvent le vecteur initial des campagnes de phishing et d’infection par malware. Une politique anti-spam bien configurée réduit significativement l’exposition des utilisateurs.

Vérification :

Get-HostedContentFilterPolicy | Select-Object Name, SpamAction, HighConfidenceSpamAction, PhishSpamAction, BulkSpamAction, BulkThreshold

Remédiation :

  1. Spam Action : Mettre en quarantaine (recommandé) ou Dossier Courrier indésirable
  2. High Confidence Spam : Mettre en quarantaine
  3. Phish : Mettre en quarantaine
  4. Bulk Email : Seuil BCL ≤ 6 (niveau 4-5 recommandé pour organisations sensibles)
  5. Activer les rapports de spam pour les utilisateurs (pour signalement)

2.4.2 — Configurer l’impersonation utilisateurs ciblés (Targeted User Impersonation Protection)

Niveau : 🟠 Élevé Référence : CISA SCuBA MS.DEFENDER.2.1v1 — Automated Licence requise : Microsoft Defender for Office 365 Plan 1

Description : La protection contre l’usurpation d’identité ciblée (user impersonation) protège les comptes à haut risque (dirigeants, finances, IT) contre les emails qui imitent leur adresse ou leur nom. Un email qui semble venir du PDG mais utilise un domaine légèrement différent (ex: ceo@contoso-corp.com) peut tromper les collaborateurs. Cette protection doit être configurée pour les comptes sensibles dans la politique anti-phishing.

Vérification :

# Vérifier la protection impersonation dans les politiques anti-phishing
Get-AntiPhishPolicy | Select-Object Name, EnableTargetedUserProtection, TargetedUsersToProtect, TargetedUserProtectionAction | Format-List
# Résultat attendu : EnableTargetedUserProtection = True, TargetedUsersToProtect contient les comptes sensibles

Remédiation :

  1. Portail Defender > Email & Collaboration > Politiques > Anti-phishing
  2. Modifier la politique Stricte ou créer une politique dédiée VIP
  3. Section “Impersonation” > Activer “Activer la protection des utilisateurs”
  4. Ajouter : CEO, CFO, RSSI, DRH, responsables financiers, admins IT
  5. Action : Déplacer vers quarantaine (pas juste ajouter un conseil de sécurité)
Set-AntiPhishPolicy -Identity "Default" `
    -EnableTargetedUserProtection $true `
    -TargetedUsersToProtect @("ceo@contoso.com","cfo@contoso.com") `
    -TargetedUserProtectionAction Quarantine

Valeur par défaut : Protection impersonation ciblée désactivée.


2.4.3 — Configurer l’impersonation domaines owned et partenaires clés

Niveau : 🟠 Élevé Référence : CISA SCuBA MS.DEFENDER.2.2v1 + MS.DEFENDER.2.3v1 — Automated Licence requise : Microsoft Defender for Office 365 Plan 1

Description : En complément de l’impersonation utilisateur, la protection d’impersonation de domaine protège contre les emails qui imitent vos domaines owned (ex: contoso-corp.com au lieu de contoso.com) et les domaines de vos partenaires/fournisseurs clés. C’est une couche de protection supplémentaire contre le Business Email Compromise (BEC).

Vérification :

Get-AntiPhishPolicy | Select-Object Name, EnableTargetedDomainsProtection, TargetedDomainsToProtect, EnableOrganizationDomainsProtection | Format-List
# Résultat attendu : EnableOrganizationDomainsProtection = True (domaines owned)
# TargetedDomainsToProtect = liste des domaines partenaires

Remédiation :

Set-AntiPhishPolicy -Identity "Default" `
    -EnableOrganizationDomainsProtection $true `
    -EnableTargetedDomainsProtection $true `
    -TargetedDomainsToProtect @("partner1.com","supplier.com") `
    -TargetedDomainProtectionAction Quarantine

Valeur par défaut : Protection impersonation domaine désactivée.


2.4.4 — Activer ZAP (Zero-Hour Auto Purge) pour Microsoft Teams

Niveau : 🟡 Moyen Référence : CIS M365 2.4.4 + M365-Assess DEFENDER-ZAP-001 — Automated Licence requise : Microsoft Defender for Office 365 Plan 1

Description : Le ZAP (Zero-Hour Auto Purge) pour Teams détecte et supprime automatiquement les messages malveillants envoyés dans Teams après leur délivrance. C’est le pendant du ZAP email pour Teams — si un fichier malveillant est détecté après partage dans un canal, il est automatiquement mis en quarantaine.

Vérification :

# Vérifier ZAP pour Teams
$atpPolicy = Get-AtpPolicyForO365
$atpPolicy | Select-Object Name, ZapEnabled, EnableATPForSPOTeamsODB | Format-List
# ZapEnabled doit être True

Remédiation :

Set-AtpPolicyForO365 -EnableATPForSPOTeamsODB $true -ZapEnabled $true
  • Portail Defender > Email & Collaboration > Paramètres > Paramètres Microsoft Teams > ZAP pour Teams

Valeur par défaut : ZAP Teams désactivé sur les anciens tenants.


2.4.5 — Configurer la DLP avec un périmètre complet (EXO + OD + SPO + Teams + Devices)

Niveau : 🟠 Élevé Référence : CISA SCuBA MS.DEFENDER.4.2v1 — Automated Licence requise : Microsoft 365 E3 + Purview DLP

Description : Une politique DLP doit couvrir l’ensemble des services M365 simultanément pour être efficace. Si seul Exchange est couvert, un utilisateur peut exfiltrer des données via Teams ou SharePoint. Le périmètre minimum recommandé par CISA inclut : Exchange, OneDrive, SharePoint, Teams ET les appareils (endpoint DLP).

Vérification :

Connect-IPPSSession
$dlpPolicies = Get-DlpCompliancePolicy | Where-Object { $_.Mode -eq "Enable" }
foreach ($policy in $dlpPolicies) {
    $locations = @()
    if ($policy.ExchangeLocation.Count -gt 0) { $locations += "Exchange" }
    if ($policy.SharePointLocation.Count -gt 0) { $locations += "SharePoint" }
    if ($policy.OneDriveLocation.Count -gt 0) { $locations += "OneDrive" }
    if ($policy.TeamsLocation.Count -gt 0) { $locations += "Teams" }
    if ($policy.EndpointDlpLocation.Count -gt 0) { $locations += "Devices" }
    Write-Host "$($policy.Name): $($locations -join ', ')"
}
# Résultat attendu : au moins une politique couvre les 5 locations

Remédiation :

  1. Microsoft Purview > Prévention des pertes de données > Modifier la politique existante
  2. Étendre l’emplacement à : Exchange + SharePoint + OneDrive + Teams + Appareils
  3. Vérifier que les règles existantes s’appliquent à tous les emplacements ajoutés

Valeur par défaut : DLP souvent configuré uniquement pour Exchange.


SECTION 3 — EXCHANGE ONLINE ET MESSAGERIE


3.1 Configuration de la Messagerie


3.1.1 — Désactiver le transfert automatique des emails vers des domaines externes

Niveau : 🔴 Critique Référence CIS : CIS Control 9.1 MITRE ATT&CK : T1114.003 (Email Collection: Email Forwarding Rule) · T1048 (Exfiltration Over Alternative Protocol) · T1567 (Exfiltration Over Web Service)

Description : Le transfert automatique d’emails est l’une des techniques les plus utilisées par les attaquants après compromission d’un compte. L’attaquant configure un transfert silencieux vers sa propre boîte mail pour exfiltrer durablement les communications de l’organisation.

Vérification :

Get-TransportRule | Where-Object {$_.RedirectMessageTo -ne $null -or $_.BlindCopyTo -ne $null} | Select-Object Name, RedirectMessageTo, BlindCopyTo
Get-RemoteDomain | Select-Object DomainName, AutoForwardEnabled
Get-HostedOutboundSpamFilterPolicy | Select-Object AutoForwardingMode

Remédiation :

  1. Politique de spam sortant : AutoForwardingMode = Off
  2. Remote Domain (domaine par défaut) : AutoForwardEnabled = False
  3. Créer une règle de transport pour bloquer les transferts automatiques :
    • Condition : Le message a les propriétés → Définir l’en-tête “X-MS-Exchange-Inbox-Rules-Loop”
    • Action : Rejeter avec message “Le transfert automatique d’emails vers des domaines externes est interdit”
  4. Créer une alerte pour détecter les règles de boîte mail créant des transferts

3.1.2 — Activer l’audit de la boîte mail (Mailbox Auditing)

Niveau : 🟠 Élevé Référence CIS : CIS Control 8.2

Description : L’audit des boîtes mail enregistre les actions effectuées sur les emails (lecture, suppression, transfert, accès délégué). Ces journaux sont essentiels pour les investigations forensics après incident et la détection d’accès non autorisés.

Vérification :

Get-OrganizationConfig | Select-Object AuditDisabled
Get-Mailbox -ResultSize Unlimited | Where-Object {$_.AuditEnabled -eq $false} | Select-Object UserPrincipalName, AuditEnabled

Remédiation :

  1. Activer l’audit global :
Set-OrganizationConfig -AuditDisabled $false
  1. Pour les boîtes mail non auditées :
Get-Mailbox -ResultSize Unlimited | Set-Mailbox -AuditEnabled $true -AuditAdmin Update,Copy,Move,MoveToDeletedItems,SoftDelete,HardDelete,SendAs,SendOnBehalf,MessageBind -AuditDelegate Update,Move,MoveToDeletedItems,SoftDelete,HardDelete,SendAs,SendOnBehalf -AuditOwner Update,Move,MoveToDeletedItems,SoftDelete,HardDelete,MailboxLogin
  1. Durée de rétention des journaux : 90 jours minimum (365 jours recommandé)

3.1.3 — Désactiver SMTP AUTH au niveau de l’organisation

Niveau : 🟠 Élevé Référence CIS : CIS Control 4.8

Description : SMTP AUTH (port 587 avec authentification basique) ne supporte pas le MFA et est souvent utilisé par des malwares ou des attaquants ayant compromis des credentials. Sa désactivation globale force les applications à utiliser OAuth 2.0.

Vérification :

Get-TransportConfig | Select-Object SmtpClientAuthenticationDisabled
Get-CASMailbox -ResultSize Unlimited | Where-Object {$_.SmtpClientAuthenticationDisabled -eq $false} | Select-Object UserPrincipalName

Remédiation :

  1. Désactiver SMTP AUTH globalement :
Set-TransportConfig -SmtpClientAuthenticationDisabled $true
  1. Pour les applications nécessitant SMTP AUTH (imprimantes, systèmes legacy) :
    • Créer un compte dédié avec SMTP AUTH activé uniquement pour ce compte
    • Restreindre l’envoi à un seul destinataire ou groupe
    • Surveiller l’activité de ce compte
  2. Migrer vers Microsoft Graph API pour l’envoi programmatique d’emails

3.1.4 — Configurer les connexions sécurisées TLS pour les emails entrants

Niveau : 🟡 Moyen Référence CIS : CIS Control 3.10

Description : Forcer le TLS pour les communications email entrant depuis les partenaires commerciaux clés protège contre l’interception des emails en transit (man-in-the-middle).

Vérification :

Get-ReceiveConnector | Select-Object Name, RequireTLS, TLSCertificateName
Get-TransportConfig | Select-Object TLSReceiveDomainSecureList, TLSSendDomainSecureList

Remédiation :

  1. Pour les partenaires critiques : configurer des connecteurs avec TLS obligatoire et vérification de certificat
  2. Exchange Admin Center > Flux de messagerie > Connecteurs
  3. Activer MTA-STS (Mail Transfer Agent Strict Transport Security) pour le domaine

3.1.5 — Désactiver les protocoles POP3 et IMAP4

Niveau : 🟠 Élevé Référence CIS : CIS Control 4.8

Description : POP3 et IMAP4 utilisent l’authentification basique qui ne supporte pas le MFA. Ces protocoles hérités doivent être désactivés sauf nécessité absolue documentée.

Vérification :

Get-CASMailboxPlan | Select-Object DisplayName, PopEnabled, ImapEnabled
Get-CASMailbox -ResultSize Unlimited | Where-Object {$_.PopEnabled -eq $true -or $_.ImapEnabled -eq $true} | Select-Object UserPrincipalName, PopEnabled, ImapEnabled

Remédiation :

Set-CASMailboxPlan -Identity ExchangeOnlineEnterprise -PopEnabled $false -ImapEnabled $false
Get-CASMailbox -ResultSize Unlimited | Set-CASMailbox -PopEnabled $false -ImapEnabled $false

3.1.6 — Implémenter les avertissements d’expéditeur externe

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.EXO.7.1v1 Référence : BOD 25-01

Description : Signaler visuellement les emails provenant de l’extérieur de l’organisation réduit le risque de phishing interne (usurpation d’identité d’un collègue ou d’un dirigeant). Un utilisateur averti qu’il reçoit un email externe sera plus méfiant avant de cliquer sur un lien ou ouvrir une pièce jointe.

Vérification :

Get-TransportRule | Where-Object {$_.Name -like "*external*" -or $_.PrependSubject -like "*[Externe]*"} | Select-Object Name, State, PrependSubject

Remédiation :

  1. Exchange Admin Center > Règles de flux de messagerie > Créer une règle
  2. Condition : “L’expéditeur se trouve” → À l’extérieur de l’organisation
  3. ET : “Le destinataire se trouve” → À l’intérieur de l’organisation
  4. Action : Insérer une clause d’exclusion de responsabilité → ⚠️ ATTENTION : Cet email provient d'un expéditeur externe à l'organisation.
  5. Ou : Ajouter le préfixe [EXTERNE] au sujet de l’email
  6. Exception : Exclure les domaines partenaires connus si souhaité (pour éviter la lassitude des utilisateurs)

3.1.7 — Désactiver les listes d’autorisation IP dans les politiques anti-spam

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.EXO.12.1v1, MS.EXO.12.2v1

Description : Les listes d’autorisation d’adresses IP dans les politiques anti-spam font passer les emails de ces IPs sans aucun filtrage de spam, phishing ou malware. Ces IPs peuvent changer de propriétaire, être compromises, ou être utilisées pour du “trusted sender abuse”. Les listes “safe” (expéditeurs approuvés) ont le même problème.

Vérification :

# Vérifier la liste blanche IP dans la politique de filtre de connexion
Get-HostedConnectionFilterPolicy | Select-Object Name, IPAllowList, EnableSafeList

Remédiation :

  1. Portail Defender > Email & Collaboration > Politiques > Anti-spam > Politique de filtre de connexion
  2. IPAllowList : Supprimer toutes les entrées
  3. EnableSafeList : Désactiver
  4. Si des IPs doivent être autorisées pour des raisons légitimes : utiliser les règles de transport avec filtrage maintenu plutôt que l’bypass total

3.1.8 — Activer la purge automatique Zero-Hour (ZAP)

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.EXO.10.3v1

Description : ZAP (Zero-Hour Auto Purge) permet à Microsoft Defender de reclassifier et retirer des boîtes mail des emails qui ont été initialement livrés mais reconnus ultérieurement comme malveillants (malware, phishing). Cette protection post-livraison est essentielle car les IOCs de nouveaux malwares peuvent n’être disponibles qu’après la livraison initiale.

Vérification :

Get-HostedContentFilterPolicy | Select-Object Name, ZapEnabled
Get-MalwareFilterPolicy | Select-Object Name, ZapEnabled

Remédiation :

  1. Portail Defender > Email & Collaboration > Politiques > Anti-spam
  2. ZAP pour les spams : Activé
  3. ZAP pour le phishing : Activé
  4. Anti-malware : ZAP également activé par défaut, vérifier qu’il n’a pas été désactivé

3.1.9 — Ne pas ajouter de domaines dans les listes d’autorisation anti-spam

Niveau : 🔴 Critique Référence CISA SCuBA : MS.EXO.14.3v1

Description : Ajouter des domaines entiers en liste blanche anti-spam est extrêmement dangereux : tout email prétendant venir de ce domaine (y compris des spoofs) passera le filtrage. Même les domaines partenaires de confiance ne doivent pas être en liste blanche, car ils peuvent être compromis et utilisés pour envoyer des spams ou du phishing vers l’organisation.

Vérification :

Get-HostedContentFilterPolicy | Select-Object Name, AllowedSenderDomains

Doit retourner : vide / aucune entrée

Remédiation :

  1. Portail Defender > Email & Collaboration > Politiques > Anti-spam
  2. Dans chaque politique > Expéditeurs autorisés et domaines autorisés → Supprimer tous les domaines autorisés
  3. Pour les partenaires légitimes qui rencontrent des faux positifs : utiliser des règles de transport ciblées ou des connecteurs entrants avec TLS, plutôt qu’une liste blanche

3.1.10 — Activer le chiffrement des emails sensibles (OME)

Niveau : 🟡 Moyen Référence CIS : CIS Control 3.10 Licence requise : Microsoft 365 E3 ou supérieur

Description : Office Message Encryption (OME) chiffre automatiquement les emails contenant des informations sensibles (données personnelles, financières, médicales) pour protéger leur contenu en cas d’interception ou d’envoi à un mauvais destinataire.

Vérification :

Get-OMEConfiguration | Select-Object Identity, OTPEnabled, SocialIdSignIn
Get-TransportRule | Where-Object {$_.ApplyRightsProtectionTemplate -ne $null} | Select-Object Name

Remédiation :

  1. Activer Azure Information Protection (AIP)
  2. Créer des règles de transport pour le chiffrement automatique basé sur des mots clés ou classifications de données
  3. Former les utilisateurs à l’utilisation du chiffrement manuel

3.1.11 — Valider DMARC p=reject (pas seulement p=none)

Niveau : 🔴 Critique Référence : CISA SCuBA MS.EXO.4.2v1 + 365Inspect (Inspect-DMARCPolicyAction) — Automated Licence requise : Entra ID Free (DNS public)

Description : Avoir un enregistrement DMARC avec p=none signifie uniquement monitoring — les emails qui échouent DMARC sont quand même délivrés. Ce n’est PAS une protection. Seul p=reject (ou p=quarantine comme étape transitoire) protège contre l’usurpation de domaine. La grande majorité des organisations ont p=none et croient être protégées.

Vérification :

# Vérifier DMARC pour tous les domaines acceptés
$acceptedDomains = Get-AcceptedDomain
foreach ($domain in $acceptedDomains.DomainName) {
    try {
        $dmarc = Resolve-DnsName -Name "_dmarc.$domain" -Type TXT -ErrorAction Stop
        $dmarcRecord = ($dmarc.Strings | Where-Object { $_ -like "v=DMARC1*" }) -join ""
        $policy = if ($dmarcRecord -match "p=(\w+)") { $Matches[1] } else { "ABSENT" }
        $color = if ($policy -eq "reject") { "Green" } elseif ($policy -eq "quarantine") { "Yellow" } else { "Red" }
        Write-Host "$domain : p=$policy" -ForegroundColor $color
    } catch { Write-Host "$domain : DMARC ABSENT" -ForegroundColor Red }
}

Résultat attendu : p=reject pour tous les domaines (ou p=quarantine comme étape de transition documentée)

Remédiation :

  1. Démarrer avec p=none + rua=mailto:dmarc-reports@votre-domaine.com pour collecter les rapports
  2. Analyser les rapports (outil : DMARC Analyzer, dmarcian, Valimail)
  3. Passer à p=quarantine après validation (0% de faux positifs)
  4. Passer à p=reject une fois stable
  5. _dmarc.contoso.com TXT "v=DMARC1; p=reject; rua=mailto:dmarc@contoso.com; ruf=mailto:dmarc@contoso.com; pct=100"

Valeur par défaut : DMARC souvent absent ou p=none — aucune protection réelle.


3.1.12 — Valider SPF avec hard fail (-all) et non soft fail (~all)

Niveau : 🟠 Élevé Référence : CIS + 365Inspect (Inspect-SPFSoftFail) — Automated

Description : Un enregistrement SPF avec ~all (soft fail / tilde) indique aux serveurs destinataires que les emails hors périmètre sont “suspects mais pas rejetés” — ils sont souvent quand même délivrés. Seul -all (hard fail / tiret) indique un rejet. La grande majorité des organisations utilisent ~all par précaution, laissant le spoofing possible.

Vérification :

$acceptedDomains = Get-AcceptedDomain
foreach ($domain in $acceptedDomains.DomainName) {
    try {
        $spf = Resolve-DnsName -Name $domain -Type TXT -ErrorAction Stop
        $spfRecord = ($spf.Strings | Where-Object { $_ -like "v=spf1*" }) -join ""
        if ($spfRecord -match "-all") { Write-Host "✅ $domain : SPF hard fail (-all)" -ForegroundColor Green }
        elseif ($spfRecord -match "~all") { Write-Host "⚠️ $domain : SPF soft fail (~all) — protection incomplète" -ForegroundColor Yellow }
        else { Write-Host "❌ $domain : SPF absent ou mal configuré" -ForegroundColor Red }
    } catch { Write-Host "❌ $domain : Erreur DNS" -ForegroundColor Red }
}

Remédiation :

  1. Identifier tous les serveurs légitimes d’envoi d’emails pour votre domaine
  2. Lister les IPs/services autorisés dans le SPF (include:, ip4:, ip6:)
  3. Remplacer ~all par -all dans tous les enregistrements SPF
  4. Tester avec des outils SPF checker avant publication

Valeur par défaut : ~all (soft fail) — souvent utilisé pour éviter les faux positifs.


3.1.13 — Vérifier les 7 alertes obligatoires Microsoft (MS.EXO.16.1)

Niveau : 🟠 Élevé Référence : CISA SCuBA MS.EXO.16.1v1 — Automated Licence requise : Microsoft 365 E3

Description : La CISA exige que 7 alertes spécifiques soient activées et configurées pour envoyer des notifications. Ces alertes couvrent les événements de sécurité les plus critiques : détection de malware, activités suspectes dans la boîte mail, connexions depuis des pays inhabituels, etc.

Vérification :

Connect-IPPSSession
$requiredAlerts = @(
    "Email messages containing malware removed after delivery",
    "Email messages containing phish URLs removed after delivery",
    "Email reported by user as malware or phish",
    "Suspicious email sending patterns detected",
    "Unusual increase in email reported as phish",
    "Messages have been delayed",
    "Tenant restricted from sending email"
)
$existingAlerts = Get-ProtectionAlert | Where-Object { $_.IsSystemPolicy -eq $false -or $_.Disabled -eq $false }
foreach ($required in $requiredAlerts) {
    $found = $existingAlerts | Where-Object { $_.Name -like "*$required*" -and -not $_.Disabled }
    Write-Host "$(if($found){'✅'}else{'❌'}) $required"
}

Remédiation :

  1. Microsoft Purview > Alertes > Gérer les politiques d’alerte
  2. Vérifier que les 7 alertes CISA sont activées avec notifications email
  3. Configurer les notifications vers une adresse surveillée (SOC, équipe sécurité)
  4. Les alertes doivent être envoyées vers un SIEM ou une adresse monitored H24

Valeur par défaut : Certaines alertes système activées, mais pas nécessairement les 7 requises.


3.1.14 — Activer les conseils de sécurité “First Contact” et Mailbox Intelligence

Niveau : 🟡 Moyen Référence : CISA SCuBA MS.EXO.11.2v1 + MS.EXO.11.3v1 + ORCA.241 — Automated Licence requise : Microsoft Defender for Office 365 Plan 1

Description : Les conseils de sécurité “First Contact” alertent l’utilisateur lorsqu’il reçoit pour la première fois un email d’un expéditeur. La Mailbox Intelligence utilise l’IA pour identifier les expéditeurs inhabituels. Ces deux fonctionnalités réduisent significativement le risque de BEC et de phishing en alertant l’utilisateur avant qu’il ne réponde ou clique.

Vérification :

Get-AntiPhishPolicy | Select-Object Name, EnableFirstContactSafetyTips, EnableMailboxIntelligence, EnableMailboxIntelligenceProtection | Format-Table
# Résultat attendu : EnableFirstContactSafetyTips = True, EnableMailboxIntelligence = True

Remédiation :

Set-AntiPhishPolicy -Identity "Default" `
    -EnableFirstContactSafetyTips $true `
    -EnableMailboxIntelligence $true `
    -EnableMailboxIntelligenceProtection $true `
    -MailboxIntelligenceProtectionAction MoveToJmf

Valeur par défaut : First Contact Safety Tips désactivé, Mailbox Intelligence activé mais sans protection.


3.1.15 — Bloquer les règles de transport bypass pour la simulation de phishing (PhishSim)

Niveau : 🟠 Élevé Référence : 365Inspect (Inspect-SimPhish) — Manual Licence requise : Microsoft Defender for Office 365 Plan 2

Description : Les règles de transport créées pour contourner Safe Attachments/Safe Links lors de simulations de phishing (Attack Simulator) utilisent souvent des IPs ou des domaines de prestataires. Si ces IPs/domaines sont connus, un vrai attaquant peut les usurper pour que ses emails passent dans les règles de bypass. Ces règles doivent être limitées aux IPs légitimes du prestataire de simulation et révisées régulièrement.

Vérification :

# Identifier les règles qui bypassent Safe Attachments ou Safe Links
Get-TransportRule | Where-Object {
    $_.SetHeaderName -eq "X-MS-Exchange-Organization-SkipSafeAttachmentProcessing" -or
    $_.SetHeaderName -eq "X-MS-Exchange-Organization-SkipSafeLinksProcessing" -or
    $_.SetSCL -eq -1
} | Select-Object Name, State, Conditions, SetHeaderName | Format-List

Remédiation :

  1. Identifier toutes les règles bypass Safe Attachments/Safe Links
  2. Vérifier qu’elles sont uniquement liées à des IPs de prestataires de simulation connus
  3. Supprimer les règles inutilisées ou génériques (conditions trop larges)
  4. Utiliser la fonctionnalité native “Attack Simulation Training” de Microsoft qui ne nécessite pas de règles de transport

Valeur par défaut : Les règles bypass sont créées manuellement — aucune restriction par défaut.


3.1.16 — Configurer ARC (Authenticated Received Chain) pour les flux d’emails complexes

Niveau : 🟡 Moyen Référence : ORCA.243 — Manual Licence requise : Exchange Online

Description : ARC (Authenticated Received Chain) préserve les résultats d’authentification email (SPF/DKIM/DMARC) lorsque les emails transitent par des intermédiaires légitimes (filtres anti-spam tiers, services de routage). Sans ARC, les emails légitimes réacheminés peuvent échouer DMARC et être rejetés ou marqués comme spam.

Vérification :

# Vérifier les sealers ARC de confiance configurés
Get-ArcConfig | Format-List
# Ou via :
Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/admin/edge/internetExplorerMode/siteLists" -Method GET -ErrorAction SilentlyContinue
Get-TransportConfig | Select-Object ArcTrustedSealers

Remédiation :

  1. Exchange Admin Center > Mail flow > Paramètres ARC
  2. Ajouter les domaines des intermédiaires légitimes comme ARC sealers de confiance
  3. Vérifier régulièrement les rapports DMARC pour identifier les échecs liés au réacheminement

Valeur par défaut : Aucun ARC sealer de confiance configuré.


3.1.17 — Auditer les délégations de boîte mail (Send As, Full Access, Send on Behalf)

Niveau : 🟠 Élevé Référence : 365Inspect (Inspect-EXOSendAsPermissions + EXOFullAccess) + M365-Assess — Automated Licence requise : Exchange Online

Description : Les délégations de boîte mail (Full Access, Send As, Send on Behalf) accordent à d’autres utilisateurs des droits d’accès complets à une boîte mail. Ces délégations s’accumulent dans le temps et sont rarement révoquées. Un attaquant qui compromet un compte avec délégation sur une boîte VIP peut envoyer des emails au nom du dirigeant ou lire tous ses emails en toute discrétion.

Vérification :

# Audit complet des délégations Send As
Get-Mailbox -ResultSize Unlimited | ForEach-Object {
    $mbx = $_
    $sendAs = Get-RecipientPermission -Identity $mbx.Identity -AccessRights SendAs | Where-Object { $_.Trustee -ne "NT AUTHORITY\SELF" }
    $fullAccess = Get-MailboxPermission -Identity $mbx.Identity | Where-Object { $_.AccessRights -contains "FullAccess" -and $_.User -notlike "*SELF*" -and $_.User -notlike "*S-1-5*" }
    if ($sendAs -or $fullAccess) {
        Write-Host "📬 $($mbx.DisplayName)" -ForegroundColor Yellow
        $sendAs | ForEach-Object { Write-Host "  Send As: $($_.Trustee)" }
        $fullAccess | ForEach-Object { Write-Host "  Full Access: $($_.User)" }
    }
}

Remédiation :

  1. Inventorier toutes les délégations actives
  2. Supprimer les délégations non justifiées ou liées à d’anciens employés
  3. Documenter les délégations légitimes (assistants direction, secrétariats)
  4. Révision semestrielle des délégations

Valeur par défaut : Délégations accumulées sans révision périodique.


3.2 Gestion des Calendriers et du Partage


3.2.1 — Restreindre le partage de calendriers avec des domaines externes

Niveau : 🟡 Moyen Référence CIS : CIS Control 3.3

Description : Un calendrier partagé avec des domaines externes peut révéler des informations sensibles : présence/absence des dirigeants, sujets de réunions confidentielles, participants à des négociations stratégiques.

Vérification :

Get-SharingPolicy | Select-Object Name, Enabled, Domains

Remédiation :

  1. Restreindre le partage à “Disponibilité uniquement” (FreeBusy) pour les domaines externes non partenaires
  2. Créer des politiques de partage spécifiques pour les partenaires de confiance
  3. Interdire le partage “Détails complets” avec des domaines non approuvés

3.2.2 — Interdire le partage de dossiers de contacts avec des domaines externes

Niveau : 🟠 Élevé Référence CIS : MS.EXO.6.1v1 / CIS 6.2 Profile : E3 Level 1

Description : Les dossiers de contacts Exchange partagés avec des domaines externes exposent l’annuaire interne de l’organisation : noms, fonctions, numéros de téléphone, adresses email. Ces informations sont exploitables pour des campagnes de spear phishing et de social engineering.

Vérification :

Get-SharingPolicy | Select-Object Name, Enabled, Domains
# Vérifier qu'aucune politique n'autorise ContactsSharing vers des domaines All

Remédiation :

# Modifier la politique de partage par défaut pour interdire ContactsSharing
Set-SharingPolicy -Identity "Default Sharing Policy" -Domains "Anonymous:CalendarSharingFreeBusySimple" # Retirer ContactsSharing

3.2.3 — Restreindre le partage de calendriers aux domaines de confiance spécifiés (whitelist)

Niveau : 🟠 Élevé Référence CIS : MS.EXO.6.1v1 — Automated Profile : E3 Level 1

Description : Les contrôles 3.2.1 et 3.2.2 restreignent le type d’information partageable (calendrier/contacts). Ce contrôle va plus loin en limitant les domaines vers lesquels le partage est autorisé. Sans whitelist, tout domaine externe peut recevoir des informations de disponibilité, même si le partage de données complètes est bloqué. Une liste de domaines de confiance approuvés garantit que seuls les partenaires connus peuvent voir les calendriers.

Vérification :

# Vérifier la politique de partage par défaut et les domaines autorisés
Get-SharingPolicy | Select-Object Name, Enabled, Domains | Format-List
# Résultat attendu : Domains contient uniquement des domaines partenaires explicites, pas "Anonymous" ou "*"

Remédiation :

  1. Exchange Admin Center > Flux de messagerie > Politiques de partage
  2. Modifier “Default Sharing Policy” pour limiter aux domaines de confiance
  3. Créer des politiques de partage spécifiques par partenaire si nécessaire
# Limiter aux domaines approuvés
Set-SharingPolicy -Identity "Default Sharing Policy" -Domains "partenaire1.com:CalendarSharingFreeBusySimple","partenaire2.com:CalendarSharingFreeBusySimple"
  1. Désactiver la politique par défaut si aucun partage externe n’est nécessaire

Valeur par défaut : Partage autorisé vers tous les domaines selon le type configuré.


3.2.4 — Désactiver les réponses automatiques d’absence du bureau (OOF) vers les domaines externes

Niveau : 🟡 Moyen Référence CIS : MS.EXO.6.1v1 — Automated Profile : E3 Level 1

Description : Les messages d’absence du bureau (Out-of-Office) envoyés automatiquement vers l’extérieur divulguent des informations exploitables : dates de congé, nom et contact du remplaçant, numéros de téléphone internes, structure hiérarchique. Ces informations facilitent les attaques BEC ciblées (usurpation d’identité pendant l’absence d’un décideur) et le spear phishing. Exchange peut être configuré pour n’envoyer les OOF qu’en interne.

Vérification :

# Vérifier la politique OOF au niveau tenant
Get-RemoteDomain -Identity "Default" | Select-Object DomainName, AutoReplyEnabled, AutoForwardEnabled
# Résultat attendu : AutoReplyEnabled = False pour le domaine Default (externe)

# Vérifier aussi les remote domains spécifiques
Get-RemoteDomain | Select-Object DomainName, AutoReplyEnabled | Format-Table

Remédiation :

# Désactiver les OOF automatiques vers l'extérieur
Set-RemoteDomain -Identity "Default" -AutoReplyEnabled $false
# Appliquer à tous les remote domains
Get-RemoteDomain | Set-RemoteDomain -AutoReplyEnabled $false

Exchange Admin Center > Flux de messagerie > Domaines distants > Modifier “Default” > désactiver “Autoriser les réponses automatiques”

Valeur par défaut : AutoReplyEnabled = True — les OOF sont envoyés vers tous les domaines externes.


3.2.5 — Bloquer la connexion directe aux boîtes aux lettres partagées

Niveau : 🔴 Critique Référence CIS : CIS 1.2.2 (L1) — Automated Profile : E3 Level 1

Description : Les boîtes partagées ne doivent pas permettre de connexion directe avec un mot de passe. Si la connexion est activée, un attaquant peut se connecter directement avec les identifiants de la boîte partagée, contournant la traçabilité (qui a fait quoi). L’accès doit uniquement être possible via permissions déléguées.

Vérification :

Connect-ExchangeOnline
$SharedMailboxes = Get-EXOMailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited
$SharedMailboxes | ForEach-Object {
    Get-MgUser -UserId $_.ExternalDirectoryObjectId -Property DisplayName,UserPrincipalName,AccountEnabled
} | Where-Object { $_.AccountEnabled -eq $true } | ft DisplayName, UserPrincipalName, AccountEnabled
# Résultat attendu : aucune boîte partagée avec AccountEnabled = True

Remédiation :

# Désactiver la connexion pour toutes les boîtes partagées
$SharedMBX = Get-EXOMailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited
$SharedMBX | ForEach-Object {
    Update-MgUser -UserId $_.ExternalDirectoryObjectId -AccountEnabled:$false
}

3.2.6 — Vérifier qu’aucune règle de transport n’autorise des domaines entiers

Niveau : 🔴 Critique Référence CIS : CIS 6.2.2 (L1) — Automated Profile : E3 Level 1

Description : Des règles de transport qui fixent le niveau de confiance spam (SCL) à -1 pour des domaines entiers contournent complètement le filtrage anti-spam pour ces domaines. Si un domaine autorisé est compromis, tous les emails malveillants depuis ce domaine atteignent directement les boîtes sans filtrage.

Vérification :

Get-TransportRule | Where-Object { $_.SetSCL -eq -1 -and $_.SenderDomainIs -ne $null } |
    ft Name, SenderDomainIs, SetSCL
# Résultat attendu : aucune règle retournée

Remédiation :

  1. Supprimer toutes les règles de transport qui autorisent des domaines entiers via SCL=-1
  2. Si un besoin de partenaire existe, utiliser plutôt des connecteurs avec TLS mutuellement authentifié
# Identifier et supprimer
Get-TransportRule | Where-Object { $_.SetSCL -eq -1 } | Remove-TransportRule -Confirm:$true

3.2.7 — Désactiver AuditBypassEnabled sur toutes les boîtes aux lettres

Niveau : 🔴 Critique Référence CIS : CIS 6.1.3 (L1) — Automated Profile : E3 Level 1 MITRE ATT&CK : T1562.008 (Impair Defenses: Disable Cloud Logs) · T1070 (Indicator Removal) · T1562 (Impair Defenses)

Description : La propriété AuditBypassEnabled désactive l’audit pour une boîte spécifique. Des outils de migration ou des comptes de service peuvent activer ce contournement, créant des zones aveugles dans la surveillance de sécurité. Aucune boîte ne devrait avoir ce paramètre activé.

Vérification :

Get-MailboxAuditBypassAssociation -ResultSize Unlimited |
    Where-Object { $_.AuditBypassEnabled -eq $true } |
    ft Name, AuditBypassEnabled
# Résultat attendu : aucune boîte retournée

Remédiation :

# Corriger toutes les boîtes avec AuditBypass activé
Get-MailboxAuditBypassAssociation -ResultSize Unlimited |
    Where-Object { $_.AuditBypassEnabled -eq $true } |
    ForEach-Object { Set-MailboxAuditBypassAssociation -Identity $_.Name -AuditBypassEnabled $false }

3.2.8 — Configurer des limites d’envoi dans la politique anti-spam sortant

Niveau : 🟠 Élevé Référence CIS : CIS 2.1.15 (L1) — Automated Profile : E3 Level 1

Description : La politique anti-spam sortant doit définir des limites sur le nombre de destinataires par heure et par jour. Sans ces limites, un compte compromis peut envoyer des milliers de spams/phishings en quelques heures, nuisant à la réputation du domaine et pouvant conduire à son blacklistage.

Vérification :

Get-HostedOutboundSpamFilterPolicy -Identity Default |
    Select-Object RecipientLimitExternalPerHour, RecipientLimitInternalPerHour,
    RecipientLimitPerDay, ActionWhenThresholdReached
# Valeurs recommandées : ≤500 externe/h, ≤1000 interne/h, ≤1000/jour, ActionWhenThresholdReached = BlockUser

Remédiation :

Set-HostedOutboundSpamFilterPolicy -Identity Default `
    -RecipientLimitExternalPerHour 500 `
    -RecipientLimitInternalPerHour 1000 `
    -RecipientLimitPerDay 1000 `
    -ActionWhenThresholdReached BlockUser `
    -NotifyOutboundSpam $true `
    -NotifyOutboundSpamRecipients @("security@votredomaine.com")

3.2.9 — Désactiver la liste sûre du filtre de connexion

Niveau : 🟠 Élevé Référence CIS : CIS 2.1.13 (L1) — Automated Profile : E3 Level 1

Description : La “liste sûre” (SafeList) du filtre de connexion est une liste maintenue par Microsoft de soi-disant expéditeurs de confiance. Si elle est activée, les emails de ces expéditeurs contournent le filtrage anti-spam. Cette liste est gérée par Microsoft et peut inclure des expéditeurs compromis ou mal configurés.

Vérification :

Get-HostedConnectionFilterPolicy -Identity Default | Select-Object EnableSafeList
# Valeur attendue : False

Remédiation :

Set-HostedConnectionFilterPolicy -Identity Default -EnableSafeList $false

3.2.10 — Activer les notifications pour les malwares envoyés par des utilisateurs internes

Niveau : 🟠 Élevé Référence CIS : CIS 2.1.3 (L1) — Automated Profile : E3 Level 1

Description : Quand un malware est détecté dans un email envoyé par un utilisateur interne, l’administrateur doit être notifié immédiatement. Cela permet de détecter rapidement un compte compromis ou un appareil infecté avant que la propagation ne s’élargisse dans l’organisation.

Vérification :

Get-MalwareFilterPolicy | Select-Object Identity, EnableInternalSenderAdminNotifications, InternalSenderAdminAddress
# Valeur attendue : EnableInternalSenderAdminNotifications = True et adresse admin configurée

Remédiation :

Set-MalwareFilterPolicy -Identity Default `
    -EnableInternalSenderAdminNotifications $true `
    -InternalSenderAdminAddress "security@votredomaine.com"

3.2.11 — Détecter et bloquer les règles de boîte de réception malveillantes (Inbox Rules)

Niveau : 🔴 Critique Référence CIS : CIS 6.2.4 (L1) — Automated Référence CISA SCuBA : MS.EXO.8.1v1 MITRE ATT&CK : T1114.003 (Email Collection: Email Forwarding Rule) · T1074 (Data Staged) · T1564.008 (Hide Artifacts: Email Hiding Rules) Profile : E3 Level 1

Description : Les règles de boîte de réception malveillantes sont l’un des indicateurs les plus fiables d’une compromission BEC (Business Email Compromise). Après avoir compromis un compte, les attaquants créent des règles qui : (1) redirigent les emails vers des dossiers masqués, (2) transfèrent les emails vers des comptes externes, (3) suppriment automatiquement les alertes de sécurité. Ces règles permettent à l’attaquant de maintenir un accès persistant discret pendant des semaines ou des mois.

Vérification :

# Détecter les règles de redirection/transfert automatique suspectes
$mailboxes = Get-Mailbox -ResultSize Unlimited
foreach ($mailbox in $mailboxes) {
    $rules = Get-InboxRule -Mailbox $mailbox.UserPrincipalName -IncludeHidden -ErrorAction SilentlyContinue
    $suspiciousRules = $rules | Where-Object {
        $_.ForwardTo -ne $null -or
        $_.ForwardAsAttachmentTo -ne $null -or
        $_.RedirectTo -ne $null -or
        ($_.DeleteMessage -eq $true -and $_.SubjectContainsWords -match "security|alert|breach|phish|invoice|wire|payment")
    }
    if ($suspiciousRules) {
        Write-Host "⚠️ Règle suspecte sur: $($mailbox.UserPrincipalName)" -ForegroundColor Red
        $suspiciousRules | Select-Object Name, ForwardTo, RedirectTo, DeleteMessage | Format-Table
    }
}

Remédiation :

  1. Investiguer et supprimer toutes les règles de redirection vers des domaines externes non légitimes
  2. Configurer une alerte de sécurité Microsoft 365 sur la création/modification de règles de boîte de réception
  3. Bloquer le forwarding automatique vers l’externe (déjà couvert par 3.1.1 — vérifier que la règle de transport est en place)
  4. Activer Microsoft Defender for Office 365 pour la détection des règles suspectes
  5. Surveiller via le journal d’audit : Search-UnifiedAuditLog -Operations "New-InboxRule","Set-InboxRule","UpdateInboxRules"
  6. En cas de règle suspecte confirmée : initier la procédure de réponse aux incidents BEC

Valeur par défaut : Aucune détection automatique des règles de boîte de réception malveillantes.


SECTION 4 — MICROSOFT TEAMS


4.1 Sécurité des Communications Teams


4.1.1 — Restreindre l’accès des invités (Guest Access)

Niveau : 🟠 Élevé Référence CIS : CIS Control 3.3

Description : L’accès invité dans Teams permet à des utilisateurs externes de rejoindre des équipes et d’accéder à des conversations, fichiers et réunions. Sans restriction, des informations sensibles peuvent être partagées accidentellement avec des personnes non autorisées.

Vérification :

  • Teams Admin Center > Paramètres à l’échelle de l’organisation > Accès invité
  • PowerShell :
Get-CsTeamsClientConfiguration | Select-Object AllowGuestUser
(Get-MgPolicyAuthorizationPolicy).AllowInvitesFrom

Remédiation :

  1. Teams Admin Center > Accès invité : Configurer les autorisations spécifiques
  2. Désactiver pour les invités : appels privés, partage vidéo (selon politique interne)
  3. Activer le processus d’approbation pour l’ajout d’invités (via Entra ID)
  4. Révision périodique des comptes invités actifs via Access Reviews
  5. Définir une expiration automatique des comptes invités (ex: 90 jours)

4.1.2 — Restreindre l’accès externe (Federation)

Niveau : 🟡 Moyen Référence CIS : CIS Control 3.3

Description : L’accès externe (fédération) permet aux utilisateurs Teams de communiquer avec des utilisateurs d’autres organisations Teams ou Skype. Sans liste blanche de domaines autorisés, tout domaine externe peut contacter vos utilisateurs, créant un vecteur de phishing via Teams.

Vérification :

Get-CsTenantFederationConfiguration | Select-Object AllowFederatedUsers, AllowedDomains, BlockedDomains

Remédiation :

  1. Teams Admin Center > Paramètres > Accès externe
  2. Choisir entre : Autoriser tous les domaines externes (déconseillé) OU Autoriser uniquement les domaines spécifiques
  3. Si autorisation large : activer le blocage des domaines connus malveillants
  4. Désactiver l’accès depuis Skype Consumer si non nécessaire

4.1.3 — Sécuriser les réunions Teams

Niveau : 🟡 Moyen Référence CIS : CIS Control 3.3

Description : Les réunions Teams peuvent être rejointes par des participants non authentifiés si elles sont mal configurées. Des attaquants peuvent se joindre à des réunions sensibles ou injecter du contenu malveillant.

Vérification :

Get-CsTeamsMeetingPolicy | Select-Object Identity, AllowAnonymousUsersToJoinMeeting, AutoAdmittedUsers, AllowCloudRecording

Remédiation :

  1. AllowAnonymousUsersToJoinMeeting : Désactivé (ou activé avec salle d’attente obligatoire)
  2. AutoAdmittedUsers : EveryoneInCompanyExcludingGuests (les invités passent par la salle d’attente)
  3. AllowExternalParticipantGiveRequestControl : Désactivé
  4. DesignatedPresenterRoleMode : OrganizerOnlyUserOverride (seul l’organisateur est présentateur par défaut)

4.1.4 — Désactiver l’intégration Email dans les canaux Teams

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.TEAMS.4.1v1 Référence : BOD 25-01

Description : L’intégration email dans Teams permet d’envoyer des emails directement dans un canal Teams via une adresse email générée. Cette fonctionnalité contourne les politiques de filtrage des emails et peut permettre l’injection de contenu malveillant dans des canaux Teams sans passer par les protections Exchange/Defender.

Vérification :

Get-CsTeamsClientConfiguration | Select-Object AllowEmailIntoChannel

Remédiation :

  1. Teams Admin Center > Teams > Paramètres Teams > Email integration
  2. “Les utilisateurs peuvent envoyer des emails à une adresse email de canal” : Désactivé
  3. PowerShell :
Set-CsTeamsClientConfiguration -AllowEmailIntoChannel $false

4.1.5 — Gouvernance des applications Teams

Niveau : 🟡 Moyen Référence CISA SCuBA : MS.TEAMS.5.1v2, MS.TEAMS.5.2v2, MS.TEAMS.5.3v2

Description : Les applications Teams (Microsoft Store, tierces parties, applications personnalisées) peuvent accéder aux données Teams, SharePoint et Exchange via des permissions OAuth. Sans gouvernance, des applications malveillantes ou non vérifiées peuvent être installées par n’importe quel utilisateur et obtenir un accès persistant aux données d’entreprise.

Vérification :

  • Teams Admin Center > Applications Teams > Paramètres d’application à l’échelle de l’organisation

Remédiation :

  1. Teams Admin Center > Applications Teams > Gérer les applications > Paramètres d’application à l’échelle de l’organisation
  2. Applications tierces : Désactiver les applications tierces globalement, puis activer sélectivement les applications approuvées
  3. Applications personnalisées : Restreindre à un groupe d’administrateurs valideurs
  4. Créer une liste des applications Microsoft approuvées et une liste des applications tierces autorisées
  5. Processus de validation : toute nouvelle application doit faire l’objet d’une revue sécurité avant autorisation

4.1.6 — Activer la protection contre les malwares dans Teams (Safe Attachments)

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.TEAMS.7.1v1, MS.TEAMS.7.2v1

Description : Les pièces jointes partagées dans Teams (fichiers dans les conversations et canaux) peuvent contenir des malwares. La protection Safe Attachments pour Teams scanne ces fichiers dans un sandbox avant de les rendre accessibles, comme pour les emails.

Vérification :

Get-SafeAttachmentPolicy | Select-Object Name, Enable, EnableForInternalSenders
# Vérifier également dans les paramètres globaux
  • Portail Defender > Email & Collaboration > Politiques > Safe Attachments > Paramètres globaux : “Activer Defender pour Office 365 pour SharePoint, OneDrive et Microsoft Teams”

Remédiation :

  1. Portail Defender > Safe Attachments > Paramètres globaux
  2. Activer “Activer Microsoft Defender pour Office 365 pour SharePoint, OneDrive et Microsoft Teams”
  3. Les utilisateurs seront bloqués s’ils tentent de télécharger un fichier détecté comme malveillant

4.1.7 — Activer la protection Safe Links pour Teams

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.TEAMS.8.1v1, MS.TEAMS.8.2v1

Description : Les URLs partagées dans les conversations Teams doivent être vérifiées au moment du clic, tout comme les URLs dans les emails. Des attaquants envoient des liens malveillants directement via Teams, contournant potentiellement les protections email si Safe Links n’est pas activé pour Teams.

Vérification :

Get-SafeLinksPolicy | Select-Object Name, EnableSafeLinksForTeams, TrackClicks, AllowClickThrough

Remédiation :

  1. Dans la politique Safe Links : EnableSafeLinksForTeams = $true
  2. TrackClicks = $true (suivi des clics pour les rapports)
  3. AllowClickThrough = $false (l’utilisateur ne peut pas outrepasser le blocage)

4.1.8 — Contrôler le partage d’écran dans Teams

Niveau : 🟢 Faible Référence CIS : CIS Control 3.3

Description : Le partage d’écran non contrôlé peut conduire au partage accidentel d’informations confidentielles lors de réunions avec des participants externes.

Vérification :

Get-CsTeamsMeetingPolicy | Select-Object Identity, ScreenSharingMode, AllowParticipantGiveRequestControl

Remédiation :

  1. ScreenSharingMode : SingleApplication (partage d’une seule application plutôt que tout l’écran)
  2. AllowParticipantGiveRequestControl : Désactivé pour les réunions avec invités externes
  3. Former les utilisateurs aux bonnes pratiques de partage d’écran

4.1.9 — Désactiver les 5 fournisseurs de stockage cloud tiers dans Teams

Niveau : 🟡 Moyen Référence CIS : 8.1.1 (L2) — Automated Profile : E3 Level 2

Description : Teams permet par défaut le partage de fichiers depuis 5 services cloud tiers : Box, Dropbox, Google Drive, Egnyte, ShareFile. Ces services contournent les politiques DLP, les étiquettes de sensibilité et l’audit M365. Les fichiers partagés depuis ces services ne bénéficient pas de la protection Safe Attachments et ne sont pas indexés dans Microsoft Purview.

Vérification :

Get-CsTeamsClientConfiguration | Select-Object AllowDropBox, AllowBox, AllowGoogleDrive, AllowShareFile, AllowEgnyte | Format-List
# Résultat attendu : Tous à False

Remédiation :

Set-CsTeamsClientConfiguration -AllowDropBox $false -AllowBox $false -AllowGoogleDrive $false -AllowShareFile $false -AllowEgnyte $false

Conserver uniquement SharePoint/OneDrive comme sources de fichiers approuvées.

Valeur par défaut : Tous les 5 fournisseurs tiers autorisés.


4.1.10 — Empêcher les communications avec les tenants Teams en mode trial

Niveau : 🟠 Élevé Référence CIS : 8.2.4 (L1) — Automated Profile : E3 Level 1

Description : Les tenants Teams en version d’essai (trial) ont des contrôles de sécurité moins stricts et peuvent être créés facilement par des attaquants pour tenter d’établir des communications avec votre organisation.

Vérification :

Get-CsTenantFederationConfiguration | Select-Object AllowTeamsConsumerInbound

Remédiation :

Set-CsTenantFederationConfiguration -AllowTeamsConsumerInbound $false

4.1.11 — Bloquer les utilisateurs Teams non gérés d’initier des conversations entrantes

Niveau : 🟠 Élevé Référence CIS : 8.2.3 (L1) — Automated Profile : E3 Level 1

Description : Des utilisateurs Teams non gérés (comptes personnels, Skype) peuvent initier des conversations avec vos utilisateurs si cette option n’est pas désactivée.

Vérification :

Get-CsExternalAccessPolicy -Identity Global | Select-Object EnableTeamsConsumerAccess

Remédiation :

Set-CsExternalAccessPolicy -Identity Global -EnableTeamsConsumerAccess $false

4.2 Sécurité des Réunions Teams — Contrôles Supplémentaires


4.2.1 — Empêcher les utilisateurs en appel entrant (dial-in) de bypasser le lobby

Niveau : 🟡 Moyen Référence CIS : 8.5.4 (L1) — Automated Profile : E3 Level 1

Vérification :

Get-CsTeamsMeetingPolicy -Identity Global | Select-Object AllowPSTNUsersToBypassLobby

Remédiation :

Set-CsTeamsMeetingPolicy -Identity Global -AllowPSTNUsersToBypassLobby $false

4.2.2 — Désactiver le chat de réunion pour les utilisateurs anonymes

Niveau : 🟡 Moyen Référence CIS : 8.5.5 (L2) — Automated Profile : E3 Level 2

Description : Le chat visible par des participants anonymes peut être utilisé pour partager des liens malveillants cliqués par des participants internes.

Vérification :

Get-CsTeamsMeetingPolicy -Identity Global | Select-Object MeetingChatEnabledType

Remédiation :

Set-CsTeamsMeetingPolicy -Identity Global -MeetingChatEnabledType "EnabledExceptAnonymous"

4.2.3 — Restreindre la présentation aux organisateurs et co-organisateurs

Niveau : 🟡 Moyen Référence CIS : 8.5.6 (L2) — Automated Profile : E3 Level 2

Vérification :

Get-CsTeamsMeetingPolicy -Identity Global | Select-Object DesignatedPresenterRoleMode

Remédiation :

Set-CsTeamsMeetingPolicy -Identity Global -DesignatedPresenterRoleMode "OrganizerOnlyUserOverride"

4.2.4 — Désactiver le chat avec des participants externes post-réunion

Niveau : 🟡 Moyen Référence CIS : 8.5.8 (L2) — Automated Profile : E3 Level 2

Vérification :

Get-CsTeamsMeetingPolicy -Identity Global | Select-Object AllowExternalNonTrustedMeetingChat

Remédiation :

Set-CsTeamsMeetingPolicy -Identity Global -AllowExternalNonTrustedMeetingChat $false

4.2.5 — Désactiver l’enregistrement automatique des réunions par défaut

Niveau : 🟡 Moyen Référence CIS : 8.5.9 (L2) — Automated Profile : E3 Level 2

Vérification :

Get-CsTeamsMeetingPolicy -Identity Global | Select-Object AllowCloudRecording

Remédiation :

Set-CsTeamsMeetingPolicy -Identity Global -AllowCloudRecording $false

4.2.6 — Activer le signalement de problèmes de sécurité dans Teams

Niveau : 🟡 Moyen Référence CIS : 8.6.1 (L1) — Automated Profile : E3 Level 1

Description : Permet aux utilisateurs de signaler des messages suspects directement dans Teams — les signalements arrivent dans le portail Microsoft Defender pour analyse. Ce mécanisme de signalement interne accélère la détection des campagnes de phishing ciblant l’organisation via Teams.

Vérification :

Get-CsTeamsMessagingPolicy -Identity Global | Select-Object AllowSecurityEndUserReporting
# AllowSecurityEndUserReporting doit être True

Remédiation :

Set-CsTeamsMessagingPolicy -Identity Global -AllowSecurityEndUserReporting $true

Configurer l’adresse de destination : Portail Defender > Settings > Security incident reporting.

Valeur par défaut : Signalement de sécurité Teams désactivé.

Note : Le ZAP pour Teams (Zero-Hour Auto Purge) est couvert en Section 2.4.4 (Microsoft Defender for Office 365).


4.2.7 — Désactiver la publication automatique des enregistrements de réunions Teams

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.TEAMS.3.1v1 — Automated Profile : E3 Level 1

Description : Lorsque l’enregistrement automatique des réunions est activé avec la publication automatique, tous les participants — y compris les invités et utilisateurs externes — reçoivent immédiatement un lien vers l’enregistrement. Cette configuration peut provoquer des fuites involontaires de données sensibles discutées en réunion vers des personnes non autorisées. Un seul invité non identifié dans une réunion peut ainsi obtenir l’enregistrement complet d’une réunion confidentielle.

Vérification :

Get-CsTeamsMeetingPolicy -Identity Global | Select-Object Identity, AllowCloudRecording, AutoRecording, NewMeetingRecordingExpirationDays
# Vérifier : AutoRecording = "Disabled" OU si activé, l'accès post-réunion est contrôlé
# MS.TEAMS.3.1v1 : RecordingStorageMode ne doit pas permettre l'autopublish externe

Remédiation :

  1. Teams Admin Center > Politiques de réunion > Politique globale
  2. Désactiver “Enregistrement automatique des réunions” ou configurer la restriction post-réunion
  3. Si l’enregistrement automatique est requis : configurer DesignatedPresenter = OrganizerAndCoOrganizersOnly
  4. Restreindre l’accès aux enregistrements aux membres authentifiés uniquement :
Set-CsTeamsMeetingPolicy -Identity Global `
    -AllowRecordingStorageOrStreamUpload $false
  1. Configurer la rétention/expiration automatique des enregistrements (recommandé : 60 jours)
  2. Former les organisateurs à la politique d’enregistrement et à la gestion des accès post-réunion

Valeur par défaut : Les enregistrements sont publiés automatiquement et accessibles à tous les participants sans restriction.


SECTION 5 — SHAREPOINT ONLINE ET ONEDRIVE


5.1 Partage et Permissions


5.1.1 — Restreindre le partage SharePoint/OneDrive à des domaines spécifiques

Niveau : 🟠 Élevé Référence CIS : CIS Control 3.3 MITRE ATT&CK : T1213.002 (Data from Cloud Storage: SharePoint) · T1530 (Data from Cloud Storage) · T1048.003 (Exfiltration Over Alternative Protocol: HTTP/HTTPS)

Description : Par défaut, SharePoint et OneDrive permettent le partage avec n’importe quelle adresse email externe. Restreindre le partage aux domaines partenaires approuvés réduit le risque d’exfiltration accidentelle ou malveillante de données.

Vérification :

  • SharePoint Admin Center > Partage > Paramètres de partage externe
  • PowerShell :
Get-SPOTenant | Select-Object SharingCapability, SharingDomainRestrictionMode, SharingAllowedDomainList

Remédiation :

  1. Niveau de partage externe SharePoint : Invités existants uniquement OU Invités nouveaux et existants (selon besoins)
  2. Activer la restriction par domaine : Autoriser uniquement les domaines spécifiques
  3. OneDrive : même niveau ou plus restrictif que SharePoint
  4. Désactiver “Tout le monde” (liens anonymes) pour les données sensibles

5.1.2 — Désactiver les liens de partage anonymes (“Anyone”)

Niveau : 🟠 Élevé Référence CIS : CIS Control 3.3

Description : Les liens “Anyone” permettent à toute personne possédant le lien d’accéder au fichier sans authentification. Ces liens peuvent être partagés involontairement ou interceptés, menant à une fuite de données.

Vérification :

Get-SPOTenant | Select-Object DefaultSharingLinkType, DefaultLinkPermission

Remédiation :

  1. SharePoint Admin Center > Paramètres > Partage
  2. Désactiver les liens “Toute personne” ou définir une expiration maximale (ex: 7 jours)
  3. Lien de partage par défaut : Personnes spécifiques (pas “Personnes de l’organisation”)
  4. Permissions par défaut des liens : Affichage (pas Modification)

5.1.2b — Configurer une expiration obligatoire sur tous les liens anonymes (30 jours max)

Niveau : 🔴 Critique Référence CIS : CIS 7.2.9 (L1) — Automated Référence CISA SCuBA : MS.SHAREPOINT.3.2v1 Profile : E3 Level 1

Description : Lorsque les liens anonymes (“Anyone”) ne peuvent pas être complètement désactivés pour des raisons métier, une politique d’expiration obligatoire est indispensable. Sans expiration, un lien anonyme créé aujourd’hui reste valide indéfiniment, même si l’employé quitte l’entreprise ou si le fichier ne doit plus être partagé. Un attaquant qui intercepte ce lien peut accéder aux données sans limite de temps. Configurer une expiration maximale de 30 jours (idéalement 7 jours) limite drastiquement la fenêtre d’exposition.

Vérification :

# Vérifier la durée d'expiration des liens anonymes au niveau tenant
$tenant = Get-SPOTenant
$tenant | Select-Object RequireAnonymousLinksExpireInDays, DefaultLinkPermission, DefaultSharingLinkType

# Résultat attendu :
# RequireAnonymousLinksExpireInDays : entre 1 et 30 (valeur -1 = pas d'expiration = NON CONFORME)
  • SharePoint Admin Center > Stratégies > Partage > “Ces liens doivent expirer dans ce nombre de jours”

Remédiation :

# Définir l'expiration obligatoire à 30 jours maximum (recommandé : 7 jours)
Set-SPOTenant -RequireAnonymousLinksExpireInDays 30

# Idéalement pour les environnements sensibles
Set-SPOTenant -RequireAnonymousLinksExpireInDays 7
  1. SharePoint Admin Center > Stratégies > Partage
  2. Section “Liens anonymes” > “Ces liens doivent expirer dans ce nombre de jours” = 30 (ou moins)
  3. Appliquer également la même politique au niveau de chaque site critique via :
# Appliquer sur un site spécifique
Set-SPOSite -Identity "https://contoso.sharepoint.com/sites/Finance" -AnonymousLinkExpirationInDays 7
  1. Combiner avec une politique de rappel DLP qui détecte les liens anonymes sans expiration configurée

Valeur par défaut : -1 = Aucune expiration — les liens anonymes sont valides indéfiniment.

⚠️ Point critique (365Inspect — Inspect-SharepointLinkExpiry) : Ce paramètre est l’un des contrôles les plus fréquemment trouvés non conforme lors des audits M365. La valeur par défaut est systématiquement -1 (pas d’expiration) et n’est presque jamais modifiée sans audit proactif.


5.1.3 — Activer l’accès conditionnel pour SharePoint (accès non géré)

Niveau : 🟠 Élevé Référence CIS : CIS Control 12.1

Description : Les appareils non gérés (personnels) accédant à SharePoint peuvent télécharger et stocker localement des données d’entreprise sans contrôle. La politique d’accès non géré permet de restreindre ces appareils à un accès en lecture seule ou via navigateur uniquement.

Vérification :

Get-SPOTenant | Select-Object ConditionalAccessPolicy

Remédiation :

  1. SharePoint Admin Center > Contrôle des accès > Appareils non gérés
  2. Choisir : Autoriser un accès limité (navigateur uniquement, pas de téléchargement)
  3. Ou bloquer complètement l’accès depuis des appareils non gérés

5.1.4 — Configurer la durée d’expiration des sessions SharePoint

Niveau : 🟢 Faible Référence CIS : CIS Control 4.3

Description : Des sessions SharePoint trop longues sur des appareils partagés ou non sécurisés augmentent le risque d’accès non autorisé si l’utilisateur oublie de se déconnecter.

Vérification :

Get-SPOTenant | Select-Object SignInAccelerationDomain, UsePersistentCookiesForExplorerView

Remédiation :

  1. Activer la déconnexion automatique après inactivité via Accès Conditionnel
  2. Pour les appareils non gérés : session max = 1 heure d’inactivité

5.1.5 — Configurer les permissions par défaut des liens en mode Affichage uniquement

Niveau : 🔴 Critique Référence CISA SCuBA : MS.SHAREPOINT.2.2v1 Profile : E3 Level 1

Description : Lorsqu’un utilisateur crée un lien de partage, la permission par défaut détermine si le destinataire peut modifier ou seulement consulter le fichier. Si la valeur par défaut est “Modification”, un utilisateur distrait peut partager involontairement des droits d’écriture sur des fichiers critiques. En définissant “Affichage uniquement” comme défaut, on suit le principe du moindre privilège.

Vérification :

$tenant = Get-SPOTenant
$tenant | Select-Object DefaultLinkPermission
# Valeur attendue : View (1 = View, 2 = Edit)
# Si DefaultLinkPermission = 2 (Edit) → NON CONFORME

Remédiation :

Set-SPOTenant -DefaultLinkPermission View
  1. SharePoint Admin Center > Stratégies > Partage
  2. Section “Liens de fichiers et de dossiers” > Autorisations par défaut : Affichage

Valeur par défaut : Edit (Modification) — les nouveaux liens accordent des droits d’écriture par défaut.


5.1.7 — Restreindre les liens “Anyone” à la permission Affichage uniquement

Niveau : 🔴 Critique Référence CISA SCuBA : MS.SHAREPOINT.3.2v1 Profile : E3 Level 1

Description : Même lorsque les liens anonymes (“Anyone”) sont autorisés pour des raisons métier, leur permission doit être limitée à Affichage uniquement. Un lien “Anyone” en modification permet à n’importe quelle personne possédant le lien de modifier, supprimer ou écraser des fichiers d’entreprise sans authentification.

Vérification :

$tenant = Get-SPOTenant
$tenant | Select-Object FileAnonymousLinkType, FolderAnonymousLinkType
# FileAnonymousLinkType = 1 (View) → CONFORME
# FileAnonymousLinkType = 2 (Edit) → NON CONFORME

Remédiation :

Set-SPOTenant -FileAnonymousLinkType View
Set-SPOTenant -FolderAnonymousLinkType View
  1. SharePoint Admin Center > Stratégies > Partage
  2. Section “Liens Toute personne” > Permissions : Affichage

Valeur par défaut : Edit — les liens anonymes accordent la modification par défaut.


5.1.8 — Exiger une ré-authentification périodique pour les codes de vérification email (≤ 30 jours)

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.SHAREPOINT.3.3v1 Profile : E3 Level 1

Description : Les utilisateurs externes accédant à SharePoint via un code de vérification email reçoivent un cookie de session persistant. Sans expiration configurée, ce cookie reste valide indéfiniment. Configurer une expiration à 30 jours ou moins force la ré-authentification périodique des invités, limitant la fenêtre d’exploitation d’un cookie volé.

Vérification :

$tenant = Get-SPOTenant
$tenant | Select-Object EmailAttestationRequired, EmailAttestationReAuthDays
# EmailAttestationRequired = True ET EmailAttestationReAuthDays ≤ 30 → CONFORME
# EmailAttestationRequired = False → NON CONFORME

Remédiation :

Set-SPOTenant -EmailAttestationRequired $true
Set-SPOTenant -EmailAttestationReAuthDays 30
  1. SharePoint Admin Center > Stratégies > Partage
  2. Section “Autres paramètres” > “Les personnes qui utilisent un code de vérification doivent s’authentifier de nouveau après” = 30 jours

Valeur par défaut : Ré-authentification désactivée — les cookies invités ne expirent jamais.


5.1.10 — Exiger l’authentification moderne pour SharePoint

Niveau : 🔴 Critique Référence CIS : 7.2.1 (L1) — Automated Profile : E3 Level 1

Description : SharePoint Online doit être configuré pour exiger l’authentification moderne (OAuth 2.0/OIDC). Les clients utilisant l’authentification basique contournent le MFA et l’Accès Conditionnel.

Vérification :

Get-SPOTenant | Select-Object LegacyAuthProtocolsEnabled

Doit retourner : False

Remédiation :

Set-SPOTenant -LegacyAuthProtocolsEnabled $false

5.1.11 — Activer l’intégration SharePoint/OneDrive avec Azure AD B2B

Niveau : 🟠 Élevé Référence CIS : 7.2.2 (L1) — Automated Profile : E3 Level 1

Description : L’intégration Azure AD B2B pour SharePoint et OneDrive permet d’utiliser les politiques d’accès conditionnel Entra ID pour les invités accédant aux fichiers partagés. Sans cette intégration, les invités contournent les politiques CA lors de l’accès aux liens de partage SharePoint.

Vérification :

Get-SPOTenant | Select-Object EnableAzureADB2BIntegration

Doit retourner : True

Remédiation :

Set-SPOTenant -EnableAzureADB2BIntegration $true

5.1.12 — Empêcher les invités SharePoint de partager des éléments qu’ils ne possèdent pas

Niveau : 🟠 Élevé Référence CIS : 7.2.5 (L2) — Automated Profile : E3 Level 2

Description : Par défaut, les invités peuvent repartager des fichiers ou dossiers qui ont été partagés avec eux, potentiellement avec d’autres personnes non autorisées. Cela crée des chaînes de partage incontrôlables.

Vérification :

Get-SPOTenant | Select-Object PreventExternalUsersFromResharing

Doit retourner : True

Remédiation :

Set-SPOTenant -PreventExternalUsersFromResharing $true

5.1.13 — Restreindre le partage externe SharePoint à un groupe de sécurité spécifique

Niveau : 🟠 Élevé Référence CIS : 7.2.8 (L2) + MS.SHAREPOINT.1.3v1 — Manual Profile : E3 Level 2

Description : Plutôt que d’autoriser tous les utilisateurs à partager en externe, restreindre cette capacité à un groupe de sécurité dédié (ex: “SPO-External-Sharing-Authorized”). Seuls les membres approuvés peuvent créer des liens de partage externe. Cela permet un contrôle granulaire par utilisateur et une traçabilité complète des partages externes.

Vérification :

Get-SPOTenant | Select-Object SharingAllowedDomainList, SharingBlockedDomainList, SharingDomainRestrictionMode, ExternalUserExpirationRequired | Format-List
# Vérifier aussi :
Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/groupSettings" -Method GET | ConvertTo-Json -Depth 3
  • SharePoint Admin Center > Stratégies > Partage > “Autoriser uniquement les utilisateurs de groupes de sécurité spécifiques à partager en externe”

Remédiation :

  1. SharePoint Admin Center > Stratégies > Partage
  2. Activer “Autoriser uniquement les utilisateurs d’un groupe de sécurité spécifique”
  3. Créer un groupe “SPO-External-Sharing-Authorized” avec les utilisateurs approuvés
  4. Revue trimestrielle des membres du groupe
  5. Documenter le processus d’ajout/retrait du groupe

Valeur par défaut : Tous les utilisateurs peuvent partager en externe (dans les limites du niveau de partage tenant).


5.1.14 — Configurer l’expiration automatique de l’accès guest à SharePoint/OneDrive

Niveau : 🟠 Élevé Référence CIS : 7.2.9 (L1) — Automated Profile : E3 Level 1

Description : Les accès guest SharePoint/OneDrive ne doivent pas durer indéfiniment. Une expiration automatique force la révision et le renouvellement des accès, garantissant que les ex-prestataires ou anciens partenaires perdent automatiquement l’accès.

Vérification :

Get-SPOTenant | Select-Object ExternalUserExpirationRequired, ExternalUserExpireInDays

Remédiation :

Set-SPOTenant -ExternalUserExpirationRequired $true -ExternalUserExpireInDays 60

CIS recommande 60 jours ou moins. Adapter selon la politique interne.


5.1.15 — Bloquer le téléchargement de fichiers infectés depuis SharePoint

Niveau : 🟠 Élevé Référence CIS : 7.3.1 (L2) — Automated Profile : E3 Level 2

Description : Par défaut, SharePoint peut permettre le téléchargement de fichiers détectés comme infectés (comportement attendu : afficher un avertissement mais permettre le téléchargement). La CIS recommande de bloquer complètement le téléchargement de fichiers infectés.

Vérification :

Get-SPOTenant | Select-Object DisallowInfectedFileDownload

Doit retourner : True

Remédiation :

Set-SPOTenant -DisallowInfectedFileDownload $true

5.1.16 — Restreindre la synchronisation OneDrive aux appareils gérés

Niveau : 🟠 Élevé Référence CIS : 7.3.2 (L2) — Automated Profile : E3 Level 2

Description : La synchronisation OneDrive sur des appareils non gérés (BYOD, appareils personnels) copie les données d’entreprise localement sur des machines sans contrôle Intune. En cas de compromission ou de perte de l’appareil, ces données sont exposées.

Vérification :

Get-SPOTenant | Select-Object BlockMacSync, OneDriveForGuestsEnabled
# Vérifier également la stratégie Intune pour la sync OneDrive

Remédiation :

# Restreindre la sync aux domaines Entra ID approuvés (appareils joints)
Set-SPOTenant -TenantRestrictionsDomains @("votre-tenant-id")

Ou via Intune : déployer la configuration OneDrive pour n’autoriser la sync que sur les appareils conformes.


5.1.17 — Bloquer les scripts personnalisés sur les sites SharePoint

Niveau : 🟡 Moyen Référence : M365-Assess SPO-SCRIPT-001/002 — Automated Licence requise : SharePoint Online

Description : Les scripts personnalisés (custom scripts) permettent d’exécuter du JavaScript et du code sur les sites SharePoint. Si un site SharePoint contient un script malveillant (XSS, injection), il s’exécute dans le contexte des utilisateurs qui visitent le site avec leurs credentials M365.

Vérification :

# Vérifier la politique globale des scripts personnalisés
Get-SPOTenant | Select-Object DenyAddAndCustomizePages
# DenyAddAndCustomizePages doit être True (scripts désactivés)

# Vérifier les sites spécifiques autorisant les scripts
Get-SPOSite -Limit All | Where-Object { $_.DenyAddAndCustomizePages -eq "Disabled" } | Select-Object Url, Title

Remédiation :

# Désactiver les scripts sur tous les sites
Set-SPOTenant -DenyAddAndCustomizePages $true
# Pour un site spécifique :
Set-SPOSite -Identity "https://contoso.sharepoint.com/sites/DevSite" -DenyAddAndCustomizePages Enabled

Valeur par défaut : Scripts personnalisés désactivés globalement, mais certains sites anciens peuvent avoir des exceptions.


SECTION 6 — PROTECTION DE L’INFORMATION ET CONFORMITÉ


6.1 Microsoft Purview (anciennement Compliance Center)


6.1.1 — Activer l’Audit Unifié (Unified Audit Log)

Niveau : 🔴 Critique Référence CIS : CIS Control 8.2 MITRE ATT&CK : T1562.008 (Impair Defenses: Disable Cloud Logs) · T1070.003 (Indicator Removal: Clear Command History) · T1490 (Inhibit System Recovery)

Description : L’Audit Log unifié enregistre l’ensemble des activités administratives et utilisateur dans M365 (emails, fichiers, connexions, modifications de configuration). Sans ce journal, toute investigation forensic après incident est impossible. Depuis 2023, l’audit est activé par défaut pour les nouveaux tenants, mais doit être vérifié.

Vérification :

Get-AdminAuditLogConfig | Select-Object UnifiedAuditLogIngestionEnabled

Remédiation :

Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true
  1. Vérifier que la rétention est de 90 jours (standard) ou 180/365 jours (avec licences E5/Audit Premium)
  2. Exporter les journaux vers un SIEM externe pour rétention longue durée
  3. Configurer des alertes sur les activités critiques

6.1.2 — Configurer des politiques de rétention des données

Niveau : 🟠 Élevé Référence CIS : CIS Control 3.11

Description : Les politiques de rétention permettent de conserver les données pendant la durée légale requise et de les supprimer automatiquement ensuite. Sans politiques de rétention, l’organisation risque soit de supprimer des preuves nécessaires aux investigations, soit de conserver indéfiniment des données inutiles augmentant les risques.

Vérification :

  • Microsoft Purview > Gestion du cycle de vie des données > Stratégies de rétention
  • Vérifier l’existence de politiques couvrant Exchange, SharePoint, OneDrive, Teams

Remédiation :

  1. Créer des politiques de rétention selon les exigences légales du secteur (ex: 5 ans pour données financières, 3 ans pour emails standard)
  2. Appliquer aux emplacements : Exchange, SharePoint, OneDrive, Teams Channel Messages, Teams Chats
  3. Configurer la suppression automatique après la période de rétention

6.1.3 — Activer la prévention des pertes de données (DLP)

Niveau : 🟠 Élevé Référence CIS : CIS Control 3.13

Description : Les politiques DLP détectent et empêchent le partage d’informations sensibles (numéros de carte bancaire, NIR, IBAN, données personnelles RGPD) via email, SharePoint, Teams ou OneDrive.

Vérification :

  • Microsoft Purview > Prévention des pertes de données > Stratégies
  • Vérifier les politiques actives et leurs périmètres

Remédiation :

  1. Créer des politiques DLP pour les types d’informations sensibles pertinents (RGPD France, données financières, données de santé)
  2. Actions recommandées : Bloquer le partage externe, notifier l’utilisateur, alerter l’administrateur
  3. Activer en mode simulation d’abord pour mesurer le volume de faux positifs
  4. Couvrir : Exchange, SharePoint, OneDrive, Teams, Endpoints (si Defender for Endpoint)

6.1.4 — Activer les étiquettes de sensibilité (Sensitivity Labels)

Niveau : 🟡 Moyen Référence CIS : CIS Control 3.1 Licence requise : Microsoft 365 E3 ou supérieur avec AIP P1

Description : Les étiquettes de sensibilité permettent de classifier les documents et emails selon leur niveau de confidentialité (Public, Interne, Confidentiel, Strictement Confidentiel). Ces étiquettes peuvent déclencher automatiquement des protections (chiffrement, marquage visuel, restrictions d’accès).

Vérification :

  • Microsoft Purview > Protection des informations > Étiquettes

Remédiation :

  1. Créer une taxonomie d’étiquettes adaptée à l’organisation (ex: Public / Interne / Confidentiel / Secret)
  2. Configurer les étiquettes avec : marquage visuel (en-tête, pied de page), chiffrement pour les niveaux élevés, restrictions de partage externe
  3. Déployer le client AIP ou l’étiquetage intégré dans les apps M365
  4. Activer l’étiquetage automatique pour certains types de données

6.1.5 — Activer Microsoft Purview Communication Compliance

Niveau : 🟡 Moyen Référence CIS : CIS Control 3.3 Licence requise : Microsoft 365 E5 Compliance

Description : Communication Compliance permet de détecter les communications à risque : harcèlement, divulgation d’informations confidentielles, mots clés réglementaires. Essentiel pour les secteurs financiers et régulés.

Vérification :

  • Microsoft Purview > Communication Compliance

Remédiation :

  1. Créer des politiques de surveillance pour les canaux de communication (Email, Teams)
  2. Configurer les mots clés et classifieurs appropriés au secteur
  3. Désigner des réviseurs indépendants des personnes surveillées

6.1.6 — Configurer Microsoft Purview Insider Risk Management

Niveau : 🟠 Élevé Référence CIS : CIS Control 3.3 + 13.1 Licence requise : Microsoft 365 E5 Compliance ou Microsoft 365 E5

Description : L’Insider Risk Management de Microsoft Purview détecte les comportements anormaux des utilisateurs internes qui pourraient indiquer une exfiltration de données, une sabotage volontaire ou une compromission de compte. Les indicateurs surveillés incluent : téléchargements massifs avant la démission, partages externes anormaux, accès à des données hors périmètre habituel, utilisation d’appareils USB non autorisés. Ce contrôle est particulièrement critique pour les organisations avec des données sensibles ou soumises à des exigences RGPD/NIS2.

Séquence de détection :

Déclencheur (ex: préavis HR) → Indicateurs comportementaux (téléchargements > seuil)
→ Score de risque → Alerte investigateur → Action (Legal Hold, restriction accès)

Vérification :

  • Microsoft Purview > Insider Risk Management > Tableau de bord
  • Vérifier l’existence d’au moins une politique de gestion des risques internes active
  • Vérifier que les connecteurs HR sont configurés (si disponibles)
# Vérifier via Graph API (nécessite permissions Compliance)
# Microsoft Purview > Insider Risk Management > Policies
# Vérifier : au moins 1 politique active couvrant "Data leaks" ou "Data theft by departing users"

Remédiation :

  1. Microsoft Purview > Insider Risk Management > Créer une politique
  2. Configurer en priorité les politiques :
    • Fuites de données : détection téléchargements/partages anormaux
    • Vol de données par les utilisateurs partants : déclenché par signal HR (préavis, résiliation)
  3. Configurer les seuils d’alerte adaptés à l’organisation (éviter les faux positifs)
  4. Désigner un groupe d’investigateurs IR indépendants (séparation des responsabilités)
  5. Connecter le connecteur HR RH Microsoft 365 pour les signaux de départ d’employés
  6. Activer l’intégration avec Microsoft Defender for Cloud Apps pour enrichir les signaux

Valeur par défaut : Insider Risk Management non configuré — aucune détection des comportements internes à risque.


SECTION 7 — SÉCURITÉ DES APPAREILS (INTUNE/MICROSOFT ENDPOINT MANAGER)


7.1 Gestion des Appareils


7.1.1 — Exiger le chiffrement des appareils (BitLocker)

Niveau : 🔴 Critique Référence CIS : CIS Control 3.6

Description : Le chiffrement des disques durs protège les données en cas de perte ou vol d’un appareil. Sans BitLocker, toutes les données M365 synchronisées localement sont accessibles par quiconque obtient physiquement l’appareil.

Vérification :

  • Intune > Appareils > Politiques de conformité
  • Vérifier l’existence d’une politique exigeant BitLocker

Remédiation :

  1. Intune > Sécurité des points de terminaison > Chiffrement de disque > Créer une politique
  2. Exiger BitLocker activé sur tous les appareils Windows
  3. Configurer le dépôt automatique des clés BitLocker dans Entra ID
  4. Politique de conformité : appareil non conforme (BitLocker absent) = accès bloqué

7.1.2 — Exiger un code PIN/mot de passe sur les appareils mobiles

Niveau : 🟠 Élevé Référence CIS : CIS Control 4.1

Description : Les smartphones accédant aux données M365 (email, Teams, OneDrive) doivent être protégés par un code PIN ou biométrie. Un téléphone sans verrouillage d’écran expose directement les données d’entreprise.

Vérification :

  • Intune > Appareils > Politiques de conformité > iOS/Android
  • Vérifier les exigences de verrouillage d’écran

Remédiation :

  1. Politique de conformité iOS : PIN minimum 6 caractères, biométrie acceptée
  2. Politique de conformité Android : PIN minimum 6 caractères, chiffrement exigé
  3. App Protection Policies (MAM) pour les appareils non gérés accédant aux apps M365

7.1.3 — Configurer les App Protection Policies (MAM)

Niveau : 🟠 Élevé Référence CIS : CIS Control 2.7

Description : Les politiques de protection des applications (MAM) permettent de sécuriser les données M365 sur des appareils non gérés (BYOD) sans nécessiter l’inscription MDM. Elles isolent les données d’entreprise dans un conteneur sécurisé.

Vérification :

  • Intune > Applications > Stratégies de protection des applications

Remédiation :

  1. Créer des politiques MAM pour iOS et Android ciblant les apps M365 (Outlook, Teams, OneDrive, SharePoint)
  2. Configurer : Copier/Coller restreint entre apps gérées et non gérées, Capture d’écran désactivée, Chiffrement des données app, Wipe sélectif des données d’entreprise si non conformité

7.1.4 — Activer Windows Hello for Business

Niveau : 🟡 Moyen Référence CIS : CIS Control 5.2

Description : Windows Hello for Business remplace les mots de passe par une authentification biométrique ou PIN local, et utilise des clés cryptographiques liées à l’appareil. C’est une authentification résistante au phishing car elle ne transmet pas de credentials réseau.

Vérification :

  • Intune > Appareils > Profils de configuration > Windows Hello for Business

Remédiation :

  1. Intune > Appareils > Inscription > Inscription Windows > Windows Hello for Business
  2. Activer Windows Hello for Business pour tous les appareils
  3. Exiger un PIN de 6 chiffres minimum (8 recommandé)
  4. Activer la biométrie (empreinte digitale, reconnaissance faciale)

7.1.5 — Marquer les appareils sans politique de conformité comme Non conformes

Niveau : 🟠 Élevé Référence CIS : CIS 4.1 (L2) — Automated Profile : E3 Level 2

Description : Par défaut, les appareils sans politique de conformité assignée sont marqués “Conformes” dans Intune — ce qui peut permettre un accès aux ressources protégées par Accès Conditionnel (CA) sans aucun contrôle de conformité. La configuration recommandée est “Non conforme” pour forcer l’assignation d’une politique à chaque appareil.

Vérification :

$Uri = 'https://graph.microsoft.com/v1.0/deviceManagement/settings'
(Invoke-MgGraphRequest -Uri $Uri -Method GET).secureByDefault
# Valeur attendue : True

Ou via Intune > Appareils > Conformité > Paramètres de conformité > “Appareils sans politique de conformité” = Non conforme.

Remédiation :

  1. Intune Admin Center > Appareils > Conformité > Paramètres de conformité
  2. “Marquer les appareils sans politique de conformité assignée comme” → Non conforme
  3. Déployer ensuite des politiques de conformité pour chaque plateforme (Windows, iOS, Android, macOS)

7.1.6 — Bloquer l’inscription d’appareils personnels (BYOD) par défaut

Niveau : 🟠 Élevé Référence CIS : CIS 4.2 (L2) — Automated Profile : E3 Level 2

Description : Les restrictions d’inscription permettent de bloquer l’inscription d’appareils personnels dans Intune. Un attaquant ayant compromis un compte et contourné l’Accès Conditionnel peut inscrire un appareil personnel pour obtenir un point d’ancrage persistant, simuler une conformité, et réaliser une reconnaissance ou un mouvement latéral.

Vérification :

$Uri = 'https://graph.microsoft.com/beta/deviceManagement/deviceEnrollmentConfigurations'
$Config = (Invoke-MgGraphRequest -Uri $Uri -Method GET).value |
    Where-Object { $_.id -match 'DefaultPlatformRestrictions' -and $_.priority -eq 0 }
$Config | Select-Object -ExpandProperty windowsRestriction | Select-Object personalDeviceEnrollmentBlocked
# Valeur attendue : True pour toutes les plateformes

Remédiation :

  1. Intune > Appareils > Inscription des appareils > Restriction de plateforme
  2. Politique de priorité par défaut > Modifier les paramètres de plateforme
  3. Colonne “Appareils personnels” → Bloquer pour toutes les plateformes (Windows, iOS, Android, macOS)

7.1.7 — Activer Intune Multi-Admin Approval (MAA) pour les actions critiques

Niveau : 🟠 Élevé Référence : Maester MT.1096 + M365-Assess INTUNE-MAA-001 — Automated Licence requise : Microsoft Intune Plan 1

Description : Le Multi-Admin Approval (MAA) d’Intune exige qu’une seconde approbation d’un autre administrateur soit obtenue avant d’exécuter des actions critiques (suppression massive d’appareils, modification de politiques de conformité, déploiement de scripts). Cela protège contre les erreurs humaines, les comptes admin compromis et les insider threats.

Vérification :

# Vérifier les politiques MAA Intune
$maaApprovals = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/deviceManagement/approvalWorkflowProviders" -Method GET -ErrorAction SilentlyContinue
if ($maaApprovals.value.Count -gt 0) {
    Write-Host "✅ Intune MAA configuré — $($maaApprovals.value.Count) politiques" -ForegroundColor Green
    $maaApprovals.value | Select-Object displayName, isEnabled | Format-Table
} else {
    Write-Host "❌ Intune MAA non configuré" -ForegroundColor Red
}

Remédiation :

  1. Intune Admin Center > Administration des locataires > Approbations multi-administrateur
  2. Créer des workflows d’approbation pour : Scripts, Applications, Politiques de conformité
  3. Configurer les approbateurs : au moins 2 admins distincts
  4. Les demandes expirent après 72h sans approbation

Valeur par défaut : Aucun MAA configuré — toutes les actions admin s’exécutent instantanément.


7.1.8 — Vérifier que l’autorité MDM est définie sur Intune

Niveau : 🟠 Élevé Référence : Maester MT.1105 — Automated Licence requise : Microsoft Intune

Description : L’autorité MDM détermine quelle solution gère les appareils mobiles. Si elle est définie sur “SCCM” ou “None” au lieu d’“Intune”, les politiques Intune ne s’appliquent pas aux appareils mobiles, laissant les appareils iOS/Android sans gestion.

Vérification :

$mdmAuthority = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/organization" -Method GET
$mdmAuthority.value[0] | Select-Object mobileDeviceManagementAuthority
# Valeur attendue : intune

Remédiation :

  • Intune Admin Center > Administration des locataires > Autorité MDM
  • Définir sur “Intune” si ce n’est pas déjà le cas

Valeur par défaut : Intune si déployé via M365, mais peut être défini sur SCCM en environnement hybride.


7.1.9 — Configurer le nettoyage automatique des appareils inactifs Intune

Niveau : 🟡 Moyen Référence : Maester MT.1053 — Automated Licence requise : Microsoft Intune

Description : Les appareils inscrits dans Intune mais inactifs depuis longtemps (ex: appareils d’anciens employés, appareils remplacés) consomment des licences et faussent les rapports de conformité. Une règle de nettoyage automatique supprime ces appareils après un délai configurable.

Vérification :

$cleanupRule = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDeviceCleanupSettings" -Method GET
$cleanupRule | Select-Object deviceInactivityBeforeRetirementInDays
# Valeur attendue : entre 30 et 90 jours

Remédiation :

  1. Intune Admin Center > Appareils > Règles de nettoyage des appareils
  2. Activer la règle de nettoyage automatique
  3. Seuil d’inactivité recommandé : 90 jours

Valeur par défaut : Aucune règle de nettoyage — les appareils inactifs restent indéfiniment.


7.2 Microsoft Defender for Endpoint — Durcissement


7.2.1 — Activer la protection anti-falsification (Tamper Protection)

Niveau : 🔴 Critique Référence : CIS Microsoft 365 Benchmark — Automated

Description : La Tamper Protection empêche les attaquants (et les malwares) de désactiver ou modifier les composants de Microsoft Defender Antivirus via le registre, PowerShell ou des outils tiers. Sans Tamper Protection, un attaquant ayant accès local ou via SYSTEM peut silencieusement désactiver la protection en temps réel avant d’exécuter son payload. C’est l’une des premières actions que les ransomwares modernes tentent. MITRE ATT&CK : T1562.001 (Impair Defenses: Disable or Modify Tools)

Vérification :

# Via Microsoft Graph (Intune)
$configs = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/deviceManagement/deviceConfigurations" -Method GET
$configs.value | Where-Object { $_.oDataType -match "windows10EndpointProtection" } |
    Select-Object displayName, @{N="TamperProtection"; E={ $_.defenderTamperProtection }}
# Valeur attendue : enable

Ou dans Defender Portal > Paramètres > Fonctionnalités avancées > Tamper Protection = Activé

Remédiation :

  1. Intune > Sécurité des points de terminaison > Antivirus > Créer une politique Windows Antivirus
  2. Activer Tamper Protection = Activé
  3. Appliquer à tous les groupes d’appareils Windows
  4. Vérifier via Defender Portal > Paramètres > Protection contre les falsifications

Valeur par défaut : Désactivée sur les appareils non gérés par Intune/MDE.


7.2.2 — Configurer les règles de réduction de la surface d’attaque (ASR Rules)

Niveau : 🔴 Critique Référence : CIS Microsoft 365 Benchmark + NIST SP 800-53 SI-3

Description : Les règles ASR (Attack Surface Reduction) bloquent des comportements spécifiques utilisés par les malwares : macros Office injectant du shellcode, lancement de processus fils depuis Office/Adobe, création de processus via WMI, vol de credentials depuis LSASS, etc. Ces règles sont la couche de défense la plus efficace contre les vecteurs d’attaque modernes (phishing, living-off-the-land). MITRE ATT&CK : T1566 (Phishing) · T1055 (Process Injection) · T1059 (Command and Scripting Interpreter) · T1003.001 (LSASS Memory)

Vérification :

# Vérifier les règles ASR configurées via MDE
Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids, AttackSurfaceReductionRules_Actions
# Les GUID des règles critiques et leurs actions (0=Off, 1=Block, 2=Audit, 6=Warn)

Defender Portal > Gestion de la configuration > Politiques de sécurité des points de terminaison > Règles ASR

Remédiation : Configurer via Intune (Endpoint Security > Attack Surface Reduction) les règles critiques en mode Block :

Règle GUID Mode recommandé
Bloquer les contenus exécutables des emails BE9BA2D9-… Block
Bloquer Office de créer des processus fils D4F940AB-… Block
Bloquer les injections dans d’autres processus 75668C1F-… Block
Bloquer le vol de credentials depuis LSASS 9E6C4E1F-… Block
Bloquer PowerShell obfusqué 5BEB7EFE-… Block
Bloquer les macros Win32 depuis Office 92E97FA1-… Block
Bloquer les processus issus de commandes PSExec/WMI D1E49AAC-… Block

Déploiement recommandé : démarrer en mode Audit pendant 2 semaines pour identifier les faux positifs, puis basculer en Block.

Valeur par défaut : Toutes les règles ASR désactivées.


7.2.3 — Activer la protection réseau (Network Protection)

Niveau : 🟠 Élevé Référence : CIS Microsoft 365 Benchmark

Description : La Network Protection étend les capacités de SmartScreen à tout le trafic réseau sortant, bloquant les connexions vers des domaines malveillants, serveurs C2 connus et URLs de phishing — même depuis des applications non-navigateur (PowerShell, cmd.exe, malwares custom). C’est une couche critique contre les attaques de type C2 callback. MITRE ATT&CK : T1071 (Application Layer Protocol) · T1041 (Exfiltration Over C2 Channel)

Vérification :

Get-MpPreference | Select-Object EnableNetworkProtection
# 0 = Disabled | 1 = Enabled (Block) | 2 = Audit
# Valeur attendue : 1 (Block)

Remédiation :

# Via Intune — Endpoint Security > Attack Surface Reduction > Network Protection = Block
Set-MpPreference -EnableNetworkProtection Enabled  # Pour test local uniquement
  1. Intune > Sécurité des points de terminaison > Réduction de la surface d’attaque
  2. Créer une politique > Protection réseau = Activé (mode Bloquer)
  3. Déployer sur tous les groupes d’appareils Windows gérés

Valeur par défaut : Désactivée.


7.2.4 — Configurer l’investigation et la réponse automatisées (AIR) en mode complet

Niveau : 🟠 Élevé Référence : MS.DEFENDER.1.5v1

Description : L’Automated Investigation and Response (AIR) de Microsoft Defender for Endpoint analyse automatiquement les alertes, collecte des preuves et peut remédier automatiquement aux menaces. En mode “Approbation requise” (semi-automatique), les actions de remédiation attendent une validation humaine. En mode “Automatique complet”, MDE remédie directement aux menaces non critiques, réduisant le temps de réponse de heures à minutes. MITRE ATT&CK : M1038 (Execution Prevention) · M1040 (Behavior Prevention on Endpoint)

Vérification :

  1. Defender Portal > Paramètres > Points de terminaison > Groupes d’appareils
  2. Vérifier le niveau d’automatisation de chaque groupe : valeur attendue = Complet

Remédiation :

  1. Defender Portal (security.microsoft.com) > Paramètres > Système > Groupes d’appareils
  2. Pour chaque groupe : modifier le niveau d’automatisation = Complet - corriger les menaces automatiquement
  3. S’assurer que tous les appareils sont rattachés à un groupe avec automatisation complète

Valeur par défaut : Semi-automatique (approbation requise pour la remédiation).


7.2.5 — Activer Microsoft Defender Antivirus en mode protection en temps réel

Niveau : 🔴 Critique Référence : CIS 9.4.1

Description : La protection en temps réel de Microsoft Defender Antivirus scanne les fichiers à l’ouverture, à l’écriture et à l’exécution. Sa désactivation — même temporaire — crée une fenêtre d’exposition critique. Des GPO ou scripts malveillants peuvent la désactiver. Surveiller son état via Intune garantit une couverture continue.

Vérification :

# Vérifier via Intune — Rapport de conformité antivirus
Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices?`$filter=operatingSystem eq 'Windows'" -Method GET |
    Select-Object -ExpandProperty value | Select-Object deviceName, isEncrypted, complianceState
# Ou via Defender Portal > Rapports > Appareils à risque

Remédiation :

  1. Intune > Sécurité des points de terminaison > Antivirus > Créer une politique Microsoft Defender Antivirus
  2. Activer : Protection en temps réel = Oui, Protection fournie par le cloud = Oui, Soumission automatique d’échantillons = Oui
  3. Configurer une alerte sur les appareils ayant la protection en temps réel désactivée

Valeur par défaut : Activée par défaut, mais peut être désactivée localement sans Intune.


SECTION 8 — MICROSOFT SECURE SCORE ET MONITORING


8.1 Secure Score et Alertes


8.1.1 — Atteindre et maintenir un Secure Score ≥ 50%

Niveau : 🟠 Élevé Référence CIS : CIS Control 1.1

Description : Le Microsoft Secure Score est un indicateur de la posture de sécurité du tenant M365. Un score bas indique de nombreuses mesures de sécurité non implémentées. Le score doit être mesuré régulièrement et les améliorations priorisées.

Vérification :

  • Portail Microsoft Defender > Secure Score
  • Documenter le score actuel et la tendance

Remédiation :

  1. Portail Defender > Secure Score > Actions recommandées
  2. Prioriser les actions par : Impact élevé, Facilité d’implémentation
  3. Assigner des responsables pour chaque action
  4. Définir un objectif de score cible (ex: +10 points par trimestre)
  5. Exclure les recommandations non applicables (avec justification documentée)

8.1.2 — Configurer les alertes de sécurité obligatoires Exchange/Defender

Niveau : 🔴 Critique Référence CISA SCuBA : MS.EXO.16.1v1, MS.DEFENDER.5.1v1 Référence : BOD 25-01

Description : La CISA impose l’activation d’un ensemble minimum d’alertes dans M365 pour les organisations. Ces alertes couvrent les principaux vecteurs d’attaque : compromission de comptes d’envoi, activités de connecteurs suspects, transferts d’emails malveillants, etc.

Vérification :

  • Microsoft Purview > Alertes > Stratégies d’alerte
  • Vérifier que les alertes suivantes sont actives et ont des destinataires configurés :

Liste des alertes CISA obligatoires :

1. Patterns d'envoi d'emails suspects détectés
2. Activité suspecte du connecteur
3. Activité suspecte de transfert d'emails
4. Les messages ont été retardés
5. Tenant restreint de l'envoi d'emails non provisionnés
6. Tenant restreint de l'envoi d'emails
7. Un clic sur une URL potentiellement malveillante a été détecté

Remédiation :

  1. Microsoft Purview > Alertes > Stratégies d’alerte
  2. Activer chacune des alertes listées ci-dessus
  3. Configurer les destinataires : adresse email SOC ou RSSI
  4. Tester les alertes via des simulations d’activités suspectes

8.1.3 — Configurer des alertes de sécurité personnalisées

Niveau : 🟠 Élevé Référence CIS : CIS Control 8.11

Description : Des alertes proactives permettent de détecter rapidement les incidents de sécurité : connexions suspectes, activation de règles de transfert malveillantes, tentatives de connexion depuis des pays inhabituels, alertes administratives critiques.

Vérification :

  • Microsoft Purview > Alertes > Stratégies d’alerte
  • Portail Defender > Incidents & Alertes

Remédiation :

  1. Activer les politiques d’alerte par défaut (déjà disponibles dans M365)
  2. Créer des alertes personnalisées pour :
    • Connexion depuis un pays jamais vu
    • Création de règle de transfert d’emails
    • Téléchargement massif de fichiers (> 50 fichiers en < 5 min)
    • Activation/désactivation MFA sur un compte admin
    • Connexion sur les comptes break glass
    • Attribution du rôle Global Administrator
  3. Configurer les destinataires des notifications (SOC, RSSI)

8.1.4 — Activer Microsoft Defender for Identity (si AD hybride)

Niveau : 🟠 Élevé Référence CIS : CIS Control 8.11 Licence requise : Microsoft 365 E5 ou Defender for Identity standalone

Description : Defender for Identity surveille le trafic Active Directory on-premises et dans le cloud pour détecter les comportements suspects : Golden Ticket, Pass-the-Hash, reconnaissance LDAP, escalade de privilèges.

Vérification :

  • Portail Defender > Paramètres > Identités
  • Vérifier que les capteurs sont installés sur tous les contrôleurs de domaine

Remédiation :

  1. Créer un compte de service dédié pour Defender for Identity
  2. Installer les capteurs sur tous les Domain Controllers
  3. Configurer les notifications et intégration SIEM
  4. Réviser les alertes hebdomadairement

8.1.5 — Activer Microsoft Defender for Cloud Apps (CASB)

Niveau : 🟠 Élevé Référence CIS : CIS Control 8.11 Licence requise : Microsoft 365 E5 Security

Description : Defender for Cloud Apps (anciennement MCAS) est un Cloud Access Security Broker qui permet la visibilité et le contrôle des applications cloud utilisées dans l’organisation (Shadow IT), la détection d’anomalies comportementales, et la protection contre les menaces avancées.

Vérification :

  • Portail Defender > Cloud Apps > Tableau de bord

Remédiation :

  1. Connecter les applications cloud principales (M365, Salesforce, Box, etc.)
  2. Activer Cloud Discovery pour identifier le Shadow IT
  3. Configurer des politiques d’anomalie détectant : voyage impossible, téléchargements massifs, activités depuis des adresses IP anonymes
  4. Intégrer avec Accès Conditionnel pour le contrôle d’application en temps réel

8.1.6 — Activer et configurer la protection des comptes prioritaires

Niveau : 🟠 Élevé Référence CIS : CIS 2.4.1 (L1) — Manual Profile : E5 Level 1 Licence requise : Microsoft Defender for Office 365 Plan 2

Description : La protection des comptes prioritaires offre une surveillance et une protection renforcées pour les utilisateurs à haute valeur : dirigeants, DSI, DRH, responsables financiers, comptes IT admin. Ces comptes sont les cibles privilégiées du whaling (spear-phishing ciblant les cadres dirigeants).

Vérification :

  1. Microsoft Defender > Paramètres > Email & collaboration > Protection des comptes prioritaires
  2. Vérifier que la protection est activée
  3. Microsoft Defender > Paramètres > Email & collaboration > Balises utilisateur
  4. Vérifier que les comptes critiques sont tagués “Compte prioritaire”

Remédiation :

  1. Defender > Paramètres > Email & collaboration > Protection des comptes prioritaires → Activer
  2. Defender > Paramètres > Email & collaboration > Balises utilisateur → Ajouter les dirigeants, admins IT, équipe financière comme “Comptes prioritaires”
  3. Configurer des alertes email pour les activités des comptes prioritaires

8.1.7 — Appliquer le preset de sécurité Strict aux comptes prioritaires

Niveau : 🟠 Élevé Référence CIS : CIS 2.4.2 (L1) — Automated Profile : E5 Level 1 Licence requise : Microsoft Defender for Office 365 Plan 2

Description : Les comptes prioritaires (dirigeants, IT admins) doivent bénéficier de la protection preset “Stricte” de Defender for Office 365 — le niveau le plus agressif couvrant : anti-spam, anti-malware, anti-phishing avec protection contre l’usurpation, Safe Attachments et Safe Links.

Note : Les presets ne peuvent pas cibler des balises Priority Account — utiliser des groupes de sécurité à la place.

Vérification :

  • Defender > Email & collaboration > Politiques et règles > Politiques de menaces > Politiques de sécurité prédéfinies
  • Vérifier que “Strict Preset Security Policy” inclut les groupes contenant les comptes prioritaires

Remédiation :

  1. Defender > Email & collaboration > Politiques et règles > Politiques de sécurité prédéfinies
  2. Cliquer “Gérer les paramètres de protection” pour la protection Stricte
  3. Ajouter le groupe des comptes prioritaires aux sections EOP Protection et Defender Protection
  4. Configurer la protection contre l’usurpation d’identité (usurpation d’utilisateurs internes et de domaines partenaires)

8.1.8 — Configurer des alertes d’activité pour les comptes d’accès d’urgence (Break Glass)

Niveau : 🔴 Critique Référence CIS : CIS 2.2.1 (L1) — Manual Profile : E5 Level 1

Description : Les comptes Break Glass ne doivent être utilisés qu’en cas d’urgence absolue (blocage de tous les autres admins). Toute connexion avec ces comptes doit déclencher immédiatement une alerte à l’équipe sécurité — il peut s’agir d’une urgence légitime ou d’une compromission critique.

Vérification :

  • Microsoft Defender > Politiques et règles > Gestion des alertes > Politiques d’alertes
  • Vérifier l’existence d’une alerte sur “Connexion” pour les UPNs des comptes Break Glass

Remédiation :

  1. Microsoft Defender > Politiques et règles > Gestion des alertes
  2. Créer une politique d’alerte : Activité = “Connexion réussie”, Utilisateurs = [UPN des comptes Break Glass]
  3. Configurer une notification immédiate vers le RSSI et l’équipe SOC
  4. Tester l’alerte trimestriellement en se connectant avec un compte Break Glass en conditions contrôlées

8.1.9 — Détecter les credentials admins exposés sur des endpoints vulnérables (XSPM)

Niveau : 🟠 Élevé Référence : Maester MT.1080 (XSPM) — Automated MITRE ATT&CK : T1552 (Unsecured Credentials) · T1078.004 (Valid Accounts: Cloud) · T1555 (Credentials from Password Stores) Licence requise : Microsoft Defender XDR P2

Description : Microsoft Defender Exposure Management (XSPM) détecte lorsque des credentials d’utilisateurs hautement privilégiés (Global Admins, Security Admins) ont été utilisés sur des endpoints vulnérables ou compromis. Si un admin se connecte sur un poste non patché ou infecté, ses credentials peuvent être exposés via un credential dump. Ce contrôle croise les données Defender avec les données d’identité Entra.

Vérification :

# Via l'API Defender Exposure Management
$exposedCredentials = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/security/exposureManagement/attackPaths?`$filter=contains(targetId,'GlobalAdmin')" -Method GET -ErrorAction SilentlyContinue
if ($exposedCredentials) {
    $exposedCredentials.value | Select-Object displayName, risk | Format-Table
} else {
    Write-Host "Vérifier dans le portail Microsoft Defender > Gestion de l'exposition > Chemins d'attaque"
}
  • Microsoft Defender XDR > Gestion de l’exposition > Chemins d’attaque > Filtrer par admins privilégiés

Remédiation :

  1. Identifier les endpoints vulnérables utilisés par des admins privilégiés
  2. Patcher immédiatement ou isoler ces endpoints via Intune
  3. Forcer une réinitialisation MFA et mot de passe pour les admins concernés
  4. Déployer Windows Credential Guard sur tous les postes d’administration

Valeur par défaut : Non configuré — nécessite Defender XDR P2.


8.1.10 — Implémenter la détection de dérive de configuration (Configuration Drift)

Niveau : 🟡 Moyen Référence : Maester MT.1060 — Automated Licence requise : Entra ID P1

Description : La dérive de configuration (configuration drift) survient lorsque des paramètres de sécurité sont modifiés sans suivi. Un export JSON de l’état de référence (baseline) permet de détecter les changements non autorisés. Maester propose un mécanisme de comparaison JSON automatisé via CI/CD.

Vérification :

# Exporter l'état de référence des politiques CA
$baseline = Get-MgIdentityConditionalAccessPolicy -All | ConvertTo-Json -Depth 5
$baseline | Out-File "C:\Security\CA_Baseline_$(Get-Date -Format 'yyyy-MM-dd').json"

# Comparer avec une baseline existante
$current = Get-MgIdentityConditionalAccessPolicy -All | ConvertTo-Json -Depth 5
$reference = Get-Content "C:\Security\CA_Baseline_reference.json"
if ($current -ne $reference) {
    Write-Host "⚠️ DRIFT DÉTECTÉ : les politiques CA ont changé depuis la baseline" -ForegroundColor Yellow
}

Remédiation :

  1. Créer une baseline JSON mensuelle de la configuration de sécurité (CA, auth methods, PIM)
  2. Intégrer la comparaison dans un pipeline CI/CD ou une tâche planifiée
  3. Alerter sur toute dérive non autorisée
  4. Maester peut être exécuté en mode monitoring continu pour ce contrôle

Valeur par défaut : Aucun mécanisme de détection de dérive — les changements de config passent inaperçus.


SECTION 9 — POWER PLATFORM ET AUTRES SERVICES


9.1 Power Platform


9.1.1 — Restreindre la création d’environnements de production et sandbox aux administrateurs

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.POWERPLATFORM.1.1v1 Référence : BOD 25-01 Niveau : 🟡 Moyen Référence CIS : CIS Control 4.1

Description : Par défaut, n’importe quel utilisateur avec une licence M365 peut créer des environnements Power Apps, des flux Power Automate et des applications Canvas. Des données sensibles peuvent être exportées via des connecteurs non contrôlés.

Vérification :

  • Power Platform Admin Center > Paramètres > Gouvernance > Environnements

Remédiation :

  1. Power Platform Admin Center > Paramètres > Gouvernance
  2. Restreindre la création d’environnements aux administrateurs Power Platform uniquement
  3. Désactiver les connecteurs à haut risque (connecteurs tierces parties non approuvés) via Data Loss Prevention policies
  4. Activer la journalisation des activités Power Platform

9.1.2 — Restreindre la création d’environnements d’essai (trial) aux administrateurs

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.POWERPLATFORM.1.2v1 Référence : BOD 25-01

Description : Les environnements d’essai créés par les utilisateurs échappent aux politiques DLP et de gouvernance de l’organisation, pouvant contenir des flux et applications qui manipulent des données sensibles sans contrôle.

Vérification :

  • Power Platform Admin Center > Paramètres > Environnements d’essai

Remédiation :

  1. Power Platform Admin Center > Paramètres > Gouvernance
  2. “Qui peut créer des environnements d’essai” : Uniquement les administrateurs spécifiques

9.1.3 — Activer l’isolation des tenants Power Platform

Niveau : 🟠 Élevé Référence CISA SCuBA : MS.POWERPLATFORM.3.1v1 Référence : BOD 25-01

Description : L’isolation des tenants Power Platform empêche les connecteurs Power Apps/Power Automate de l’organisation de se connecter à des tenants Entra ID externes non approuvés, et empêche des tenants externes de se connecter au tenant de l’organisation. Cela bloque l’exfiltration de données via des flux inter-tenants malveillants.

Vérification :

  • Power Platform Admin Center > Sécurité > Identité et accès > Isolation des tenants

Remédiation :

  1. Power Platform Admin Center > Sécurité > Isolation des tenants
  2. Activer “Restreindre les connexions inter-tenants”
  3. Configurer une liste d’autorisation (allowlist) pour les tenants partenaires légitimes
  4. PowerShell :
# Activer tenant isolation
$tenantSettings = Get-TenantSettings
$tenantSettings.powerPlatform.governance.disableTenantIsolation = $false
Set-TenantSettings -RequestBody $tenantSettings

9.1.4 — Activer la Content Security Policy (CSP) pour les Power Apps

Niveau : 🟡 Moyen Référence CISA SCuBA : MS.POWERPLATFORM.4.1v1

Description : La Content Security Policy (CSP) pour les Power Apps (model-driven et canvas) empêche les attaques XSS en définissant quelles sources de contenu sont autorisées à s’exécuter dans l’application. Sans CSP, du code JavaScript malveillant pourrait être injecté dans les applications Power Apps.

Vérification :

  • Power Platform Admin Center > Environnements > Paramètres > Produit > Confidentialité + Sécurité
  • Vérifier que CSP est activé pour les applications model-driven et canvas

Remédiation :

  1. Pour chaque environnement : Power Platform Admin Center > Environnements > Sélectionner l’environnement > Paramètres > Produit > Confidentialité + Sécurité
  2. Activer CSP pour les applications model-driven
  3. Activer CSP pour les applications canvas

9.1.5 — Restreindre la création de sites Power Pages aux administrateurs

Niveau : 🟡 Moyen Référence CISA SCuBA : MS.POWERPLATFORM.5.1v1

Description : Power Pages permet de créer des portails web accessibles publiquement depuis les données Dataverse. Un portail mal configuré créé par un utilisateur non averti peut exposer des données sensibles sur Internet.

Vérification :

$tenantSettings = Get-TenantSettings
$tenantSettings.powerPlatform.powerPages.disablePortalsCreationByNonAdminUsers

Doit retourner True

Remédiation :

$tenantSettings = Get-TenantSettings
$tenantSettings.powerPlatform.powerPages.disablePortalsCreationByNonAdminUsers = $true
Set-TenantSettings -RequestBody $tenantSettings

9.1.6 — Désactiver le partage Power Apps avec “Tout le monde”

Niveau : 🟡 Moyen Référence CISA SCuBA : MS.POWERPLATFORM.6.1v1

Description : La fonctionnalité “Partager avec tout le monde” dans Power Apps peut exposer une application à l’ensemble des utilisateurs de l’organisation, y compris ceux qui n’ont pas besoin d’y accéder. Cela viole le principe du moindre privilège.

Vérification :

$tenantSettings = Get-TenantSettings
$tenantSettings.powerPlatform.powerApps.disableShareWithEveryone

Doit retourner True

Remédiation :

$tenantSettings = Get-TenantSettings
$tenantSettings.powerPlatform.powerApps.disableShareWithEveryone = $true
Set-TenantSettings -RequestBody $tenantSettings

9.1.7 — Configurer les politiques DLP Power Platform

Niveau : 🟡 Moyen Référence CIS : CIS Control 3.3

Description : Les politiques DLP de Power Platform contrôlent quels connecteurs peuvent être utilisés ensemble dans un flux ou une application. Cela prévient la création de flux qui exportent des données M365 vers des services non approuvés.

Vérification :

  • Power Platform Admin Center > Politiques de données > Politiques DLP

Remédiation :

  1. Créer une politique DLP couvrant tous les environnements
  2. Déplacer les connecteurs M365 (SharePoint, Excel, Outlook) dans le groupe “Business”
  3. Déplacer les connecteurs à risque dans le groupe “Non-Business” ou “Blocked”
  4. Les connecteurs dans des groupes différents ne peuvent pas être utilisés dans le même flux

SECTION 10 — MICROSOFT FABRIC (POWER BI)

Référence : CIS Microsoft 365 Foundations Benchmark v6.0.1 — Chapitre 9 Microsoft Fabric (anciennement Power BI) permet de créer des tableaux de bord, rapports et analyses de données partagés dans l’organisation. Sans gouvernance, des données sensibles peuvent être publiées publiquement, partagées avec des invités, ou accessibles via des APIs non sécurisées.


10.1 Paramètres du Tenant Fabric


10.1.1 — Restreindre l’accès invité à Microsoft Fabric

Niveau : 🟠 Élevé Référence CIS : 9.1.1 (L1) — Automated Référence CISA SCuBA : MS.POWERBI.1.1v1 Profile : E3 Level 1

Description : L’accès des invités Entra ID à Microsoft Fabric doit être restreint. Des utilisateurs invités ayant accès à Fabric peuvent consulter des tableaux de bord contenant des données commerciales sensibles (chiffres d’affaires, KPIs, données RH, etc.) qui n’étaient pas destinées à une audience externe.

Vérification :

  • Portail Power BI Admin > Paramètres du tenant > Paramètres d’exportation et de partage
  • Vérifier “Autoriser Azure Active Directory les utilisateurs invités à accéder à Microsoft Fabric”

Remédiation :

  1. Portail Fabric Admin (app.powerbi.com/admin-portal) > Paramètres du tenant
  2. “Autoriser les utilisateurs invités Azure AD à accéder à Microsoft Fabric” : Désactivé
  3. Si des invités ont besoin d’accès : créer des groupes de sécurité dédiés avec accès explicitement approuvé

10.1.2 — Restreindre les invitations d’utilisateurs externes dans Fabric

Niveau : 🟠 Élevé Référence CIS : 9.1.2 (L1) — Automated Référence CISA SCuBA : MS.POWERBI.1.2v1 Profile : E3 Level 1

Description : Fabric peut inviter des utilisateurs externes directement, contournant potentiellement les restrictions d’invitation d’invités configurées dans Entra ID. Cette fonctionnalité doit être désactivée pour centraliser la gestion des invités dans Entra ID.

Vérification :

  • Portail Fabric Admin > Paramètres du tenant > “Inviter des utilisateurs externes dans votre organisation”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. “Inviter des utilisateurs externes dans votre organisation” : Désactivé
  3. Toutes les invitations doivent passer par le processus Entra ID standard

10.1.3 — Restreindre l’accès guest au contenu Fabric

Niveau : 🟠 Élevé Référence CIS : 9.1.3 (L1) — Automated Référence CISA SCuBA : MS.POWERBI.1.3v1 Profile : E3 Level 1

Description : Même si les invités peuvent accéder à Fabric, l’accès au contenu (rapports, tableaux de bord, datasets) doit être restreint aux ressources explicitement partagées, sans accès global au tenant Fabric.

Vérification :

  • Portail Fabric Admin > “Autoriser les utilisateurs invités Azure AD à accéder à Microsoft Fabric”
  • Différent du contrôle 10.1.1 — ceci contrôle l’accès au contenu spécifique

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. “Les utilisateurs invités peuvent accéder aux rapports Fabric via un lien” : Désactivé (ou restreint à un groupe approuvé)

10.1.4 — Restreindre la publication sur Internet (Publish to Web)

Niveau : 🔴 Critique Référence CIS : 9.1.4 (L1) — Automated Référence CISA SCuBA : MS.POWERBI.2.1v1 Profile : E3 Level 1

Description : La fonctionnalité “Publier sur le web” de Power BI/Fabric crée un lien public accessible à n’importe quelle personne sur Internet, sans authentification. Des rapports contenant des données sensibles peuvent être publiés accidentellement. Cette fonctionnalité doit être désactivée ou restreinte aux administrateurs uniquement.

Vérification :

  • Portail Fabric Admin > Paramètres du tenant > “Publier sur le web”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. “Publier sur le web” : Désactivé
  3. Si nécessaire pour des cas légitimes : restreindre à un groupe de sécurité approuvé avec processus de validation

10.1.5 — Désactiver les visuels R et Python interactifs

Niveau : 🟡 Moyen Référence CIS : 9.1.5 (L2) — Automated Profile : E3 Level 2

Description : Les visuels R et Python dans Fabric exécutent du code sur les postes clients ou dans le cloud. Du code R/Python malveillant intégré dans un rapport peut exfiltrer des données, exécuter des commandes système, ou servir de vecteur d’attaque.

Vérification :

  • Portail Fabric Admin > Paramètres du tenant > “Interagir avec et partager des visuels R et Python”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. “Interagir avec et partager des visuels R et Python” : Désactivé

10.1.6 — Activer l’application des étiquettes de sensibilité dans Fabric

Niveau : 🟠 Élevé Référence CIS : 9.1.6 (L1) — Automated Référence CISA SCuBA : MS.POWERBI.3.1v1 Profile : E3 Level 1

Description : Les étiquettes de sensibilité Microsoft Purview doivent pouvoir être appliquées aux contenus Fabric (rapports, datasets, tableaux de bord). Cela permet la classification des données et le déclenchement de politiques de protection associées (chiffrement, restrictions d’accès).

Vérification :

  • Portail Fabric Admin > Paramètres du tenant > Protection des informations
  • “Permettre aux utilisateurs d’appliquer des étiquettes de sensibilité au contenu” : Activé

Remédiation :

  1. Portail Fabric Admin > Protection des informations
  2. Activer “Permettre aux utilisateurs d’appliquer des étiquettes de sensibilité au contenu”
  3. Activer “Appliquer des étiquettes de sensibilité depuis des sources de données aux données dans Fabric”

10.1.7 — Restreindre les liens partageables dans Fabric

Niveau : 🟠 Élevé Référence CIS : 9.1.7 (L1) — Automated Référence CISA SCuBA : MS.POWERBI.2.3v1 Profile : E3 Level 1

Description : Les liens partageables dans Fabric peuvent donner accès à des rapports à toute personne de l’organisation ou externe. Ces liens doivent être restreints pour éviter la diffusion non contrôlée de données analytiques sensibles.

Vérification :

  • Portail Fabric Admin > Paramètres du tenant > “Créer des liens partageables vers du contenu avec accès activé”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. Désactiver les liens partageables avec “Toute personne dans l’organisation”
  3. Maintenir uniquement les liens pour des utilisateurs spécifiques

10.1.8 — Restreindre le partage de données externes dans Fabric

Niveau : 🟠 Élevé Référence CIS : 9.1.8 (L1) — Automated Référence CISA SCuBA : MS.POWERBI.2.2v1 Profile : E3 Level 1

Description : Fabric peut se connecter à des sources de données externes et potentiellement envoyer des données vers l’extérieur. Cette fonctionnalité doit être restreinte pour éviter l’exfiltration non intentionnelle de données d’entreprise.

Vérification :

  • Portail Fabric Admin > “Autoriser les connexions de données externes spécifiques”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant > “Activation du partage externe de données”
  2. Désactiver ou restreindre à un groupe d’utilisateurs approuvés

10.1.9 — Activer BlockResourceKeyAuthentication dans Fabric

Niveau : 🟠 Élevé Référence CIS : 9.1.9 (L1) — Automated Référence CISA SCuBA : MS.POWERBI.4.1v1 Profile : E3 Level 1

Description : L’authentification par clé de ressource (ResourceKey) dans Power BI Embedded permet d’accéder à des rapports sans authentification Entra ID. Si cette méthode est utilisée avec des clés exposées, n’importe qui ayant la clé peut accéder aux rapports. Bloquer cette méthode force l’utilisation d’OAuth 2.0.

Vérification :

  • Portail Fabric Admin > Paramètres du tenant > “Bloquer l’authentification par clé de ressource”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. “Bloquer l’authentification par clé de ressource” : Activé

10.1.10 — Restreindre l’accès aux APIs Fabric par les principaux de service

Niveau : 🟠 Élevé Référence CIS : 9.1.10 (L1) — Automated Profile : E3 Level 1

Description : Les principaux de service (Service Principals) peuvent accéder aux APIs Fabric avec des permissions très larges. Sans restriction, des applications tierces ou des scripts automatisés peuvent lire, modifier ou exporter l’ensemble des données analytiques de l’organisation.

Vérification :

  • Portail Fabric Admin > Paramètres du tenant > “Permettre aux principaux de service d’utiliser les APIs Power BI”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. “Permettre aux principaux de service d’utiliser les APIs Power BI” : Désactivé ou restreint à des groupes de sécurité spécifiques
  3. Pour chaque principal de service autorisé : documenter le cas d’usage et effectuer une révision trimestrielle

10.1.11 — Empêcher les principaux de service de créer et utiliser des profils

Niveau : 🟡 Moyen Référence CIS : 9.1.11 (L1) — Automated Profile : E3 Level 1

Description : Les profils de principal de service dans Fabric peuvent être utilisés pour contourner les restrictions d’accès normales. Restreindre cette capacité limite les vecteurs d’abus potentiels par des applications mal configurées ou compromises.

Vérification :

  • Portail Fabric Admin > “Permettre aux principaux de service de créer et d’utiliser des profils”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. “Permettre aux principaux de service de créer et d’utiliser des profils” : Désactivé

10.1.12 — Restreindre la création d’espaces de travail Fabric par les principaux de service

Niveau : 🟡 Moyen Référence CIS : 9.1.12 (L1) — Automated Profile : E3 Level 1

Description : Des principaux de service capables de créer des espaces de travail, connexions et pipelines de déploiement peuvent contourner les workflows de gouvernance et créer des environnements shadow IT dans Fabric.

Vérification :

  • Portail Fabric Admin > “Capacité des principaux de service à créer des espaces de travail, connexions et pipelines”

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant
  2. Désactiver la capacité des principaux de service à créer des espaces de travail automatiquement
  3. Exiger une validation humaine pour toute création d’espace de travail via API

10.1.13 — Restreindre le partage de datasets Power BI entre espaces de travail (Cross-Workspace)

Niveau : 🟠 Élevé Référence : MS.POWERBI.5.1v1 (équivalent) — Manual Profile : E3 Level 1

Description : La fonctionnalité “Partage de datasets entre espaces de travail” (Cross-Workspace Dataset Sharing) permet aux utilisateurs de connecter des rapports Power BI à des datasets situés dans d’autres espaces de travail auxquels ils n’ont pas nécessairement accès direct. Sans restriction, cette fonctionnalité peut permettre à un utilisateur d’accéder indirectement à des données sensibles via un dataset partagé, contournant les permissions configurées sur l’espace de travail source.

Vérification :

  • Portail d’administration Fabric > Paramètres du tenant > “Autoriser la connexion XMLA et l’utilisation de datasets dans Power BI Desktop”
  • Portail d’administration Fabric > Paramètres du tenant > “Partager des datasets avec des utilisateurs extérieurs à votre organisation”
# Vérifier via API Fabric Admin
$headers = @{ Authorization = "Bearer $token" }
Invoke-RestMethod -Uri "https://api.fabric.microsoft.com/v1/admin/tenantsettings" -Headers $headers |
    Select-Object -ExpandProperty tenantSettings |
    Where-Object { $_.settingName -match "CrossWorkspace|DatasetShare|XMLA" } |
    Format-Table settingName, enabled, canSpecifySecurityGroups

Remédiation :

  1. Portail Fabric Admin > Paramètres du tenant > Partage
  2. Désactiver “Permettre aux utilisateurs de partager des datasets avec d’autres utilisateurs”
  3. Si nécessaire pour des cas légitimes : restreindre à des groupes de sécurité spécifiques
  4. Activer le chiffrement RLS (Row-Level Security) sur tous les datasets sensibles
  5. Revoir trimestriellement les datasets avec des permissions cross-workspace actives

Valeur par défaut : Le partage de datasets entre espaces de travail est activé par défaut dans Fabric.


SECTION 11 — MICROSOFT 365 APPS — SÉCURITÉ DES APPLICATIONS OFFICE

Référence : Microsoft Security Compliance Toolkit — M365 Apps for Enterprise Security Baseline v2512 (Décembre 2025) Ces contrôles s’appliquent aux applications Office (Word, Excel, PowerPoint, Outlook, OneNote) déployées via Intune (politiques ADMX/Settings Catalog) ou via GPO Active Directory.


11.1 Macros et Code Actif


11.1.1 — Exiger la signature des macros (Require Macro Signing)

Niveau : 🔴 Critique Référence : MSCT M365 Apps v2512 — GPO “Require Macro Signing - User” Déploiement : Intune (Settings Catalog) / GPO AD MITRE ATT&CK : T1137 (Office Application Startup) · T1204.002 (User Execution: Malicious File) · T1059.005 (Command and Scripting: Visual Basic)

Description : Les macros VBA non signées représentent l’un des vecteurs d’infection les plus courants dans les campagnes de ransomware et d’espionnage. En exigeant une signature numérique valide pour l’exécution des macros, l’organisation s’assure que seules les macros approuvées et développées en interne peuvent s’exécuter. Les macros dans les documents reçus par email ou téléchargés seront bloquées.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Exiger la signature des macros = Activé

Ou via Intune : Settings Catalog > Microsoft Office 2016 > Security Settings > Require Macro Signing

Vérification :

# Via registre sur poste client
Get-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\Office\16.0\Common\Security" -Name "RequireAddinSig" -ErrorAction SilentlyContinue
# Valeur attendue : 1

Remédiation :

  1. Intune > Appareils > Profils de configuration > Créer > Windows 10 et ultérieur > Settings Catalog
  2. Rechercher “Require Macro Signing” pour chaque application Office concernée
  3. Activer et assigner au groupe d’appareils
  4. Établir un processus de signature des macros internes (certificat de signature de code interne)

Impact : Les macros existantes non signées seront bloquées. Inventaire préalable indispensable.


11.1.2 — Bloquer les macros VBA dans les fichiers Office depuis Internet (MOTW)

Niveau : 🔴 Critique Référence : CIS Office Benchmark / MSCT M365 Apps Déploiement : Intune / GPO AD MITRE ATT&CK : T1204.002 (User Execution: Malicious File) · T1566.001 (Phishing: Spearphishing Attachment) · T1059.005 (Visual Basic)

Description : Windows marque les fichiers téléchargés depuis Internet avec une balise “Mark of the Web” (MOTW). Office doit bloquer l’exécution des macros dans tous les fichiers portant cette balise. Depuis 2022, Microsoft a renforcé ce blocage par défaut, mais il peut avoir été désactivé par des GPOs ou des utilisateurs.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Block macros from running in Office files from the Internet = Enabled

Vérification :

# Vérifier que le blocage MOTW est actif pour Excel
Get-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\Office\16.0\Excel\Security" -Name "BlockContentExecutionFromInternet" -ErrorAction SilentlyContinue
# Valeur attendue : 1

Remédiation :

  1. Intune > Settings Catalog > “Block macros from running in Office files from the Internet” = Enabled
  2. Appliquer pour Word, Excel, PowerPoint, Outlook, Visio

11.1.3 — Bloquer les objets OLE actifs dans PowerPoint

Niveau : 🟠 Élevé Référence : MSCT M365 Apps v2512 — GPO “PowerPoint OLE Active Content” Déploiement : Intune / GPO AD

Description : Les objets OLE (Object Linking and Embedding) embarqués dans des présentations PowerPoint peuvent exécuter du code externe, charger des applications tierces, ou établir des connexions réseau non sécurisées. La baseline v2512 désactive les actions OLE interactives.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft PowerPoint 2016\PowerPoint Options\Security\
→ OLE Active Content = No OLE content will be activated

Remédiation :

  1. Intune > Settings Catalog > Microsoft PowerPoint 2016 > Security > OLE Active Content > Désactivé

11.1.4 — Bloquer l’exécution de DDE dans Excel

Niveau : 🔴 Critique Référence : MSCT M365 Apps v2512 — GPO “DDE Block - User” Déploiement : Intune / GPO AD

Description : DDE (Dynamic Data Exchange) est un protocole hérité permettant à Excel de requêter des données depuis d’autres applications ou processus systèmes, y compris cmd.exe et PowerShell. Des documents Excel malveillants exploitent DDE pour exécuter du code arbitraire sans macro VBA, contournant les protections anti-macro.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Excel 2016\Excel Options\Security\Trust Center\
→ Don't allow Dynamic Data Exchange (DDE) server launch in Excel = Enabled

Vérification :

Get-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\Office\16.0\Excel\Security" -Name "DisableDDEServerLaunch" -ErrorAction SilentlyContinue
# Valeur attendue : 1

11.1.5 — Bloquer les formats de fichiers Office hérités (Legacy File Block)

Niveau : 🟠 Élevé Référence : MSCT M365 Apps v2512 — GPO “Legacy File Block - User” Déploiement : Intune / GPO AD

Description : Les anciens formats Office (.doc, .xls, .ppt pre-2007) contiennent souvent des vulnérabilités connues et non corrigées dans leurs parsers. Bloquer l’ouverture de ces formats réduit la surface d’attaque pour les exploits de format de fichier.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Legacy File Block = Prevent opening/saving

11.1.6 — Désactiver JScript hérité dans Internet Explorer / Zones restreintes Office

Niveau : 🟠 Élevé Référence : MSCT M365 Apps v2512 — GPO “Legacy JScript Block - Computer” Déploiement : Intune / GPO AD

Description : Le moteur JScript hérité de Microsoft (distinct de V8/Node.js) est utilisé dans la zone Internet d’Internet Explorer et dans certains contextes Office pour exécuter des scripts embarqués dans des documents. Ce moteur présente de nombreuses vulnérabilités CVE critiques. La baseline v2512 désactive JScript dans la zone Internet et la zone Sites restreints pour Office.

Paramètre GPO :

Computer Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Block Legacy JScript Execution = Enabled

11.1.7 — Désactiver les add-ins Office non gérés (DisableAllAddIns)

Niveau : 🟠 Élevé Référence : MSCT M365 Apps v2512 — “Disable All Add-ins” — Automated Déploiement : Intune (Settings Catalog) / GPO AD

Description : Les add-ins Office non gérés (COM add-ins, VSTO add-ins, Web Add-ins tiers non approuvés) représentent un vecteur d’attaque significatif. Des malwares avancés utilisent des add-ins malveillants pour persister dans le système, intercepter des communications Outlook, exfiltrer des données, ou contourner les contrôles de sécurité. Le Microsoft Security Compliance Toolkit v2512 recommande de désactiver tous les add-ins non approuvés et de n’autoriser que les add-ins déployés via le Catalogue d’Applications centralisé (Admin Center).

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Disable All Add-ins = Enabled (Force désactivation de tous les add-ins non gérés)

User Configuration\Administrative Templates\Microsoft Outlook 2016\Miscellaneous\
→ Do not allow Outlook object model scripts to run for shared folders = Enabled

Vérification :

# Vérifier via Intune — Settings Catalog policy pour Office Add-ins
# Microsoft Intune Admin Center > Devices > Configuration > Policies
# Filtrer par "Office Add-in" ou "DisableAllAddIns"

# Via registry sur les postes (si GPO)
Get-ItemProperty "HKCU:\Software\Microsoft\Office\16.0\Common\General" -Name "DisableAllAddIns" -ErrorAction SilentlyContinue
# Valeur attendue : DisableAllAddIns = 1

Remédiation :

  1. Intune > Devices > Configuration > Settings Catalog > Créer une politique pour les Apps M365
  2. Ajouter le paramètre “Disable All Add-ins” = Enabled
  3. Déployer les add-ins légitimes via le Catalogue d’Applications centralisé (Admin Center > Settings > Integrated apps)
  4. Créer une liste blanche des add-ins approuvés dans le portail M365
  5. Auditer les add-ins actuellement installés sur les postes via Intune Device Reports

Valeur par défaut : Les utilisateurs peuvent installer tout add-in disponible dans l’Office Store sans restriction.


11.2 Protocoles et Connexions Sécurisées


11.2.1 — Bloquer les protocoles non-HTTPS dans les applications Office

Niveau : 🟠 Élevé Référence : MSCT M365 Apps v2512 — “Block Insecure Protocols” Déploiement : Intune / GPO AD

Description : La baseline v2512 introduit la politique “Block Insecure Protocols” qui bloque tous les protocoles non-HTTPS (HTTP, FTP, etc.) lors de l’ouverture de documents ou de la résolution de liens dans les applications M365. Cela élimine les chemins de déclassement (downgrade) et les connexions non sécurisées pouvant être interceptées.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Block Insecure Protocols = Enabled

11.2.2 — Bloquer les liens externes dans les classeurs Excel (File Block External Links)

Niveau : 🟠 Élevé Référence : MSCT M365 Apps v2512 — “Excel File Block Includes External Link Files” Déploiement : Intune / GPO AD

Description : Les classeurs Excel avec liens vers des fichiers externes bloqués par File Block ne doivent pas pouvoir rafraîchir ces liens. Cela empêche l’ingestion de données depuis des sources non approuvées ou potentiellement malveillantes, et prévient les techniques de reconnaissance utilisant des liens OLE/Excel vers des serveurs attaquants.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Excel 2016\Excel Options\Security\Trust Center\File Block Settings\
→ File Block includes external link files = Enabled

11.2.3 — Bloquer le fallback FPRPC dans les applications Office

Niveau : 🟡 Moyen Référence : MSCT M365 Apps v2512 — “Restrict FPRPC Fallback” Déploiement : Intune / GPO AD

Description : Le protocole FrontPage Server Extensions RPC (FPRPC) est un protocole d’accès aux fichiers vieillissant, non conçu pour les exigences sécurité modernes. La baseline v2512 désactive le fallback vers FPRPC pour garantir l’utilisation exclusive de méthodes d’accès aux fichiers modernes et authentifiées.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Restrict Apps from FPRPC Fallback = Enabled

11.2.4 — Désactiver les composants OLE Graph hérités (MSGraph.Application)

Niveau : 🟡 Moyen Référence : MSCT M365 Apps v2512 — “Block OLE Graph” Déploiement : Intune / GPO AD

Description : MSGraph.Application et MSGraph.Chart sont des composants OLE Graph classiques qui constituent une interface d’automatisation historiquement risquée. La baseline v2512 remplace leur exécution par un rendu d’image statique, éliminant l’exposition au moteur d’automation sous-jacent.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Block OLE Graph = Enabled

11.2.5 — Désactiver le composant OrgChart Add-in hérité

Niveau : 🟡 Moyen Référence : MSCT M365 Apps v2512 — “Block OrgChart” Déploiement : Intune / GPO AD

Description : L’add-in OrgChart hérité utilise des frameworks d’automatisation obsolètes. La baseline le désactive et remplace son rendu par une image statique, réduisant l’exposition aux vulnérabilités des frameworks d’automation.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\
→ Block OrgChart = Enabled

11.3 Journaux et Télémétrie Office


11.3.1 — Activer la journalisation des erreurs Office via Intune

Niveau : 🟡 Moyen Référence : MSCT M365 Apps / CIS Office Benchmark Déploiement : Intune / GPO AD

Description : Les journaux d’erreur et d’utilisation des applications Office permettent de détecter des comportements anormaux (tentatives d’exploitation, crashes répétés sur des fichiers spécifiques) et de corréler avec des indicateurs de compromission.

Vérification :

  • Intune > Politiques de configuration > Vérifier l’activation des journaux Office
  • Ou via Registre :
Get-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\Office\16.0\Common" -Name "SendCustomerData" -ErrorAction SilentlyContinue

Remédiation :

  1. Activer le journal d’audit Office via Intune (Settings Catalog > Office)
  2. Configurer l’envoi des journaux vers Microsoft Defender for Endpoint ou le SIEM

11.3.2 — Activer la protection contre les documents malveillants (Protected View renforcé)

Niveau : 🟠 Élevé Référence : CIS Office Benchmark / MSCT Déploiement : Intune / GPO AD

Description : La Protected View d’Office ouvre les documents potentiellement dangereux en mode lecture seule dans un bac à sable, sans activer les macros, les objets OLE, ni les connexions réseau. Forcer l’activation de Protected View pour les fichiers Internet, les pièces jointes Outlook, et les emplacements potentiellement dangereux est une mesure de sécurité critique.

Paramètre GPO :

User Configuration\Administrative Templates\Microsoft Word/Excel/PowerPoint\Options\Security\Trust Center\
→ Enable Protected View for files originating from the Internet = Enabled
→ Enable Protected View for files in potentially unsafe locations = Enabled
→ Enable Protected View for Outlook attachments = Enabled

SECTION 12 — GESTION ADMINISTRATIVE


12.1 Paramètres du Tenant


12.1.1 — Restreindre l’accès au portail d’administration M365

Niveau : 🟠 Élevé Référence CIS : CIS Control 4.1

Description : L’accès au portail Microsoft 365 Admin Center doit être restreint aux administrateurs uniquement. Les utilisateurs standards n’ont pas besoin d’y accéder.

Vérification :

Get-MsolCompanyInformation | Select-Object UsersPermissionToReadOtherUsersEnabled, UsersPermissionToUserConsentToAppEnabled

Remédiation :

  1. M365 Admin Center > Paramètres > Org Settings > Services
  2. Désactiver l’accès au portail d’admin pour les non-administrateurs
  3. Créer une politique CA : Bloquer l’accès à “Microsoft Admin Portals” pour les non-admins

12.1.2 — Désactiver le consentement des utilisateurs aux applications tierces

Niveau : 🟠 Élevé Référence CIS : CIS Control 4.1

Description : Par défaut, les utilisateurs peuvent donner leur consentement à des applications tierces pour accéder à leurs données M365 (emails, fichiers, contacts). Des applications malveillantes exploitent cela pour obtenir un accès persistant (OAuth Phishing).

Vérification :

(Get-MgPolicyAuthorizationPolicy).DefaultUserRolePermissions | Select-Object AllowedToCreateApps, AllowedToCreateSecurityGroups, AllowedToCreateTenants
Get-MgPoliciesPermissionGrantPolicies

Remédiation :

  1. Entra ID > Applications d’entreprise > Paramètres utilisateur
  2. “Les utilisateurs peuvent donner leur consentement aux applications accédant aux données de l’entreprise” → Non
  3. Activer le workflow de consentement administrateur pour que les utilisateurs puissent demander l’approbation
  4. Réviser les applications ayant déjà reçu des consentements larges

12.1.3 — Activer les restrictions de création de tenants

Niveau : 🟡 Moyen Référence CIS : CIS Control 4.1

Description : Sans restrictions, les utilisateurs peuvent créer de nouveaux tenants Entra ID avec leur adresse email professionnelle pour contourner les contrôles de sécurité de l’organisation.

Vérification :

(Get-MgPolicyAuthorizationPolicy).DefaultUserRolePermissions.AllowedToCreateTenants

Remédiation :

$permissionsObject = (Get-MgPolicyAuthorizationPolicy).DefaultUserRolePermissions
$permissionsObject.AllowedToCreateTenants = $false
Update-MgPolicyAuthorizationPolicy -DefaultUserRolePermissions $permissionsObject

12.1.4 — Restreindre l’enregistrement d’appareils par les utilisateurs

Niveau : 🟡 Moyen Référence CIS : CIS Control 1.1

Description : Limiter quels utilisateurs peuvent enregistrer des appareils dans Entra ID empêche l’enregistrement non autorisé d’appareils personnels qui pourraient obtenir des tokens d’accès ou contourner des politiques CA basées sur les appareils.

Vérification :

  • Entra ID > Appareils > Paramètres d’appareil > Les utilisateurs peuvent joindre des appareils à Azure AD

Remédiation :

  1. Entra ID > Appareils > Paramètres d’appareil
  2. “Les utilisateurs peuvent joindre des appareils à Azure AD” : Sélectionné (groupe restreint) au lieu de Tous
  3. Nombre maximum d’appareils par utilisateur : 5 (ou selon politique interne)

12.1.5 — Vérifier la configuration des domaines personnalisés

Niveau : 🟡 Moyen Référence CIS : CIS Control 2.1

Description : Les domaines personnalisés non vérifiés ou mal configurés peuvent être utilisés pour l’usurpation d’identité. Tous les domaines associés au tenant doivent avoir leurs enregistrements DNS correctement configurés.

Vérification :

  • M365 Admin Center > Paramètres > Domaines
  • Vérifier le statut de chaque domaine (Sain / Avertissements)

Remédiation :

  1. Résoudre tous les avertissements DNS sur les domaines personnalisés
  2. S’assurer que SPF, DKIM et DMARC sont configurés pour TOUS les domaines
  3. Supprimer les domaines inutilisés du tenant

12.1.6 — Restreindre l’accès au Microsoft Office Store pour les utilisateurs

Niveau : 🟠 Élevé Référence CIS : CIS 1.3.4 (L1) — Automated Profile : E3 Level 1

Description : Par défaut, les utilisateurs peuvent accéder à l’Office Store et installer des applications et compléments Microsoft 365 de leur propre initiative. Ces applications non gérées peuvent accéder aux données M365 (emails, fichiers, contacts), introduire des risques de sécurité et contourner les politiques DLP.

Vérification :

$Uri = "https://graph.microsoft.com/beta/admin/appsAndServices/settings"
Invoke-MgGraphRequest -Uri $Uri
# Valeurs attendues : isAppAndServicesTrialEnabled = false, isOfficeStoreEnabled = false

Remédiation :

$uri = "https://graph.microsoft.com/beta/admin/appsAndServices"
$body = @{
    Settings = @{
        isAppAndServicesTrialEnabled = $false
        isOfficeStoreEnabled = $false
    }
} | ConvertTo-Json
Invoke-MgGraphRequest -Method PATCH -Uri $uri -Body $body

Ou via M365 Admin Center > Paramètres > Paramètres Org > Services > Applications et services.


12.1.7 — Activer la protection phishing interne pour Microsoft Forms

Niveau : 🟠 Élevé Référence CIS : CIS 1.3.5 (L1) — Automated Profile : E3 Level 1

Description : Microsoft Forms dispose d’une protection anti-phishing interne qui détecte lorsque des formulaires sont utilisés pour des attaques de phishing en interne (collecte de credentials, informations sensibles). Des attaquants ayant compromis un compte peuvent créer des formulaires de phishing pour cibler d’autres employés.

Vérification :

$uri = 'https://graph.microsoft.com/beta/admin/forms/settings'
(Invoke-MgGraphRequest -Uri $uri).isInOrgFormsPhishingScanEnabled
# Valeur attendue : True

Remédiation :

$uri = 'https://graph.microsoft.com/beta/admin/forms/settings'
$body = @{ isInOrgFormsPhishingScanEnabled = $true } | ConvertTo-Json
Invoke-MgGraphRequest -Method PATCH -Uri $uri -Body $body

12.1.8 — Activer Customer Lockbox pour les accès Microsoft au tenant

Niveau : 🟡 Moyen Référence CIS : CIS 1.3.6 (L2) — Automated Profile : E5 Level 2 Licence requise : Microsoft 365 E5 ou Microsoft 365 E5 Compliance

Description : Customer Lockbox garantit que Microsoft ne peut pas accéder aux données client sans approbation explicite. Quand le support Microsoft doit accéder aux données pour résoudre un incident, une demande d’approbation est envoyée à l’administrateur du tenant. Sans Customer Lockbox, Microsoft peut accéder aux données avec uniquement une notification interne.

Vérification :

Get-OrganizationConfig | Select-Object CustomerLockBoxEnabled
# Valeur attendue : True

Remédiation :

Set-OrganizationConfig -CustomerLockBoxEnabled $true

Ou via M365 Admin Center > Paramètres > Paramètres Org > Sécurité et confidentialité > Customer Lockbox.


12.1.9 — Restreindre les services de stockage tiers dans Microsoft 365 Web

Niveau : 🟡 Moyen Référence CIS : CIS 1.3.7 (L2) — Automated Profile : E3 Level 2

Description : Par défaut, les applications web M365 (Word, Excel, PowerPoint Online) permettent d’ouvrir et sauvegarder des fichiers depuis des services tiers comme Dropbox, Box ou Google Drive. Cela peut conduire à des fuites de données sensibles vers des espaces non contrôlés par l’organisation.

Vérification :

$SP = Get-MgServicePrincipal -Filter "appId eq 'c1f33bc0-bdb4-4248-ba9b-096807ddb43e'"
if ((-not $SP) -or $SP.AccountEnabled) {
    Write-Host "NON CONFORME - Stockages tiers autorisés"
} else {
    Write-Host "CONFORME - Stockages tiers bloqués"
}

Remédiation :

$SP = Get-MgServicePrincipal -Filter "appId eq 'c1f33bc0-bdb4-4248-ba9b-096807ddb43e'"
if (-not $SP) { $SP = New-MgServicePrincipal -AppId "c1f33bc0-bdb4-4248-ba9b-096807ddb43e" }
Update-MgServicePrincipal -ServicePrincipalId $SP.Id -AccountEnabled:$false

12.1.10 — Désactiver le partage externe de Sway

Niveau : 🟡 Moyen Référence CIS : CIS 1.3.8 (L1) — Manual Profile : E3 Level 1

Description : Sway est un outil de création de présentations interactives. Par défaut, les utilisateurs peuvent partager leurs Sways publiquement avec des personnes extérieures à l’organisation. Des Sways peuvent contenir des informations stratégiques, des données RH ou des plans commerciaux qui ne doivent pas être accessibles publiquement.

Vérification :

  1. M365 Admin Center > Paramètres > Paramètres Org > Services
  2. Rechercher “Sway”
  3. Vérifier que “Permettre aux personnes de votre organisation de partager leurs Sways avec des personnes extérieures” est décoché

Remédiation :

  1. M365 Admin Center > Paramètres > Paramètres Org > Services > Sway
  2. Décocher “Permettre aux personnes de votre organisation de partager leurs Sways avec des personnes extérieures à votre organisation”

12.1.11 — Restreindre ou désactiver Microsoft Bookings

Niveau : 🟡 Moyen Référence CIS : CIS 1.3.9 (L2) — Automated Profile : E3 Level 2

Description : Microsoft Bookings permet aux utilisateurs externes de réserver des créneaux avec les employés de l’organisation, exposant publiquement les calendriers et les coordonnées du personnel. Ce service peut également permettre la création de boîtes partagées Bookings non gérées, augmentant la surface d’attaque.

Vérification :

Get-OwaMailboxPolicy -Identity OwaMailboxPolicy-Default | Select-Object BookingsMailboxCreationEnabled
Get-OrganizationConfig | Select-Object BookingsEnabled
# Valeurs attendues : les deux à False

Remédiation :

Set-OwaMailboxPolicy "OwaMailboxPolicy-Default" -BookingsMailboxCreationEnabled:$false
Set-OrganizationConfig -BookingsEnabled $false

SECTION 13 — RÉPONSE AUX INCIDENTS ET PLANS DE CONTINUITÉ


13.1.1 — Documenter les procédures de réponse aux incidents M365

Niveau : 🟡 Moyen Référence CIS : CIS Control 17.4

Description : L’absence de procédures documentées pour les incidents M365 (compromission de compte, ransomware via email, fuite de données) retarde significativement la réponse et augmente l’impact de l’incident.

Vérification :

  • Vérifier l’existence d’un plan de réponse aux incidents documenté spécifique M365
  • Vérifier que les procédures incluent : isolation de compte compromis, révocation de sessions, analyse forensic M365

Remédiation :

  1. Documenter les procédures pour les scénarios : Compte admin compromis, Règle de transfert malveillante, Ransomware via SharePoint, Business Email Compromise (BEC)
  2. Tester les procédures via des exercices de simulation (tabletop exercises) annuels
  3. Maintenir les contacts Microsoft DART (Detection and Response Team) pour les incidents critiques

13.1.2 — Activer la journalisation avancée (Audit Premium)

Niveau : 🟡 Moyen Référence CIS : CIS Control 8.5 Licence requise : Microsoft 365 E5 ou Microsoft 365 E5 Compliance

Description : L’Audit Premium de Microsoft Purview offre une rétention des journaux de 1 an (voire 10 ans), une bande passante d’API accrue pour les enquêtes forensics, et des événements d’audit supplémentaires critiques pour les investigations (MailItemsAccessed, SearchQueryInitiatedExchange, etc.).

Vérification :

Get-Mailbox -Identity user@domain.com | Select-Object AuditEnabled, DefaultAuditSet

Remédiation :

  1. Assigner la licence Microsoft Purview Audit (Premium) aux utilisateurs prioritaires (dirigeants, IT, finance)
  2. Activer l’audit MailItemsAccessed pour détecter les accès à des emails spécifiques lors d’investigations
  3. Configurer l’exportation vers un SIEM pour rétention à long terme

13.1.3 — Maintenir des playbooks de réponse aux incidents BEC et ransomware

Niveau : 🟠 Élevé Référence : CISA SCuBA MS.DEFENDER.6.x — Manual | NIST 800-61r2 Profile : E3 Level 1

Description : La compromission de messagerie d’entreprise (BEC) et les ransomwares sont les deux principales menaces M365. Sans playbooks documentés et testés, le temps de réponse en cas d’incident est multiplié par 3 à 5 et les erreurs critiques (mauvaises réinitialisations, non-préservation des preuves) sont fréquentes. Les playbooks doivent être spécifiques à M365 et inclure les actions PowerShell/API nécessaires.

Vérification :

  • Documentation de l’organisation > Existence de playbooks IR M365 (BEC, ransomware, phishing, accès admin compromis)
  • Vérifier la date du dernier test/simulation (< 12 mois)
  • Vérifier la liste des comptes Break Glass et leur procédure d’activation

Remédiation :

  1. Créer un playbook BEC couvrant :
    • Détection via Defender for Office 365 Alert
    • Révocation immédiate des sessions (Revoke-MgUserSignInSession)
    • Reset MFA et MDP
    • Investigation des règles de transfert et délégations suspectes
    • Analyse des emails exfiltrés via eDiscovery
  2. Créer un playbook Ransomware couvrant :
    • Isolation de l’appareil compromis via Intune
    • Blocage de compte M365
    • Restauration OneDrive/SharePoint via versioning (180 jours)
    • Analyse de propagation via Microsoft 365 Defender
  3. Tester les playbooks annuellement via simulation tabletop
  4. Référence : Microsoft Incident Response Playbooks — https://aka.ms/IRplaybooks

Valeur par défaut : Aucun playbook IR spécifique M365 n’est fourni par défaut.


13.1.4 — Activer et tester la sauvegarde M365 (backup tiers ou natif)

Niveau : 🟠 Élevé Référence : Microsoft 365 Backup Policy — Manual Profile : E3 Level 1 Licence requise : Microsoft 365 Backup (module add-on) ou solution tierce

Description : Microsoft n’est pas responsable de la sauvegarde des données M365 — sa responsabilité est la disponibilité de la plateforme, pas la récupération en cas de suppression accidentelle, de ransomware ou d’erreur administrative. Les outils natifs (corbeille, versioning) ont des limitations (30–93 jours). Une solution de sauvegarde dédiée est nécessaire pour les SLA de récupération critiques.

Vérification :

# Vérifier si Microsoft 365 Backup est configuré
$backupPolicy = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/admin/m365Apps/installation/backupPolicies" -Method GET -ErrorAction SilentlyContinue
$backupPolicy | ConvertTo-Json
  • Vérifier aussi : solution tierce active (Veeam, Acronis, Druva, Barracuda, AvePoint)
  • Tester la restauration d’une boîte mail et d’un site SharePoint < 12 mois

Remédiation :

  1. Option 1 — Microsoft 365 Backup (natif) :
    • Microsoft 365 Admin Center > Settings > Microsoft 365 Backup
    • Configurer les politiques de sauvegarde pour Exchange, SharePoint, OneDrive
    • RTO/RPO : restauration en minutes pour les 180 derniers jours
  2. Option 2 — Solution tierce : déployer et configurer selon la politique de l’organisation
  3. Documenter le processus de restauration et le tester annuellement
  4. Vérifier que les sauvegardes sont stockées hors du tenant (protection contre suppression admin)

Valeur par défaut : Aucune sauvegarde dédiée M365 par défaut.


SECTION 14 — MICROSOFT COPILOT FOR M365

Contexte : Microsoft Copilot for M365 est un vecteur de risque critique en 2026. Il accède à toutes les données auxquelles l’utilisateur a accès (emails, Teams, SharePoint, OneDrive). Un déploiement sans contrôle préalable peut exposer massivement des données sensibles via oversharing, réponses inappropriées ou exfiltration involontaire.


14.1 Gouvernance et Sécurité de Microsoft Copilot for M365


14.1.1 — Évaluer le périmètre d’oversharing avant le déploiement Copilot

Niveau : 🔴 Critique Référence : Microsoft Purview DSPM for AI — Manual Profile : E5 / Copilot for M365 Add-on Licence requise : Microsoft 365 Copilot + Purview DSPM for AI (add-on)

Description : Copilot accède aux données via le Microsoft Graph — toutes les données accessibles par l’utilisateur sont potentiellement accessibles à Copilot. En entreprise, il est courant que des données sensibles (RH, financier, juridique) soient accessibles à des utilisateurs qui n’auraient pas dû y avoir accès. Avant tout déploiement Copilot, un audit d’oversharing doit être réalisé via Microsoft Purview DSPM for AI (Data Security Posture Management).

Vérification :

# Vérifier les sites SharePoint avec "Tout le monde sauf les utilisateurs externes"
$sites = Get-PnPTenantSite -Detailed
$sites | Where-Object { $_.SharingCapability -eq "ExternalUserAndGuestSharing" } | Select-Object Url, Title

# Identifier les fichiers partagés avec "Tout le monde"
# À exécuter via Purview Content Explorer ou DSPM for AI
  • Microsoft Purview > DSPM for AI > Rapport d’oversharing
  • Vérifier que les sites SharePoint sensibles n’ont pas de permissions “Tout le monde”

Remédiation :

  1. Déployer Microsoft Purview DSPM for AI et générer le rapport d’oversharing
  2. Identifier les 10 sites/bibliothèques les plus à risque et restreindre les permissions
  3. Supprimer les partages “Tout le monde” et “Tout le monde sauf les utilisateurs externes”
  4. Activer la restriction d’accès aux sites SharePoint selon les étiquettes de sensibilité
  5. Déployer une politique “SharePoint Advanced Management” pour audit continu
  6. Ne pas activer Copilot avant que le score DSPM soit acceptable

Valeur par défaut : Aucune évaluation d’oversharing — Copilot peut exposer toutes les données accessibles à l’utilisateur.


14.1.2 — Configurer les politiques DLP spécifiques à Copilot

Niveau : 🔴 Critique Référence : Microsoft Purview DLP — Manual Profile : E5 / Copilot for M365 Add-on Licence requise : Microsoft 365 Copilot + Purview DLP

Description : Les politiques DLP (Data Loss Prevention) doivent être étendues pour couvrir les interactions Copilot. Sans DLP spécifique, Copilot peut inclure dans ses réponses des données sensibles (numéros de carte, données santé, données personnelles RGPD) qui se retrouvent dans des prompts partagés ou des résumés.

Vérification :

# Vérifier les politiques DLP actives et leurs emplacements
Connect-IPPSSession
$policies = Get-DlpCompliancePolicy | Where-Object { $_.Mode -eq "Enable" }
$policies | Select-Object Name, Mode, ExchangeLocation, SharePointLocation | Format-Table

# Vérifier si les politiques couvrent Copilot (Microsoft365CopilotWorkloads)
$policies | Where-Object { $_.Workload -match "Copilot" } | Select-Object Name

Remédiation :

  1. Microsoft Purview > Prévention des pertes de données > Stratégies > Nouvelle stratégie
  2. Créer une stratégie DLP dédiée “Copilot” couvrant :
    • Exchange Online + Teams + SharePoint + OneDrive + Copilot interactions
  3. Définir des règles pour détecter et bloquer : numéros de carte bancaire, NIR, données santé, mots de passe
  4. Configurer les actions : bloquer, notifier l’utilisateur, log dans le portail de conformité
  5. Activer la surveillance des interactions Copilot via Purview Communication Compliance

Valeur par défaut : Aucune politique DLP spécifique à Copilot configurée.


14.1.3 — Activer la journalisation et l’audit des interactions Copilot

Niveau : 🟠 Élevé Référence : CISA SCuBA MS.AAD — Manual Profile : E5 / Copilot for M365 Add-on Licence requise : Microsoft 365 Copilot + Purview Audit Premium

Description : Toutes les interactions Copilot (prompts et réponses) doivent être journalisées pour permettre l’investigation en cas d’incident (fuite de données, usage inapproprié, accès non autorisé). Les logs Copilot sont stockés dans Microsoft Purview et disponibles via Audit Premium.

Vérification :

# Vérifier l'état de l'audit unifié
Connect-IPPSSession
Get-AdminAuditLogConfig | Select-Object UnifiedAuditLogIngestionEnabled

# Rechercher les événements Copilot dans les logs
$startDate = (Get-Date).AddDays(-30)
$endDate = Get-Date
Search-UnifiedAuditLog -StartDate $startDate -EndDate $endDate -RecordType CopilotInteraction -ResultSize 10 |
    Select-Object CreationDate, UserIds, Operations | Format-Table

Remédiation :

  1. Vérifier que le journal d’audit unifié est actif (voir contrôle 8.1.1)
  2. Microsoft Purview > Audit > Recherche d’audit > Filtrer par “Copilot”
  3. Configurer des alertes sur les interactions Copilot anormales (volume élevé, données sensibles)
  4. Activer Microsoft Purview Communication Compliance pour surveillance continue
  5. Exporter les logs Copilot vers le SIEM pour corrélation

Valeur par défaut : Journalisation des interactions Copilot non activée par défaut.


14.1.4 — Contrôler les plugins et extensions Copilot tiers

Niveau : 🟠 Élevé Référence : Microsoft 365 App Governance — Manual Profile : E5 / Copilot for M365 Add-on Licence requise : Microsoft 365 Copilot + App Governance

Description : Les plugins Copilot (connecteurs tiers, extensions d’agents Copilot) peuvent accéder à des données sensibles et les transmettre à des services externes. Sans gouvernance, les utilisateurs peuvent installer des plugins non approuvés qui créent des risques de fuite de données ou d’injection de prompts malveillants.

Vérification :

# Vérifier les consentements d'applications tiers pour Copilot
$apps = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/servicePrincipals?`$filter=tags/any(t:t eq 'WindowsAzureActiveDirectoryIntegratedApp')" -Method GET
$apps.value | Select-Object displayName, appId | Format-Table

# Lister les agents Copilot déployés
# Microsoft 365 Admin Center > Copilot > Agents

Remédiation :

  1. Microsoft 365 Admin Center > Settings > Integrated apps > Gérer les plugins Copilot
  2. Désactiver les plugins tiers non approuvés par le service IT
  3. Créer une liste d’applications Copilot approuvées
  4. Activer Microsoft App Governance pour surveiller les comportements des plugins
  5. Configurer le consentement administrateur obligatoire pour tous les nouveaux plugins Copilot (voir contrôle 1.5.x)

Valeur par défaut : Tous les plugins disponibles dans le store peuvent être installés par les utilisateurs.


14.1.5 — Appliquer les étiquettes de sensibilité aux contenus générés par Copilot

Niveau : 🟠 Élevé Référence : Microsoft Purview Sensitivity Labels — Manual Profile : E5 / Copilot for M365 Add-on Licence requise : Microsoft 365 Copilot + AIP/Purview P2

Description : Les documents créés ou modifiés par Copilot doivent hériter de l’étiquette de sensibilité la plus élevée des sources utilisées. Sans cette configuration, Copilot peut créer un document non classifié en se basant sur des contenus Confidentiels — le document résultant ne sera pas protégé.

Vérification :

# Vérifier les politiques d'étiquettes auto-appliquées
Connect-IPPSSession
Get-AutoSensitivityLabelPolicy | Select-Object Name, Mode, ApplySensitivityLabel | Format-Table

# Vérifier si Copilot est configuré pour hériter des étiquettes
Get-LabelPolicy | Select-Object Name, Settings | Format-Table

Remédiation :

  1. Microsoft Purview > Protection des informations > Étiquettes de sensibilité > Paramètres Copilot
  2. Activer “Copilot doit utiliser l’étiquette la plus restrictive parmi les contenus référencés”
  3. Configurer des politiques d’étiquetage automatique pour les contenus générés par IA
  4. Former les utilisateurs à vérifier les étiquettes des documents générés par Copilot

Valeur par défaut : Copilot ne propage pas les étiquettes de sensibilité automatiquement.


14.1.6 — Gouverner les licences Copilot et restreindre l’accès aux groupes autorisés

Niveau : 🟡 Moyen Référence : CIS 5.1.x — Manual Profile : E5 / Copilot for M365 Add-on Licence requise : Microsoft 365 Copilot (add-on)

Description : Les licences Copilot doivent être assignées de manière contrôlée via des groupes d’approbation, et non distribués massivement. Un utilisateur avec Copilot peut accéder et synthétiser en secondes des volumes de données auxquels il aurait normalement accès mais ne consulterait jamais. Une gouvernance stricte des licences réduit la surface d’exposition.

Vérification :

# Lister les utilisateurs avec licence Copilot
Get-MgUser -All | Where-Object {
    $_.AssignedLicenses.SkuId -contains "639dec6b-bb19-468b-871c-c5c441c4b0cb" # SKU Copilot M365
} | Select-Object DisplayName, UserPrincipalName | Format-Table

# Vérifier le nombre total de licences utilisées
(Get-MgSubscribedSku | Where-Object { $_.SkuPartNumber -like "*COPILOT*" }).ConsumedUnits

Remédiation :

  1. Microsoft 365 Admin Center > Facturation > Licences > Microsoft 365 Copilot
  2. Créer un groupe de sécurité “Copilot-Autorisés” pour l’assignation des licences
  3. Définir un processus d’approbation (manager + IT) pour les nouvelles demandes Copilot
  4. Revoir trimestriellement la liste des utilisateurs Copilot et retirer les licences inutilisées
  5. Lier l’activation Copilot à la completion d’une formation sur l’utilisation responsable de l’IA

Valeur par défaut : Les licences peuvent être assignées sans processus d’approbation.


14.1.7 — Détecter et bloquer les attaques par injection de prompt (Prompt Injection) dans Copilot

Niveau : 🟠 Élevé Référence : OWASP LLM Top 10 — LLM01 · Microsoft Purview — Manual MITRE ATT&CK : T1059 (Command and Scripting Interpreter) · T1534 (Internal Spearphishing) · T1656 (Impersonation) Licence requise : Microsoft 365 Copilot + Purview Communication Compliance

Description : Les attaques par injection de prompt ciblent Copilot for M365 de deux façons : (1) Injection directe — un utilisateur malveillant formule un prompt conçu pour contourner les garde-fous de Copilot et accéder à des données auxquelles il n’aurait normalement pas accès ; (2) Injection indirecte — un document SharePoint ou un email contient des instructions cachées (texte blanc sur fond blanc, métadonnées) qui manipulent Copilot lorsqu’il traite ce contenu pour exfiltrer des informations. Ces attaques sont difficiles à détecter sans surveillance spécifique.

Vérification :

# Rechercher des interactions Copilot anormales dans les logs d'audit
Connect-IPPSSession
$startDate = (Get-Date).AddDays(-30)
Search-UnifiedAuditLog -StartDate $startDate -EndDate (Get-Date) `
    -RecordType CopilotInteraction -ResultSize 100 |
    Select-Object CreationDate, UserIds, Operations, AuditData |
    Where-Object { $_.AuditData -match "SharePoint|OneDrive" } |
    Format-Table

# Rechercher des documents SharePoint avec du texte masqué (indicateur d'injection)
# Purview > Content Search > filtrer par type de document et contenu suspect

Remédiation :

  1. Activer Microsoft Purview Communication Compliance avec politique de surveillance Copilot
  2. Configurer des alertes sur les prompts contenant des patterns suspects (ex: “ignore previous instructions”, “act as”, injections en base64)
  3. Activer la protection Purview Information Barriers pour prévenir les accès croisés non autorisés
  4. Sensibiliser les utilisateurs aux risques d’injection via des documents SharePoint/email malveillants
  5. Mettre en place une révision périodique des interactions Copilot à haut volume ou hors périmètre habituel
  6. Activer Microsoft Defender XDR pour la détection des comportements Copilot anormaux

Valeur par défaut : Aucune protection spécifique contre les injections de prompt dans Copilot.


14.1.8 — Détecter les comptes zombies avec licences M365 actives (License Hygiene)

Niveau : 🟡 Moyen Référence : CIS 5.1.x — Manual MITRE ATT&CK : T1078 (Valid Accounts) · T1078.004 (Valid Accounts: Cloud) · T1531 (Account Access Removal) Licence requise : Microsoft 365 (toute édition)

Description : Les comptes “zombies” (utilisateurs désactivés ou partis depuis > 30 jours) qui conservent des licences M365 actives représentent un double problème : (1) Risque de sécurité — un compte désactivé peut être réactivé par un attaquant ou un insider, conservant ses accès et données ; (2) Coût inutile — chaque licence non recyclée représente un surcoût mensuel. Les licences Copilot (≈ 30$/user/mois) sont particulièrement importantes à récupérer. Une bonne hygiène de licences est aussi un signal de maturité en cybersécurité.

Vérification :

# Identifier comptes désactivés avec des licences actives
$disabledWithLicenses = Get-MgUser -All -Filter "accountEnabled eq false" `
    -Property "displayName,userPrincipalName,accountEnabled,assignedLicenses,signInActivity" |
    Where-Object { $_.AssignedLicenses.Count -gt 0 } |
    Select-Object DisplayName, UserPrincipalName,
        @{N="Licences";E={$_.AssignedLicenses.Count}},
        @{N="DernièreConnexion";E={$_.SignInActivity.LastSignInDateTime}}
$disabledWithLicenses | Format-Table
Write-Host "Total comptes zombies avec licences: $($disabledWithLicenses.Count)" -ForegroundColor Red

# Identifier comptes avec licence Copilot inactifs depuis > 90 jours
$copilotSku = "639dec6b-bb19-468b-871c-c5c441c4b0cb"
$staleDate = (Get-Date).AddDays(-90)
Get-MgUser -All -Property "displayName,userPrincipalName,assignedLicenses,signInActivity" |
    Where-Object {
        $_.AssignedLicenses.SkuId -contains $copilotSku -and
        ($_.SignInActivity.LastSignInDateTime -lt $staleDate -or $_.SignInActivity.LastSignInDateTime -eq $null)
    } | Select-Object DisplayName, UserPrincipalName | Format-Table

Remédiation :

  1. Supprimer immédiatement les licences des comptes désactivés
  2. Mettre en place un processus de départ automatisé (offboarding) : désactivation → retrait licence → archivage → suppression (90 jours)
  3. Configurer une Access Review automatique trimestrielle pour les comptes inactifs depuis > 90 jours
  4. Récupérer en priorité les licences Premium (Copilot, E5, Entra ID P2)
  5. Intégrer la revue de licences dans le processus RH de départ

Valeur par défaut : Les licences sont conservées sur les comptes désactivés jusqu’à suppression manuelle.


14.1.9 — Désactiver ou restreindre la recherche Web dans Copilot pour M365

Niveau : 🟠 Élevé Référence : Microsoft Copilot Security — OWASP LLM09

Description : La recherche Web dans Copilot permet à l’outil d’interroger Bing lors d’une interaction. Des prompts contenant des données internes sensibles (noms de projets confidentiels, clients, données financières) peuvent ainsi être partiellement exposés à des moteurs de recherche externes ou au traitement Bing. Dans les environnements haute sécurité, cette fonctionnalité doit être désactivée ou limitée aux utilisateurs autorisés.

Vérification :

  • Microsoft 365 Admin Center > Paramètres > Copilot > Recherche Web
  • Ou via Microsoft 365 Apps Admin Center > Paramètres de confidentialité Copilot

Remédiation :

  1. Microsoft 365 Admin Center > Paramètres > Microsoft Copilot
  2. Désactiver “Autoriser les utilisateurs à utiliser la recherche Web dans Copilot”
  3. Si recherche web nécessaire pour certains groupes : créer une stratégie ciblée
  4. Informer les utilisateurs de la désactivation et des raisons de sécurité

Valeur par défaut : Recherche Web activée — les prompts peuvent interroger Bing.


14.1.10 — Gouverner la création d’agents Copilot personnalisés par les utilisateurs

Niveau : 🟠 Élevé Référence : Microsoft Copilot Extensibility — OWASP LLM08

Description : Microsoft 365 Copilot permet aux utilisateurs de créer des “agents” (Custom Copilot) qui peuvent accéder à des sources de données spécifiques, exécuter des actions et être partagés avec d’autres utilisateurs. Sans gouvernance, un utilisateur peut créer un agent malveillant ou mal configuré qui exfiltre des données via des prompts, partage des informations sensibles avec des utilisateurs non autorisés, ou interagit avec des API externes non approuvées.

Vérification :

  • Microsoft 365 Admin Center > Paramètres > Copilot > Agents et plugins
  • Vérifier qui peut créer et publier des agents

Remédiation :

  1. Restreindre la création d’agents Copilot aux utilisateurs/groupes approuvés
  2. Exiger une approbation IT avant la publication d’un agent à d’autres utilisateurs
  3. Activer l’audit des agents créés dans Microsoft Purview
  4. Revoir trimestriellement les agents publiés dans l’organisation

Valeur par défaut : Tous les utilisateurs Copilot peuvent créer et partager des agents.


14.1.11 — Configurer la rétention et l’audit des interactions Copilot (prompts et réponses)

Niveau : 🟠 Élevé Référence : Microsoft Purview — Copilot Audit

Description : Les interactions Copilot (prompts et réponses) doivent être journalisées dans Microsoft Purview pour permettre l’investigation forensic en cas d’incident : fuite de données, utilisation inappropriée, ou injection de prompt réussie. Sans journalisation, il est impossible de déterminer quelles données ont été exposées lors d’un incident impliquant Copilot.

Vérification :

# Vérifier que les événements Copilot sont dans l'audit log
Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) `
    -RecordType CopilotInteraction -ResultSize 10 | Select-Object CreationDate, UserIds, Operations
# Résultat attendu : événements présents si Copilot est utilisé

Remédiation :

  1. S’assurer que l’Unified Audit Log est activé (contrôle 6.1.1)
  2. Microsoft Purview > Audit > Vérifier que “CopilotInteraction” est dans les événements journalisés
  3. Créer une politique de rétention Purview couvrant les interactions Copilot (12 mois minimum)
  4. Configurer des alertes sur les interactions avec des fichiers hautement sensibles (label Confidentiel)

Valeur par défaut : Interactions Copilot dans l’audit log si UAL activé — mais pas de politique de rétention spécifique.


SECTION 15 — ATTACK PATH & IDENTITY EXPOSURE

Contexte : Un audit de contrôles vérifie que les bonnes configurations existent. Cette section vérifie si un attaquant peut concrètement exploiter des chemins d’escalade dans le tenant. Elle transforme l’audit de posture en audit offensif-aware. Sources : Microsoft Security Exposure Management, BloodHound Enterprise concepts, Entra Attack Paths.


15.1 Chemins d’Escalade vers les Privilèges Globaux


15.1.1 — Auditer les chemins d’escalade vers Global Administrator (Attack Path)

Niveau : 🔴 Critique Référence : Microsoft Security Exposure Management — Automated

Description : Un chemin d’attaque vers Global Administrator existe quand une identité non-privilégiée peut atteindre ce rôle en une ou plusieurs étapes : via une App Registration avec permissions RoleManagement.ReadWrite.Directory, via un group owner d’un groupe assigné au rôle GA, via un SP avec credentials non sécurisés et droits élevés, ou via une Workload Identity Federation mal configurée. Ces chemins sont souvent invisibles dans les audits de configuration classiques.

Vérification :

# Identifier les identités pouvant s'escalader vers Global Admin
# Étape 1 : Apps avec RoleManagement.ReadWrite.Directory
$dangerous = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/servicePrincipals?`$expand=appRoleAssignments" -Method GET
$escalationPaths = @()

# Étape 2 : Propriétaires de groupes assignés à des rôles
$gaRole = Get-MgDirectoryRole -Filter "DisplayName eq 'Global Administrator'"
$gaGroups = Get-MgDirectoryRoleMember -DirectoryRoleId $gaRole.Id -All | Where-Object { $_.'@odata.type' -eq '#microsoft.graph.group' }
foreach ($group in $gaGroups) {
    $owners = Get-MgGroupOwner -GroupId $group.Id
    $escalationPaths += $owners | ForEach-Object {
        [PSCustomObject]@{ Type = "GroupOwner→GA"; Identity = $_.AdditionalProperties.displayName; Via = $group.AdditionalProperties.displayName }
    }
}
$escalationPaths | Format-Table
Write-Host "⚠️ Chemins d'escalade vers GA identifiés : $($escalationPaths.Count)"

Remédiation :

  1. Pour chaque chemin d’escalade identifié : évaluer la légitimité et corriger
  2. Supprimer les App Registrations non nécessaires avec permissions de gestion des rôles
  3. Convertir les assignations de groupes directs en PIM for Groups
  4. Activer Microsoft Security Exposure Management pour la détection continue des attack paths
  5. Revoir trimestriellement les chemins d’escalade avec l’équipe SecOps

Valeur par défaut : Aucune détection automatique des chemins d’escalade — visibles uniquement via audit manuel ou outils spécialisés.


15.1.2 — Détecter les scénarios de contournement des politiques CA (CA Policy Bypass)

Niveau : 🔴 Critique Référence : Entra ID — CA Gap Analysis

Description : Les politiques CA peuvent être contournées via : des exclusions trop larges (groupes entiers exclus), des applications non couvertes (toutes les apps cloud ≠ toutes les apps réellement utilisées), des protocoles legacy non bloqués, ou des comptes service exclus sans justification. Un attaquant qui identifie ces angles morts peut s’y engouffrer. Microsoft propose un outil d’analyse des lacunes CA dans le portail Entra.

Vérification :

# Analyser les lacunes CA : utilisateurs exclus de la politique MFA principale
$mfaPolicy = Get-MgIdentityConditionalAccessPolicy -All | Where-Object {
    $_.State -eq "enabled" -and
    $_.Conditions.Users.IncludeUsers -contains "All" -and
    $_.GrantControls.BuiltInControls -contains "mfa"
}
foreach ($policy in $mfaPolicy) {
    $excludedUsers = $policy.Conditions.Users.ExcludeUsers.Count
    $excludedGroups = $policy.Conditions.Users.ExcludeGroups.Count
    Write-Host "Politique: $($policy.DisplayName)"
    Write-Host "  Utilisateurs exclus : $excludedUsers"
    Write-Host "  Groupes exclus     : $excludedGroups"
    if ($excludedUsers + $excludedGroups -gt 5) {
        Write-Host "  ⚠️ Nombre d'exclusions élevé — risque de lacune CA" -ForegroundColor Yellow
    }
}
# Portail : Entra ID > Protection > CA > Insights & Reporting > What If

Remédiation :

  1. Utiliser l’outil “What If” CA pour simuler des scénarios d’accès suspects
  2. Réduire les exclusions au strict minimum (seulement Break Glass + comptes de service documentés)
  3. Vérifier que les applications critiques (Exchange, SharePoint, Teams, Azure Portal) sont toutes couvertes
  4. Activer le mode “Rapport seul” pour tester les nouvelles politiques avant activation
  5. Revoir toutes les exclusions CA mensuellement

Valeur par défaut : Aucun outil de détection des lacunes CA — les bypass sont identifiables uniquement par revue manuelle.


15.1.3 — Auditer les scénarios d’abus de relations cross-tenant (Cross-Tenant Trust Abuse)

Niveau : 🟠 Élevé Référence : Entra ID — Cross-Tenant Access Settings

Description : Les relations B2B cross-tenant peuvent être exploitées si la politique d’accès cross-tenant est trop permissive : un tenant partenaire compromis peut utiliser sa relation de confiance pour pivoter vers votre tenant. Les paramètres de “trust MFA” (faire confiance au MFA du tenant partenaire) sont particulièrement risqués si le tenant partenaire a une posture MFA faible.

Vérification :

# Vérifier les paramètres de confiance cross-tenant
$xtapDefault = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/default" -Method GET
Write-Host "Trust MFA externe : $($xtapDefault.inboundTrust.isMfaAccepted)"
Write-Host "Trust Compliant Device externe : $($xtapDefault.inboundTrust.isCompliantDeviceAccepted)"
if ($xtapDefault.inboundTrust.isMfaAccepted -eq $true) {
    Write-Host "⚠️ CRITIQUE : Vous faites confiance au MFA de tenants externes inconnus" -ForegroundColor Red
}

# Vérifier les partenaires avec trust MFA spécifique
$partners = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners" -Method GET
$partners.value | Where-Object { $_.inboundTrust.isMfaAccepted -eq $true } |
    Select-Object tenantId, displayName | Format-Table

Remédiation :

  1. Désactiver le trust MFA par défaut pour les tenants inconnus
  2. Activer le trust MFA uniquement pour des partenaires de confiance spécifiques et documentés
  3. Revoir trimestriellement les partenaires avec relations de confiance actives
  4. Pour les partenaires critiques : exiger leur conformité à votre politique MFA (pas de trust aveugle)

Valeur par défaut : Confiance MFA externe désactivée par défaut, mais configurable — risque si mal paramétré.


SECTION 16 — DETECTION & MATURITÉ SOC

Contexte : Vérifier la configuration ne suffit pas — il faut s’assurer que quelqu’un détecte réellement les attaques en cours. Cette section audite la capacité de détection et de réponse, passant de l’audit de posture à l’audit SOC-ready.


16.1 Détection des Menaces Identité


16.1.1 — Activer et configurer les alertes Defender for Identity mappées MITRE ATT&CK

Niveau : 🔴 Critique Référence : Microsoft Defender for Identity — CISA MS.DEFENDER Licence requise : Microsoft 365 E5 ou Defender for Identity add-on

Description : Microsoft Defender for Identity détecte les attaques sur les identités (pass-the-hash, pass-the-ticket, Kerberoasting, LDAP recon, DCSync, Golden Ticket). Sans alertes configurées et transmises au SOC, ces attaques sont invisibles même si toutes les politiques de configuration sont correctes. En 2026, les incidents M365 les plus graves (BEC, ransomware, APT) passent tous par la couche identité.

Vérification :

# Vérifier les alertes Defender for Identity actives
$alerts = Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/v1.0/security/alerts_v2?`$filter=serviceSource eq 'microsoftDefenderForIdentity'&`$top=20" -Method GET
Write-Host "Alertes Defender for Identity (7 derniers jours) : $($alerts.value.Count)"

# Vérifier la couverture des capteurs (pour environnements hybrides)
# Portail MDI : security.microsoft.com > Settings > Identities > Sensors

Remédiation :

  1. Activer Microsoft Defender for Identity dans le portail Defender XDR
  2. Pour environnements hybrides : déployer les capteurs MDI sur tous les Domain Controllers
  3. Configurer les notifications email pour toutes les alertes de sévérité Haute et Critique
  4. Intégrer les alertes MDI dans Microsoft Sentinel via le connecteur MDI
  5. Créer des règles d’analytics Sentinel pour les tactiques MITRE clés : T1078 (Valid Accounts), T1110 (Brute Force), T1003 (Credential Dumping)

Valeur par défaut : Defender for Identity non configuré — les attaques sur les identités sont invisibles.


16.1.2 — Activer les Use Cases Microsoft Sentinel pour BEC, Token Theft et Consent Grant

Niveau : 🟠 Élevé Référence : Microsoft Sentinel — MITRE ATT&CK Coverage Licence requise : Microsoft Sentinel (Log Analytics)

Description : Microsoft Sentinel propose des règles d’analytics prêtes à l’emploi (OOTB) pour les scénarios d’attaque M365 les plus courants. Sans ces règles activées, les indicateurs d’attaque sont dans les logs mais personne ne les corrèle : un vol de token, une campagne BEC ou un consent phishing réussi passent inaperçus pendant des semaines.

Vérification :

# Les règles Sentinel ne sont pas vérifiables via Graph — utiliser le portail
# Sentinel > Analytics > Vérifier les règles actives pour :
$keyRules = @(
    "Suspicious application consent similar to O365 Attack Toolkit",
    "Rare application consent",
    "Mail forwarding rules to external domains",
    "Token-stealing sign-in patterns",
    "Azure AD Identity Protection risky sign-ins",
    "Sign-ins from IPs matching known malicious actors"
)
Write-Host "Règles clés à vérifier dans Sentinel Analytics :"
$keyRules | ForEach-Object { Write-Host "  - $_" }

Remédiation :

  1. Microsoft Sentinel > Gestion des contenus > Hub de contenus > Microsoft 365 Defender
  2. Installer la solution “Microsoft 365 Defender” (inclut les règles BEC, Token Theft, etc.)
  3. Activer les règles d’analytics OOTB pour M365 Identity
  4. Configurer la fréquence de détection : 5 minutes pour les alertes critiques
  5. Créer des playbooks d’auto-réponse (Logic Apps) pour les alertes haute sévérité

Valeur par défaut : Aucune règle d’analytics activée — les logs sont collectés mais non analysés.


16.1.3 — Activer UEBA (User and Entity Behavior Analytics) dans Microsoft Sentinel

Niveau : 🟠 Élevé Référence : Microsoft Sentinel UEBA Licence requise : Microsoft Sentinel + Entra ID P2

Description : L’UEBA (User and Entity Behavior Analytics) dans Sentinel construit des profils comportementaux pour chaque utilisateur et entité (appareil, IP, application). Toute déviation statistiquement significative génère une alerte avec score de risque. C’est la détection des “unknown unknowns” — les comportements anormaux qui ne correspondent à aucune règle connue mais indiquent une compromission (utilisateur se connectant à 3h du matin, accédant à des fichiers inhabituels, depuis une IP jamais vue).

Vérification :

  • Microsoft Sentinel > Configuration > Paramètres > UEBA
  • Vérifier que UEBA est activé et que les sources de données sont connectées

Remédiation :

  1. Microsoft Sentinel > Configuration > Paramètres > UEBA
  2. Activer UEBA pour le tenant
  3. Connecter les sources : Entra ID Sign-in Logs, Audit Logs, Defender for Endpoint
  4. Définir les groupes sensibles pour la surveillance renforcée (Direction, Finance, IT)
  5. Configurer des alertes sur les scores UEBA > 8/10

Valeur par défaut : UEBA désactivé — aucune analyse comportementale des utilisateurs.


SECTION 17 — GOUVERNANCE OPÉRATIONNELLE SÉCURITÉ

Contexte : Les auditeurs NIS2, ISO 27001 et SOC2 exigent non seulement des contrôles techniques, mais la preuve qu’ils sont maintenus dans le temps via des processus opérationnels documentés.


17.1 Processus et Runbooks SOC


17.1.1 — Documenter et tester les runbooks SOC pour les incidents M365

Niveau : 🟠 Élevé Référence : NIST SP 800-61 — Incident Response — Manual

Description : Un tenant M365 sans runbooks SOC est une organisation qui découvrira comment répondre à un incident pendant l’incident. Les runbooks doivent couvrir les scénarios les plus probables : compromission de compte admin, BEC (virement frauduleux), ransomware cloud, exfiltration SharePoint, consent phishing réussi. Ils doivent être testés annuellement via des exercices tabletop.

Vérification :

  • Demander les runbooks SOC M365 à l’équipe sécurité
  • Vérifier la date du dernier test (tabletop ou exercice réel)
  • Vérifier que les runbooks couvrent les scénarios : compromission admin, BEC, ransomware cloud, consent phishing

Remédiation :

  1. Créer des runbooks pour chaque scénario d’incident M365 critique
  2. Chaque runbook doit inclure : détection, confinement, éradication, récupération, communication
  3. Tester les runbooks via tabletop exercise annuel minimum
  4. Intégrer les runbooks dans Microsoft Sentinel comme playbooks Logic Apps
  5. Former l’équipe SOC sur les spécificités M365 (Graph API, PowerShell, portail Defender)

Valeur par défaut : Aucun runbook SOC M365 — réponse aux incidents improvisée.


17.1.2 — Automatiser la rotation des secrets App Registration (< 90 jours)

Niveau : 🟠 Élevé Référence : CIS 5.x — Automated

Description : Les secrets clients des App Registrations ont souvent des durées de vie excessives (jusqu’à 2 ans), parfois créés avec des valeurs maximales par habitude. Un secret expiré ou volé non détecté reste utilisable jusqu’à sa date d’expiration. La rotation automatique via Azure Key Vault ou des scripts planifiés garantit qu’aucun secret n’a une durée de vie supérieure à 90 jours.

Vérification :

# Secrets App Registration avec expiration > 90 jours ou déjà expirés
$cutoff90 = (Get-Date).AddDays(90)
Get-MgApplication -All | ForEach-Object {
    $app = $_
    $app.PasswordCredentials | ForEach-Object {
        [PSCustomObject]@{
            App        = $app.DisplayName
            SecretName = $_.DisplayName
            Created    = $_.StartDateTime
            Expires    = $_.EndDateTime
            Status     = if ($_.EndDateTime -lt (Get-Date)) { "❌ EXPIRÉ" }
                         elseif ($_.EndDateTime -gt $cutoff90) { "⚠️ DURÉE > 90j" }
                         else { "✅ OK" }
        }
    }
} | Where-Object { $_.Status -ne "✅ OK" } | Format-Table

Remédiation :

  1. Créer un script planifié (Azure Automation Runbook) pour détecter les secrets expirant dans 30 jours
  2. Envoyer une alerte au propriétaire de l’application 30 jours avant expiration
  3. Migrer vers Azure Key Vault + Managed Identity pour les applications Azure
  4. Pour les apps impossibles à migrer : rotation automatique via Automation Account
  5. Définir une politique : durée maximale des secrets = 90 jours

Valeur par défaut : Secrets avec durée de vie jusqu’à 2 ans — aucune rotation automatique.


17.1.3 — Réaliser un exercice Purple Team annuel sur le tenant M365

Niveau : 🟡 Moyen Référence : CISA CTEM (Continuous Threat Exposure Management) — Manual

Description : Un Purple Team exercise combine des attaques simulées (Red Team) avec une analyse en temps réel de la détection (Blue Team) sur le tenant M365. Les scénarios typiques : MFA Fatigue attack, AiTM phishing, consent phishing, exfiltration SharePoint via API, privilege escalation via App Registration. Ces exercices révèlent les lacunes de détection que les audits de configuration ne trouvent pas.

Vérification :

  • Demander le rapport du dernier Purple Team exercise M365
  • Vérifier que les scénarios MITRE ATT&CK couvrent au minimum : Initial Access (T1566), Credential Access (T1078), Persistence (T1098), Exfiltration (T1048)

Remédiation :

  1. Planifier un Purple Team exercise M365 annuel (ou semestriel pour les organisations à risque élevé)
  2. Utiliser des outils de simulation : Microsoft Attack Simulator (pour phishing), AADInternals (pour tests AD), Maester (pour validation de posture)
  3. Documenter tous les écarts de détection identifiés et les corriger dans les 30 jours
  4. Mettre à jour les règles Sentinel et les runbooks SOC après chaque exercice

Valeur par défaut : Aucun exercice Purple Team — lacunes de détection non identifiées.


SECTION 18 — RISQUE HUMAIN & INSIDER THREAT

Contexte : 85% des incidents de sécurité impliquent l’humain. Cette section audite les contrôles ciblant le comportement humain — phishing, erreurs non intentionnelles, et risques internes.


18.1 Sensibilisation et Simulation


18.1.1 — Déployer des simulations de phishing régulières avec métriques de taux de clic

Niveau : 🟠 Élevé Référence : CIS Control 14 — Security Awareness Licence requise : Microsoft Defender for Office 365 P2 (Attack Simulator)

Description : Microsoft Attack Simulator (intégré dans Defender for Office 365 P2) permet de lancer des campagnes de phishing simulées ciblant les utilisateurs. Sans simulation régulière, le taux de clic réel sur les phishing est inconnu, et les utilisateurs vulnérables ne sont pas identifiés. L’objectif est un taux de clic < 5% après formation et une amélioration mesurable d’une campagne à l’autre.

Vérification :

  • Portail Defender > Entraînement à la simulation d’attaque
  • Vérifier la date de la dernière simulation et le taux de clic moyen

Remédiation :

  1. Portail Defender > Entraînement à la simulation d’attaque > Créer une simulation
  2. Fréquence recommandée : une simulation par trimestre minimum
  3. Cibler en priorité : Direction, Finance, RH, IT (comptes à haut risque)
  4. Assigner automatiquement une formation aux utilisateurs qui cliquent
  5. Partager les métriques avec la direction (taux de clic, évolution, comparaison sectorielle)

Valeur par défaut : Aucune simulation de phishing configurée.


18.1.2 — Activer et configurer Insider Risk Management (Microsoft Purview)

Niveau : 🟠 Élevé Référence : CISA Insider Threat — Manual Licence requise : Microsoft 365 E5 Compliance ou add-on

Description : Microsoft Purview Insider Risk Management détecte les comportements anormaux pouvant indiquer un risque interne : téléchargements massifs avant une démission, envois de fichiers vers des emails personnels, accès inhabituels à des projets sensibles, utilisation de clés USB. En 2026, les départs d’employés vers des concurrents accompagnés d’exfiltration de données sont l’une des menaces internes les plus fréquentes.

Vérification :

  • Microsoft Purview > Insider Risk Management > Vue d’ensemble
  • Vérifier si des politiques de risque sont actives et si des alertes ont été générées

Remédiation :

  1. Microsoft Purview > Insider Risk Management > Politiques > Créer
  2. Activer la politique “Fuite de données par des utilisateurs qui quittent l’entreprise”
  3. Connecter les données RH (dates de départ) via le connecteur RH Purview
  4. Définir des indicateurs : exfiltration email, téléchargements SharePoint, activité USB
  5. Configurer des seuils d’alerte adaptés au contexte de l’organisation

Valeur par défaut : Insider Risk Management non configuré — risques internes non détectés.


18.1.3 — Surveiller le Shadow IT via Microsoft Defender for Cloud Apps (MCAS)

Niveau : 🟡 Moyen Référence : CIS Control 2 — Software Asset Management Licence requise : Microsoft 365 E5 ou Defender for Cloud Apps add-on

Description : Le Shadow IT — applications cloud utilisées par les employés sans approbation IT — représente un vecteur de fuite de données majeur. Des utilisateurs copiant des données M365 vers Dropbox, Slack personnel, ou des outils IA non approuvés créent des canaux d’exfiltration non surveillés. Microsoft Defender for Cloud Apps découvre ces usages via les logs réseau et les signaux Microsoft 365.

Vérification :

  • Portail Defender > Cloud Apps > Cloud Discovery > Tableau de bord
  • Vérifier le nombre d’applications découvertes et leur niveau de risque

Remédiation :

  1. Activer Cloud Discovery dans Defender for Cloud Apps
  2. Intégrer les logs réseau (proxy, pare-feu) ou utiliser l’intégration Defender for Endpoint
  3. Identifier les applications à risque élevé et les bloquer via Conditional Access App Control
  4. Créer une politique d’utilisation acceptable pour les applications cloud (liste approuvée)
  5. Générer un rapport mensuel Shadow IT pour la direction sécurité

Valeur par défaut : Shadow IT non surveillé — fuite de données via applications non approuvées invisible.


RÉCAPITULATIF — CHECKLIST RAPIDE D’AUDIT M365

Cochez chaque point lors de l’audit. Un point non conforme (❌) doit faire l’objet d’un plan de remédiation avec priorité et date cible.


SECTION 1 — IDENTITÉS ET ACCÈS (MFA, CA, PIM, Invités)

# Contrôle Réf. Niveau Statut Date Commentaire
1.1.1 MFA activé pour TOUS les comptes Administrateurs MS.AAD.3.2v2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.1.2 MFA activé pour TOUS les utilisateurs MS.AAD.3.2v2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.1.3 MFA résistante au phishing exigée pour les rôles admin (FIDO2/WHfB) MS.AAD.3.6v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.1.4 SMS, appel vocal et Email OTP désactivés comme méthodes MFA MS.AAD.3.5v2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.1.5 Number Matching activé pour Microsoft Authenticator MS.AAD.3.3v2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.1.6 Migration des méthodes d’authentification terminée MS.AAD.3.4v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.1.7 Migration méthodes d’authentification finalisée MS.AAD.3.4v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.1.8 Authentification héritée (Legacy Auth) bloquée MS.AAD.1.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.2b.1 Expiration des mots de passe désactivée MS.AAD.6.1v1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.2b.2 Protection des mots de passe Entra ID activée CIS 5.2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.2b.3 Smart Lockout configuré (≤10 tentatives, ≥60s) CIS 5.2 + M365SAT 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.2b.4 Liste de mots de passe bannis personnalisée configurée M365SAT CISAz68 + EIDSCA.PR03 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.2b.5 SSPR exige 2 méthodes d’authentification M365SAT CISAz65 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.3.1 Security Defaults OU Accès Conditionnel activé CIS 4.1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.3.2 Politique CA : appareils conformes exigés MS.AAD.3.7v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.3.3 Politique CA : blocage pays à risque CIS 13.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.3.4 Politique CA : protection portails Azure Management CIS 4.1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.3.5 Fréquence de reconnexion configurée (appareils non gérés) CIS 4.3 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.3.6 CA : Device Code Flow bloqué (Storm-2372) MT.1052 + CA-DEVICECODE-001 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.3.7 CA : Legacy Auth complète bloquée (Other Clients + EAS) MS.AAD.1.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.3.8 CA : Auth résistante au phishing pour admins (FIDO2/Passkey) MS.AAD.3.6v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.4.1 Politique CA : utilisateurs à HAUT RISQUE bloqués MS.AAD.2.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.4.2 Politique CA : connexions à HAUT RISQUE bloquées MS.AAD.2.3v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5.1 Enregistrement d’applications restreint aux admins MS.AAD.5.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5.2 Consentement apps tierces désactivé pour les utilisateurs MS.AAD.5.2v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5.3 Workflow de consentement administrateur activé MS.AAD.5.3v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5c.1 Permissions Midnight Blizzard (AppRoleAssignment + RoleManagement) auditées Inspect-DangerousAppPerms 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5c.2 Rôles Partner Tier1/Tier2 Support audités (invisibles UI) Inspect-PartnerSupport 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5c.3 Apps avec certificat credentials examinées (bypass MFA/CA) Inspect-AppKeyCredentials 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5c.4 Managed Identities avec permissions Graph dangereuses auditées MT.1050/1051 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5c.5 Propriétaires d’app registrations sans MFA identifiés MT.1063 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.5c.6 Service Principals / Workload Identities dormants > 90 jours identifiés M365-Assess ENTRA-ENTAPP 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.6.1 Journaux Entra ID envoyés vers SIEM (12 mois actif) MS.AAD.4.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.7.1 Accès invités aux objets d’annuaire limité MS.AAD.8.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.7.2 Invitation de guests restreinte (rôle Guest Inviter uniquement) MS.AAD.8.2v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.7.3 Invitations guests limitées aux domaines approuvés MS.AAD.8.3v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.1 PIM activé — Aucune assignation permanente de rôle privilégié MS.AAD.7.4v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.2 Nombre de Global Admins entre 2 et 8 MS.AAD.7.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.3 Rôles à granularité fine utilisés (pas de GA inutile) MS.AAD.7.2v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.4 Comptes admin provisionnés en cloud-only (pas de sync AD) MS.AAD.7.3v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.5 Approbation requise pour activer le rôle Global Administrator MS.AAD.7.6v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.6 Alertes sur activations de rôles privilégiés configurées MS.AAD.7.7v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.7 Comptes Break Glass créés et sécurisés CIS 5.4 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.8 Comptes admin dédiés sans messagerie CIS 5.4 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.9 Access Reviews trimestrielles configurées pour rôles admin CIS 5.4 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.10 PIM : approbation requise pour Privileged Role Administrator MS.AAD.7.8v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.11 Access Reviews configurées pour tous les rôles admin (PIM) MS.AAD.7.9v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.12 Admins inactifs >90 jours détectés et désactivés ENTRA-STALEADMIN-001 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.13 Admins privilégiés non exclus des politiques CA critiques CA-EXCLUSION-001 + MT.1036 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.14 Comptes AD synchronisés absents des rôles cloud privilégiés Inspect-DirSyncAdmins + MT.1026 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.8.15 Authentification Passwordless (FIDO2/WHfB) enforced pour comptes privilégiés MS.AAD.3.6v1 + MS.AAD.3.8v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.9.1 Groupe dynamique pour utilisateurs invités créé CIS 5.1.3.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.9.2 Création de groupes de sécurité par les utilisateurs désactivée CIS 5.1.3.2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.9.3 Nombre maximum d’appareils par utilisateur ≤ 20 CIS 5.1.4.2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.9.4 GA non ajouté comme admin local lors de la jointure Entra CIS 5.1.4.3 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.9.5 Jointure d’appareils à Entra restreinte (L2) CIS 5.1.4.1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.9.6 Option “Rester connecté” masquée (L2) CIS 5.1.2.5 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.9.7 Intégration LinkedIn désactivée (L2) CIS 5.1.2.6 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.10.1 Paramètres d’accès cross-tenant (XTAP) configurés de manière restrictive CIS 5.1.5.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.10.2 Tenant Restrictions v2 (TRv2) activées MS.AAD.7.x 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.10.3 Évaluation Continue des Accès (CAE) activée (mode complet) MS.AAD.6.x 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.10.4 Access Reviews trimestrielles pour utilisateurs invités B2B CIS 5.1.8.1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.11.1 Access packages avec rôles obsolètes identifiés MT.1106 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.11.2 Access packages référençant des groupes supprimés nettoyés MT.1107 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.11.3 Politiques d’access packages inactives/orphelines identifiées MT.1108 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.11.4 Approbateurs invalides dans workflows d’access packages corrigés MT.1109 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
1.11.5 Catalogues sans access packages associés identifiés MT.1110 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 2 — MICROSOFT DEFENDER FOR OFFICE 365

# Contrôle Réf. Niveau Statut Date Commentaire
2.1.1 Politique de sécurité Standard activée (tous utilisateurs) MS.DEFENDER.1.2v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.1.2 Politique de sécurité Stricte activée (utilisateurs sensibles) MS.DEFENDER.1.4v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.2.1 Politiques Anti-Phishing configurées (niveau agressif) MS.DEFENDER.2.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.2.2 SPF publié pour tous les domaines (mécanisme -all) MS.EXO.2.2v3 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.2.3 DKIM activé pour tous les domaines MS.EXO.3.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.2.4 DMARC p=reject pour tous les domaines MS.EXO.4.2v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.2.5 Anti-Spoofing activé et configuré CIS 9.2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.3.1 Safe Attachments activé pour Email, SPO, OneDrive, Teams MS.DEFENDER.3.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.3.2 Safe Links activé (AllowClickThrough = Off) MS.EXO.15.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.3.3 Filtrage des types de fichiers dangereux activé MS.EXO.9.1v2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.4.1 Anti-Spam configuré (spam/phishing → quarantaine) MS.EXO.14.2v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
2.4.2 DLP personnalisée pour PII (CC, IBAN, NIR, etc.) MS.DEFENDER.4.1v2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 3 — EXCHANGE ONLINE ET MESSAGERIE

# Contrôle Réf. Niveau Statut Date Commentaire
3.1.1 Transfert automatique vers domaines externes désactivé MS.EXO.1.1v2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.2 Avertissement d’expéditeur externe configuré ([EXTERNE]) MS.EXO.7.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.3 Audit des boîtes mail (Mailbox Auditing) activé MS.EXO.13.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.4 SMTP AUTH désactivé au niveau organisation MS.EXO.5.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.5 POP3 et IMAP4 désactivés pour tous les utilisateurs CIS 4.8 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.6 Listes blanches IP (IPAllowList) vides dans anti-spam MS.EXO.12.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.7 Aucun domaine en liste d’autorisation anti-spam MS.EXO.14.3v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.8 ZAP (Zero-Hour Auto Purge) activé MS.EXO.10.3v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.9 TLS configuré pour les partenaires critiques CIS 3.10 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.10 Chiffrement OME configuré pour données sensibles CIS 3.10 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.11 DMARC p=reject (pas p=none) pour tous les domaines Inspect-DMARCPolicyAction 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.12 SPF hard fail (-all) et non soft fail (~all) Inspect-SPFSoftFail 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.13 7 alertes obligatoires Microsoft Exchange configurées MS.EXO.16.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.14 First Contact Safety Tips + Mailbox Intelligence activés MS.EXO.11.2/11.3 + ORCA.241 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.15 Règles transport bypass PhishSim inexistantes/sécurisées Inspect-SimPhish 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.16 ARC (Authenticated Received Chain) configuré ORCA.243 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.1.17 Délégations boîte mail auditées (Send As, Full Access) Inspect-EXOSendAsPermissions 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.1 Partage de dossiers de contacts avec domaines externes désactivé MS.EXO.6.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.2 Détails de calendriers non partagés avec tous les domaines MS.EXO.6.2v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.3 Alertes Exchange obligatoires CISA activées (7 alertes) MS.EXO.16.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.4 Audit Log rétention ≥ 12 mois actif + 18 mois archive MS.EXO.17.3v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.5 Connexion directe aux boîtes partagées bloquée CIS 1.2.2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.6 Aucune règle de transport n’autorise des domaines entiers (SCL=-1) CIS 6.2.2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.7 AuditBypassEnabled désactivé sur toutes les boîtes CIS 6.1.3 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.8 Politique anti-spam sortant avec limites d’envoi configurées CIS 2.1.15 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.9 Safe list filtre de connexion désactivée CIS 2.1.13 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.10 Notifications admin pour malware sortant interne activées CIS 2.1.3 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
3.2.11 Règles de boîte de réception malveillantes détectées et bloquées CIS 6.2.4 + MS.EXO.8.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 4 — MICROSOFT TEAMS

# Contrôle Réf. Niveau Statut Date Commentaire
4.1.1 Utilisateurs anonymes ne peuvent PAS démarrer de réunions MS.TEAMS.1.2v2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.2 Accès invité Teams restreint et gouverné MS.TEAMS CIS 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.3 Accès externe : seulement domaines spécifiques autorisés MS.TEAMS.2.1v2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.4 Utilisateurs non gérés ne peuvent PAS initier le contact MS.TEAMS.2.2v2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.5 Réunions : salle d’attente pour invités/anonymes MS.TEAMS.1.3v1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.6 Intégration email dans les canaux Teams désactivée MS.TEAMS.4.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.7 Gouvernance des applications Teams (apps tierces contrôlées) MS.TEAMS.5.2v2 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.8 Safe Attachments pour Teams activé MS.TEAMS.7.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.9 Stockage cloud tiers désactivé dans Teams (Box, Dropbox, GDrive, Egnyte, ShareFile) M365SAT CISMTm811 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.10 Partage d’écran restreint (SingleApplication) CIS 3.3 🟢 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.1.11 Utilisateurs Teams non gérés ne peuvent initier de conversations MS.TEAMS.2.2v2 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.2.6 Signalement d’incidents de sécurité Teams activé CIS 8.6.1 + TEAMS-REPORTING-001 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
4.2.7 Publication automatique des enregistrements Teams désactivée MS.TEAMS.3.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 5 — SHAREPOINT ONLINE ET ONEDRIVE

# Contrôle Réf. Niveau Statut Date Commentaire
5.1.1 Partage SharePoint ≤ “Invités existants” MS.SHAREPOINT.1.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.2 Partage OneDrive ≤ “Invités existants” MS.SHAREPOINT.1.2v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.3 Partage externe restreint aux domaines approuvés MS.SHAREPOINT.1.3v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.4 Type de lien par défaut : “Personnes spécifiques” MS.SHAREPOINT.2.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.5 Permissions par défaut des liens : Affichage uniquement MS.SHAREPOINT.2.2v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.2b Expiration obligatoire liens anonymes ≤ 30 jours — RequireAnonymousLinksExpireInDays configuré (défaut = -1 = ∞) CIS 7.2.9 / MS.SHAREPOINT.3.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.7 Liens “Anyone” : permission Affichage uniquement MS.SHAREPOINT.3.2v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.8 Ré-authentification code de vérification ≤ 30 jours MS.SHAREPOINT.3.3v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.9 Accès conditionnel pour appareils non gérés activé CIS 12.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.13 Partage externe SharePoint restreint à un groupe de sécurité SPO-SHARING-008 + MS.SHAREPOINT.1.3v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.14 Expiration automatique accès guest SPO/OD (≤60 jours) CIS 7.2.9 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
5.1.17 Scripts personnalisés bloqués sur les sites SharePoint SPO-SCRIPT-001/002 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 6 — PROTECTION DE L’INFORMATION ET CONFORMITÉ

# Contrôle Réf. Niveau Statut Date Commentaire
6.1.1 Audit Log unifié activé MS.EXO.17.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
6.1.2 Politiques de rétention configurées (Exchange, SPO, OD, Teams) CIS 3.11 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
6.1.3 Politiques DLP actives pour données sensibles (PII) MS.DEFENDER.4.2v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
6.1.4 Étiquettes de sensibilité déployées CIS 3.1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
6.1.5 Communication Compliance configurée (si secteur réglementé) CIS 3.3 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
6.1.6 Insider Risk Management — au moins 1 politique active (Data Leaks / Departing Users) CIS 3.3 + 13.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 7 — SÉCURITÉ DES APPAREILS (INTUNE)

# Contrôle Réf. Niveau Statut Date Commentaire
7.1.1 BitLocker exigé via Intune pour tous les appareils Windows CIS 3.6 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.1.2 Code PIN/mot de passe exigé sur appareils mobiles CIS 4.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.1.3 App Protection Policies (MAM) configurées pour BYOD CIS 2.7 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.1.4 Windows Hello for Business activé MS.AAD.3.7v1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.1.5 Appareils sans politique de conformité = Non conforme (L2) CIS 4.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.1.6 Inscription d’appareils personnels bloquée par défaut (L2) CIS 4.2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.1.7 Multi-Admin Approval (MAA) Intune activé pour actions critiques MT.1096 + INTUNE-MAA-001 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.1.8 Autorité MDM définie sur Intune (pas SCCM ou non configuré) MT.1105 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.1.9 Nettoyage automatique appareils inactifs Intune configuré MT.1053 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.2.1 Tamper Protection (anti-falsification MDE) activée CIS MDE 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.2.2 Règles ASR (Attack Surface Reduction) configurées en mode Block CIS MDE + NIST SI-3 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.2.3 Network Protection activée en mode Block CIS MDE 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.2.4 Investigation et réponse automatisées (AIR) configurées en mode complet MS.DEFENDER.1.5v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
7.2.5 Protection antivirus en temps réel activée et supervisée CIS 9.4.1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 8 — SECURE SCORE ET MONITORING

# Contrôle Réf. Niveau Statut Date Commentaire
8.1.1 Secure Score ≥ 50% et suivi régulier CIS 1.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.2 7 alertes Exchange/Defender obligatoires CISA actives MS.EXO.16.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.3 Alertes de sécurité personnalisées configurées et surveillées MS.EXO.16.2v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.4 Defender for Identity déployé (si hybride AD) CIS 8.11 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.5 Defender for Cloud Apps (CASB) activé CIS 8.11 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.6 Protection des comptes prioritaires activée (E5) CIS 2.4.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.7 Comptes prioritaires avec preset Strict Defender (E5) CIS 2.4.2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.8 Alertes d’activité configurées pour comptes Break Glass CIS 2.2.1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.9 Credentials admins exposés sur endpoints vulnérables détectés (XSPM) MT.1080 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
8.1.10 Drift de configuration détecté (baseline JSON comparée) MT.1060 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 9 — POWER PLATFORM

# Contrôle Réf. Niveau Statut Date Commentaire
9.1.1 Création d’environnements production/sandbox restreinte aux admins MS.POWERPLATFORM.1.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
9.1.2 Création d’environnements d’essai restreinte aux admins MS.POWERPLATFORM.1.2v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
9.1.3 Isolation des tenants Power Platform activée MS.POWERPLATFORM.3.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
9.1.4 Content Security Policy (CSP) pour Power Apps activée MS.POWERPLATFORM.4.1v1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
9.1.5 Création de sites Power Pages restreinte aux admins MS.POWERPLATFORM.5.1v1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
9.1.6 Partage “Tout le monde” Power Apps désactivé MS.POWERPLATFORM.6.1v1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
9.1.7 Politiques DLP Power Platform configurées MS.POWERPLATFORM.2.1v1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
9.1.8 DLP pour environnements non-default configurée MS.POWERPLATFORM.2.2v1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 10 — MICROSOFT FABRIC (POWER BI)

# Contrôle Réf. Niveau Statut Date Commentaire
10.1.1 Accès invité à Microsoft Fabric restreint MS.POWERBI.1.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.2 Invitations d’utilisateurs externes dans Fabric désactivées MS.POWERBI.1.2v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.3 Accès invité au contenu Fabric restreint MS.POWERBI.1.3v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.4 Publication sur Internet (Publish to Web) désactivée MS.POWERBI.2.1v1 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.5 Visuels R et Python interactifs désactivés CIS 9.1.5 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.6 Étiquettes de sensibilité appliquées dans Fabric MS.POWERBI.3.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.7 Liens partageables dans Fabric restreints MS.POWERBI.2.3v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.8 Partage de données externes dans Fabric restreint MS.POWERBI.2.2v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.9 BlockResourceKeyAuthentication activé dans Fabric MS.POWERBI.4.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.10 Accès APIs Fabric par principaux de service restreint CIS 9.1.10 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.11 Principaux de service ne peuvent créer de profils Fabric CIS 9.1.11 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.12 Création d’espaces de travail Fabric par SP restreinte CIS 9.1.12 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
10.1.13 Partage de datasets Power BI cross-workspace restreint MS.POWERBI.5.1v1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 11 — MICROSOFT 365 APPS — SÉCURITÉ OFFICE

# Contrôle Réf. Niveau Statut Date Commentaire
11.1.1 Signature des macros exigée (Require Macro Signing) MSCT v2512 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.1.2 Macros VBA bloquées depuis Internet (MOTW) MSCT v2512 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.1.3 Objets OLE actifs bloqués dans PowerPoint MSCT v2512 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.1.4 Exécution DDE bloquée dans Excel MSCT v2512 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.1.5 Formats de fichiers hérités bloqués (Legacy File Block) MSCT v2512 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.1.6 JScript hérité désactivé dans zones restreintes Office MSCT v2512 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.1.7 Add-ins Office non gérés désactivés (DisableAllAddIns) MSCT v2512 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.2.1 Protocoles non-HTTPS bloqués dans les apps Office MSCT v2512 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.2.2 Liens externes Excel bloqués (File Block External Links) MSCT v2512 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.2.3 Fallback FPRPC bloqué dans les apps Office MSCT v2512 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.2.4 Composants OLE Graph hérités désactivés (MSGraph) MSCT v2512 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.2.5 Add-in OrgChart hérité désactivé MSCT v2512 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.3.1 Journalisation des erreurs Office activée via Intune MSCT v2512 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
11.3.2 Protected View renforcé — documents malveillants bloqués MSCT v2512 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 12 — GESTION ADMINISTRATIVE

# Contrôle Réf. Niveau Statut Date Commentaire
12.1.1 Accès portail admin M365 restreint aux admins CIS 4.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.2 Consentement des utilisateurs aux applications tierces désactivé CIS 4.1 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.3 Création de tenants par les utilisateurs désactivée CIS 4.1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.4 Enregistrement d’appareils restreint aux admins CIS 1.1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.5 Domaines personnalisés correctement configurés et vérifiés CIS 2.1 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.6 Accès Office Store restreint aux administrateurs CIS 1.3.4 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.7 Protection phishing interne Microsoft Forms activée CIS 1.3.5 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.8 Customer Lockbox activé (E5) CIS 1.3.6 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.9 Stockages tiers restreints dans M365 Web (L2) CIS 1.3.7 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.10 Partage externe Sway désactivé CIS 1.3.8 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
12.1.11 Microsoft Bookings restreint ou désactivé (L2) CIS 1.3.9 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 13 — RÉPONSE AUX INCIDENTS

# Contrôle Réf. Niveau Statut Date Commentaire
13.1.1 Plan de réponse aux incidents M365 documenté et testé CIS 17.4 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
13.1.2 Audit Premium activé pour utilisateurs critiques (E5) CIS 8.5 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
13.1.3 Playbooks IR BEC et ransomware M365 documentés et testés NIST 800-61r2 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
13.1.4 Sauvegarde M365 dédiée activée et testée (natif ou tiers) Best Practice 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 14 — MICROSOFT COPILOT FOR M365

# Contrôle Réf. Niveau Statut Date Commentaire
14.1.1 Audit d’oversharing réalisé avant déploiement Copilot (DSPM for AI) Purview DSPM 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
14.1.2 Politiques DLP spécifiques à Copilot configurées Purview DLP 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
14.1.3 Journalisation des interactions Copilot activée (Audit Premium) MS.AAD 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
14.1.4 Plugins et extensions Copilot tiers contrôlés et approuvés App Governance 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
14.1.5 Étiquettes de sensibilité héritées dans les contenus générés par Copilot Purview Labels 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
14.1.6 Licences Copilot gouvernées via groupe d’approbation CIS 5.1.x 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
14.1.7 Protection contre les injections de prompt Copilot (Communication Compliance) OWASP LLM01 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
14.1.8 Comptes zombies avec licences M365 actives détectés et nettoyés CIS 5.1.x 🟡 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 15 — CHEMINS D’ESCALADE ET PRIVILEGE ESCALATION

# Contrôle Réf. Niveau Statut Date Commentaire
15.1.1 Chemins d’escalade vers Global Administrator (Attack Path) audités MSEM Attack Path 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
15.1.2 Scénarios de contournement des politiques CA (CA Policy Bypass) détectés MT.1036 + CA-BYPASS-001 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
15.1.3 Scénarios d’abus de relations cross-tenant (Cross-Tenant Trust Abuse) audités XTAP-ABUSE-001 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 16 — DÉTECTION DES MENACES IDENTITÉ

# Contrôle Réf. Niveau Statut Date Commentaire
16.1.1 Alertes Defender for Identity mappées MITRE ATT&CK activées et configurées MS.DEFENDER + Defender for Identity 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
16.1.2 Use Cases Microsoft Sentinel pour BEC, Token Theft et Consent Grant activés Sentinel — MS.AAD 🔴 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
16.1.3 UEBA (User and Entity Behavior Analytics) activé dans Microsoft Sentinel Sentinel UEBA 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 17 — PROCESSUS ET RUNBOOKS SOC

# Contrôle Réf. Niveau Statut Date Commentaire
17.1.1 Runbooks SOC pour incidents M365 documentés et testés NIST SP 800-61 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
17.1.2 Rotation automatisée des secrets App Registration (< 90 jours) CIS 5.1.x + ENTRA-SECRET-001 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
17.1.3 Exercice Purple Team annuel sur le tenant M365 réalisé MITRE ATT&CK Purple 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

SECTION 18 — SENSIBILISATION ET SIMULATION

# Contrôle Réf. Niveau Statut Date Commentaire
18.1.1 Simulations de phishing régulières déployées avec métriques de taux de clic CIS Control 14 — Attack Simulator 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
18.1.2 Insider Risk Management (Microsoft Purview) activé et configuré Purview IRM — CIS 3.3 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A
18.1.3 Shadow IT surveillé via Microsoft Defender for Cloud Apps (MCAS) MCAS — CIS 8.11 🟠 ☐ ✅ ☐ ❌ ☐ ⚠️ ☐ N/A

RÉSUMÉ EXÉCUTIF DE L’AUDIT — v2

Version : ANC M365 Security Checklist v4.6 — Mars 2026 Contrôles : 280 contrôles uniques | Sources intégrées : CIS M365 v6.0.1 · CISA SCuBA v1.7 · ScubaGear v1.7.1 · M365-Assess v0.9.8 · Maester v2.0 · 365Inspect · M365SAT · ANSSI · RGPD/NIS2 · Microsoft Security Compliance Toolkit v2512 Niveaux de criticité : 🔴 Critique (~53) · 🟠 Élevé (~125) · 🟡 Moyen (~60) · 🟢 Faible (3)


Score Global de Conformité

Indicateur Valeur
Score brut ___ / 280
Pourcentage de conformité ___%
Score pondéré ___ / 100
Contrôles CRITIQUE non conformes ___ / ~60
Contrôles ÉLEVÉ non conformes ___ / ~135
Contrôles MOYEN non conformes ___ / ~65

Calcul du score pondéré /100

Catégorie Poids Nb contrôles Max pts
🔴 Critique × 3 ~60 ~180
🟠 Élevé × 2 ~135 ~270
🟡 Moyen × 1 ~65 ~65
🟢 Faible × 0.5 3 1.5
TOTAL normalisé 280 → /100

Score pondéré = (Σ points conformes × poids) / total pondéré × 100


Niveau de Maturité Sécurité

Score % Niveau Description
< 30% 🔴 Initial Contrôles fondamentaux absents — risque critique immédiat
30–49% 🟠 En développement Bases posées mais lacunes majeures
50–69% 🟡 Défini Posture acceptable — améliorations prioritaires identifiées
70–84% 🟢 Géré Bonne maturité — optimisations ciblées requises
≥ 85% Optimisé Posture excellente — surveillance continue et amélioration continue

Niveau actuel de l’organisation : ____%__________________


TOP 3 RISQUES CRITIQUES IDENTIFIÉS

À compléter après l’audit — indiquer les 3 non-conformités à impact le plus élevé

# Risque Impact Contrôle Remédiation estimée
1 🔴 Critique
2 🔴 Critique
3 🟠 Élevé

Tableau de Couverture par Section

Catégorie Total Conformes ✅ Non Conformes ❌ Partiels ⚠️ N/A
1. Identités et Accès (MFA, CA, PIM, App Sec, CAE, XTAP) ~82
2. Defender for Office 365 9
3. Exchange Online 34
4. Microsoft Teams 18
5. SharePoint / OneDrive 18
6. Protection Information (Purview) 6
7. Sécurité Appareils (Intune + MDE) 14
8. Secure Score & Monitoring 10
9. Power Platform 8
10. Microsoft Fabric / Power BI 13
11. M365 Apps — Sécurité Office 14
12. Gestion Administrative 11
13. Réponse aux Incidents 4
14. Microsoft Copilot for M365 6
TOTAL 🏆 280

Répartition par Niveau de Risque

Niveau Nb non-conformités Délai remédiation Responsable Date cible
🔴 Critique Immédiat (< 15 jours)
🟠 Élevé Court terme (< 30 jours)
🟡 Moyen Moyen terme (< 90 jours)
🟢 Faible Long terme (< 180 jours)

Roadmap de Maturité — 3 Horizons

Horizon Délai Objectif Contrôles prioritaires
H1 — Fondations 0–30 jours Éliminer les risques CRITIQUES 1.1.1, 1.8.1, 1.8.2, 2.3.1/2, 3.2.11, 5.1.1, 6.1.1
H2 — Consolidation 30–90 jours Traiter les risques ÉLEVÉS prioritaires 1.3.x CA, 1.5c.6, 2.2.1-5, 4.2.7, 6.1.3/6, 8.1.1-3
H3 — Optimisation 90–180 jours Niveau Géré/Optimisé Scoring pondéré ≥ 70%, MITRE mapping, Insider Risk, Copilot Gov

Frameworks de Conformité Couverts

Framework Couverture estimée Notes
CIS M365 Foundations v6.0.1 ~95% Base principale de la checklist
CISA SCuBA v1.7 (ScubaGear) ~98% 99/101 contrôles couverts
ANSSI Recommandations M365 ~80% Sections 1, 3, 5, 6 principalement
RGPD / NIS2 ~75% Articles 32/33/34 RGPD + Annexe I NIS2
NIST 800-53 Rev5 ~70% Mapping partiel (AC, AU, IA, SI, SC familles)
ISO 27001:2022 ~65% Contrôles A.5, A.8, A.9, A.12 principalement

TABLEAU DE VÉRIFICATION — COUVERTURE DES 5 OUTILS OPEN-SOURCE

Vérification de l’intégration des contrôles issus de ScubaGear v1.7.1, M365-Assess v0.9.8, Maester v2.0, 365Inspect, et M365SAT dans la présente checklist.

ScubaGear v1.7.1 (CISA) — 101 contrôles / 7 services

Service Total Couverture % Notes
MS.AAD 30 30 100% Tous couverts (Sections 1.1–1.11)
MS.EXO 34 34 100% Sections 3.1–3.2 + 2.2 (DMARC/SPF)
MS.DEFENDER 19 19 100% Section 2 + 3.1.13 (alertes)
MS.SHAREPOINT 8 8 100% Section 5.1 complète
MS.TEAMS 20 19 95% Sections 4.1–4.2 + 4.2.7 Recording (ajout v4.6)
MS.POWERPLATFORM 9 9 100% Section 9.1 complète
MS.POWERBI 8 8 100% Section 10.1 complète (ajout v4.2)
TOTAL 101 100 ~99% Couverture quasi-complète

M365-Assess v0.9.8 — Contrôles clés intégrés

Module M365-Assess Contrôle checklist Section
CA-DEVICECODE-001 Device Code Flow bloqué 1.3.6
CA-EXCLUSION-001 Admins non exclus CA critiques 1.8.13
CA-PHISHRES-001 Auth phish-resistant admins 1.3.8
ENTRA-STALEADMIN-001 Admins inactifs >90j 1.8.12
ENTRA-SYNCADMIN-001 AD sync accounts in cloud roles 1.8.14
ENTRA-ENTAPP-003 Permissions Midnight Blizzard 1.5c.1
ENTRA-ENTAPP-008/009 Managed Identities Graph dangerous 1.5c.4
INTUNE-MAA-001 Multi-Admin Approval Intune 7.1.7
INTUNE-WIPEAUDIT-001 Audit wipe appareils 7.1.9
SPO-SHARING-008 Partage externe groupe sécurité 5.1.13
SPO-SCRIPT-001/002 Custom scripts bloqués 5.1.17
TEAMS-REPORTING-001 Signalement sécurité Teams 4.2.6
TEAMS-CLIENT-002 Email into channel bloqué 4.1.4
Stryker Incident Readiness Admins inactifs + credentials 1.8.12, 8.1.9
ENTRA-DORMANTSP-001 Service Principals inactifs > 90j 1.5c.6
EXO-INBOXRULE-001 Règles inbox malveillantes (BEC) 3.2.11

Maester v2.0 — Contrôles MT, ORCA, EIDSCA, XSPM intégrés

Catégorie IDs clés Couverture
MT (Built-in) MT.1009/1010/1026/1027/1036/1050/1051/1052/1053/1060/1063/1080/1096/1105/1106-1110 ✅ 19/19 intégrés
ORCA (EXO/Defender) ORCA.241 (First Contact), ORCA.243 (ARC), ORCA.226 (Safe Links clickthrough) ✅ Principaux intégrés
EIDSCA EIDSCA.PR03 (banned pwd), EIDSCA.PR05/PR06 (lockout) ✅ 3 prioritaires intégrés
XSPM MT.1080 (credentials exposés endpoints) ✅ Section 8.1.9
CIS Via contrôles CIS v6.0.1 natifs ✅ Entièrement couvert
CISA Via MS.AAD/EXO/DEFENDER natifs ✅ Entièrement couvert

365Inspect (Soteria) — 108 modules — Intégrations clés

Module 365Inspect Contrôle checklist Section
Inspect-DangerousAppPermissions Permissions Midnight Blizzard 1.5c.1
Inspect-PartnerSupport Rôles Partner Tier1/Tier2 1.5c.2
Inspect-AppKeyCredentials Apps avec certificat creds 1.5c.3
Inspect-DirSyncAdmins Comptes synchro dans rôles cloud 1.8.14
Inspect-DMARCPolicyAction DMARC p=reject vs p=none 3.1.11
Inspect-SPFSoftFail SPF -all vs ~all 3.1.12
Inspect-SimPhish Règles bypass PhishSim 3.1.15
Inspect-EXOSendAsPermissions Délégations Send As/Full Access 3.1.17

M365SAT — Contrôles publics intégrés

Référence M365SAT Contrôle Section
CISAz65 SSPR exige 2 méthodes 1.2b.5
CISAz66/67 Smart Lockout seuil/durée 1.2b.3
CISAz68 Custom banned password list 1.2b.4
CISMTm811 5 fournisseurs cloud tiers Teams 4.1.9

TABLEAU DE MAPPING MULTI-FRAMEWORKS

Correspondance entre les contrôles ANC M365 v4.6 et les principaux référentiels : NIST SP 800-53 Rev5, ISO 27001:2022, MITRE ATT&CK Enterprise, RGPD et NIS2.

Mapping NIST SP 800-53 Rev5 ↔ Contrôles ANC

Famille NIST Contrôle NIST Description Contrôle(s) ANC
AC AC-2 Account Management 1.8.2, 1.8.3, 1.8.12, 14.1.8
AC AC-2(1) Automated System Account Management 1.8.11, 1.8.12
AC AC-3 Access Enforcement 1.8.1, 2.1.1, 5.1.1
AC AC-6 Least Privilege 1.8.3, 1.8.4, 1.5.2
AC AC-7 Unsuccessful Logon Attempts 1.2b.3
AC AC-17 Remote Access 1.3.1, 1.3.2
AC AC-20 Use of External Information Systems 1.7.1, 1.10.1
IA IA-2 Identification and Authentication 1.1.1, 1.1.2, 1.8.15
IA IA-2(1) Multi-Factor Authentication (Privileged) 1.1.1, 1.1.3, 1.8.15
IA IA-2(2) Multi-Factor Authentication (Non-Privileged) 1.1.2
IA IA-5 Authenticator Management 1.2b.1, 1.2b.2, 1.2b.4
IA IA-5(1) Password-Based Authentication 1.2b.3, 1.2b.5
IA IA-12 Identity Proofing 1.7.1, 1.7.2
AU AU-2 Event Logging 6.1.1, 3.1.2, 8.1.1
AU AU-3 Content of Audit Records 6.1.1, 8.1.3
AU AU-6 Audit Record Review, Analysis, Reporting 8.1.2, 8.1.3
AU AU-9 Protection of Audit Information 3.2.7
AU AU-11 Audit Record Retention 3.2.4, 6.1.2
AU AU-12 Audit Record Generation 6.1.1, 3.1.13
CM CM-6 Configuration Settings 1.2.x, 12.1.x
CM CM-7 Least Functionality 3.1.5, 4.1.5, 11.1.7
SC SC-5 Denial of Service Protection 2.4.1, 3.2.8
SC SC-8 Transmission Confidentiality and Integrity 3.1.4, 11.2.1
SC SC-28 Protection of Information at Rest 6.1.4, 7.1.1
SI SI-3 Malicious Code Protection 2.3.1, 2.3.2, 11.1.1, 11.1.2
SI SI-4 System Monitoring 8.1.2, 8.1.3, 6.1.6
SI SI-10 Information Input Validation 14.1.7
PM PM-14 Testing, Training, and Monitoring 13.1.1, 13.1.3

Mapping ISO 27001:2022 ↔ Contrôles ANC

Contrôle ISO 27001:2022 Titre Contrôle(s) ANC
A.5.2 Information security roles and responsibilities 12.1.1, 1.8.x
A.5.15 Access control 1.3.1, 1.8.1, 5.1.1
A.5.16 Identity management 1.1.x, 1.8.2, 1.8.4
A.5.17 Authentication information 1.2b.x, 1.8.15
A.5.18 Access rights 1.5.x, 1.8.3, 1.8.11
A.5.23 Information security for use of cloud services 1.10.1, 9.1.1, 14.1.1
A.5.26 Response to information security incidents 13.1.1, 13.1.3
A.5.28 Collection of evidence 6.1.1, 3.1.2
A.5.36 Compliance with policies 6.1.3, 8.1.1
A.6.8 Information security event reporting 4.2.6, 8.1.2
A.8.2 Privileged access rights 1.8.1, 1.8.2, 1.8.5
A.8.3 Information access restriction 1.3.1, 1.3.2, 5.1.4
A.8.5 Secure authentication 1.1.1, 1.1.3, 1.8.15
A.8.7 Protection against malware 2.3.1, 2.3.2, 11.1.1, 11.1.2
A.8.8 Management of technical vulnerabilities 8.1.1, 8.1.10
A.8.11 Data masking 6.1.3, 6.1.4
A.8.12 Data leakage prevention 6.1.3, 5.1.x, 14.1.2
A.8.15 Logging 6.1.1, 3.2.7, 8.1.1
A.8.16 Monitoring activities 8.1.2, 8.1.3, 6.1.6
A.8.17 Clock synchronization 6.1.1
A.8.23 Web filtering 2.3.2
A.8.24 Use of cryptography 7.1.1, 3.1.10

Mapping MITRE ATT&CK Enterprise ↔ Contrôles ANC (vue globale)

MITRE Tactic Technique Titre Contrôle(s) ANC
Initial Access T1566.001 Spearphishing Attachment 2.3.1, 11.1.2
Initial Access T1566.002 Spearphishing Link 2.3.2
Initial Access T1078.004 Valid Accounts: Cloud 1.1.1, 1.3.1, 1.8.1, 1.8.2
Initial Access T1528 Steal Application Access Token 1.5.2, 1.3.6, 1.5c.1
Credential Access T1110 Brute Force 1.2b.3, 1.2b.2
Credential Access T1111 MFA Interception 1.1.3, 1.8.15
Credential Access T1552 Unsecured Credentials 8.1.9
Credential Access T1555 Credentials from Password Stores 8.1.9
Credential Access T1621 MFA Request Generation 1.1.1, 1.1.3
Persistence T1098 Account Manipulation 1.8.1, 1.8.6
Persistence T1098.003 Add Cloud Credentials 1.5c.1, 1.5c.3
Persistence T1137 Office Application Startup 11.1.1
Persistence T1114.003 Email Forwarding Rule 3.1.1, 3.2.11
Defense Evasion T1562.008 Disable Cloud Logs 6.1.1, 3.2.7
Defense Evasion T1564.008 Email Hiding Rules 3.2.11
Defense Evasion T1550.001 Application Access Token 1.5.2, 1.5c.1
Collection T1114 Email Collection 3.1.1, 3.2.11
Collection T1213.002 Data from SharePoint 5.1.1, 5.1.4, 14.1.1
Collection T1530 Data from Cloud Storage 5.1.1, 10.1.4, 10.1.13
Exfiltration T1048 Exfiltration Over Alt Protocol 3.1.1, 5.1.1
Execution T1059.005 Visual Basic 11.1.1, 11.1.2
Execution T1204.002 Malicious File 2.3.1, 11.1.1, 11.1.2
Privilege Escalation T1548 Abuse Elevation 1.8.1

Mapping RGPD / NIS2 ↔ Contrôles ANC

Référence Article/Annexe Obligation Contrôle(s) ANC
RGPD Art. 5 Principes de traitement (intégrité, confidentialité) 6.1.3, 6.1.4, 7.1.1
RGPD Art. 25 Privacy by Design / by Default 5.1.1, 5.1.4, 14.1.1
RGPD Art. 32 Sécurité du traitement 1.1.x, 1.3.1, 6.1.3, 7.1.1
RGPD Art. 33 Notification de violation dans les 72h 6.1.1, 8.1.2, 13.1.1
RGPD Art. 34 Communication aux personnes concernées 13.1.1, 13.1.3
NIS2 Annexe I Mesures de gestion des cyber-risques 1.1.1, 1.8.1, 2.1.1, 6.1.1
NIS2 Art. 21(2)(a) Politiques de sécurité SI 8.1.1, 12.1.x
NIS2 Art. 21(2)(b) Gestion des incidents 13.1.1, 13.1.3, 8.1.2
NIS2 Art. 21(2)(e) Sécurité chaîne d’approvisionnement 1.5.x, 9.1.3, 10.1.x
NIS2 Art. 21(2)(h) Hygiène informatique de base + MFA 1.1.x, 1.2b.x, 7.1.1
NIS2 Art. 21(2)(i) Politiques de cryptographie 3.1.4, 7.1.1, 3.1.10
NIS2 Art. 23 Signalement d’incidents 6.1.1, 13.1.1
NIS2 Art. 32 Contrôle de supervision (entités essentielles) 8.1.1, 8.1.10

PLAN DE REMÉDIATION

# Contrôle non conforme Niveau Action corrective Responsable Date cible Statut

Document produit par AYI NEDJIMI CONSULTANTS (ANC) Confidentiel — Usage exclusif du client Version 4.5 — Mars 2026

Toutes nos checklists sécurité

Retrouvez l'ensemble de nos 11 checklists d'audit et de durcissement professionnelles.

Voir toutes les checklists