☁️ Checklist Sécurité Azure Foundations
Sécurisation Azure : IAM, Entra ID, réseau virtuel, Key Vault, Defender for Cloud, NSG, stockage chiffré et gouvernance.
Checklist complète pour sécuriser les fondations Azure : Entra ID et Conditional Access, réseau virtuel (NSG, Private Endpoints), Key Vault, Defender for Cloud, chiffrement du stockage et gouvernance des abonnements. Chaque contrôle inclut les commandes Azure CLI/PowerShell et les configurations recommandées.
📑 Table des matières
CHECKLIST DE SÉCURITÉ AZURE FOUNDATIONS
AYI NEDJIMI CONSULTANTS
Version : 1.0
Date : 04 Avril 2026
Classification : CONFIDENTIEL
Auteur : AYI NEDJIMI CONSULTANTS
Sources : CIS Azure Foundations v5.0.0, Azure Security Benchmark v3, ANSSI Cloud, NIST 800-53, MITRE ATT&CK Cloud
LÉGENDE
| Symbole | Statut | Description |
|---|---|---|
| ✅ | Conforme | Le contrôle est correctement implémenté |
| ❌ | Non-conforme | Le contrôle n’est pas implémenté ou mal configuré |
| ⚠️ | Partiellement conforme | Le contrôle est partiellement implémenté |
| N/A | Non applicable | Le contrôle ne s’applique pas à cet environnement |
| Niveau | Criticité | Action requise |
|---|---|---|
| 🔴 | Critique | Correction immédiate obligatoire |
| 🟠 | Élevé | Correction sous 30 jours |
| 🟡 | Moyen | Correction sous 90 jours |
| 🟢 | Faible | Correction selon planification |
MODE DÉCOUVERTE RAPIDE — 15 QUESTIONS CLÉS
Questions Critiques de Sécurité Azure
- MFA activé pour tous les comptes privilégiés ? ✅ ❌ ⚠️ N/A
- Conditional Access configuré ? ✅ ❌ ⚠️ N/A
- PIM (Privileged Identity Management) activé ? ✅ ❌ ⚠️ N/A
- Defender for Cloud activé sur toutes les ressources ? ✅ ❌ ⚠️ N/A
- Chiffrement au repos activé (Storage, SQL, Disques) ? ✅ ❌ ⚠️ N/A
- Activity Log centralisé dans Log Analytics ? ✅ ❌ ⚠️ N/A
- Network Security Groups (NSG) configurés ? ✅ ❌ ⚠️ N/A
- Azure Firewall ou WAF déployé ? ✅ ❌ ⚠️ N/A
- Key Vault avec RBAC et soft delete ? ✅ ❌ ⚠️ N/A
- Managed Identity utilisées (pas de secrets codés en dur) ? ✅ ❌ ⚠️ N/A
- Private Endpoints configurés pour les services sensibles ? ✅ ❌ ⚠️ N/A
- Azure Policy implémenté pour la gouvernance ? ✅ ❌ ⚠️ N/A
- Sauvegarde automatisée et testée ? ✅ ❌ ⚠️ N/A
- Sentinel ou solution SIEM configurée ? ✅ ❌ ⚠️ N/A
- Plan de réponse aux incidents documenté ? ✅ ❌ ⚠️ N/A
Score rapide : ___/15 (✅=1, ⚠️=0.5, ❌=0, N/A=exclus)
INFORMATIONS CLIENT
| Champ | Valeur |
|---|---|
| Nom de l’organisation | |
| Tenant Azure AD | |
| Nombre de souscriptions | |
| Environnements | Production / Pré-production / Développement / Test |
| Secteur d’activité | |
| Réglementations applicables | RGPD / NIS2 / HDS / SecNumCloud / Autre |
| Date d’audit | |
| Auditeur principal | |
| Personnes présentes |
SECTIONS DE CONTRÔLES DE SÉCURITÉ
S1 — IDENTITÉ ET GESTION DES ACCÈS (IAM)
1.1 — AUTHENTIFICATION MULTI-FACTEURS (MFA)
1.1.1 — MFA obligatoire pour les administrateurs Azure
Niveau : 🔴
Référence CIS : CIS Azure 1.1
MITRE ATT&CK : T1078.004
Description : L’authentification multi-facteurs doit être activée pour tous les comptes avec des privilèges administratifs dans Azure AD. Cela inclut les rôles Global Admin, Security Admin, et autres rôles privilégiés.
Vérification :
- Portal > Azure AD > Security > Conditional Access > Policies
- CLI: az ad user list –query “[?accountEnabled].userPrincipalName” –output table
- PowerShell: Get-AzADUser | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.AccountEnabled -eq }
Remédiation :
- Portal > Azure AD > Security > Conditional Access
- Create new policy “Require MFA for Admins”
- Assign to admin groups/roles
- Grant controls > Require MFA
Valeur par défaut : Désactivé
1.1.2 — MFA obligatoire pour tous les utilisateurs privilégiés
Niveau : 🔴
Référence CIS : CIS Azure 1.1.1
MITRE ATT&CK : T1078.004
Description : Tous les utilisateurs ayant des accès privilégiés aux ressources Azure doivent utiliser MFA, y compris les propriétaires de ressources et contributeurs sur des services critiques.
Vérification :
- Portal > Azure AD > Sign-ins > Filter by Conditional Access status
- CLI: az ad signed-in-user show
- PowerShell: Get-AzContext
Remédiation :
- Identifier tous les comptes privilégiés
- Créer une politique Conditional Access ciblée
- Configurer l’exigence MFA
- Test en mode report-only puis activation
Valeur par défaut : Désactivé
1.1.3 — Méthodes MFA sécurisées configurées
Niveau : 🟠
Référence CIS : CIS Azure 1.1.2
MITRE ATT&CK : T1621
Description : Les méthodes MFA faibles (SMS/appels vocaux) doivent être désactivées au profit des méthodes sécurisées (Microsoft Authenticator, FIDO2, Windows Hello).
Vérification :
- Portal > Azure AD > Security > Authentication methods
- CLI: az rest –method get –url https://graph.microsoft.com/beta/policies/authenticationMethodsPolicy
- PowerShell: Get-MgPolicyAuthenticationMethodPolicy
Remédiation :
- Portal > Azure AD > Security > Authentication methods > Policies
- Désactiver SMS et Voice call
- Activer Microsoft Authenticator (passwordless)
- Configurer FIDO2 security keys
Valeur par défaut : SMS et appels vocaux activés
1.2 — CONDITIONAL ACCESS
1.2.1 — Politique de blocage des pays à risque
Niveau : 🟠
Référence CIS : CIS Azure 1.1.3
MITRE ATT&CK : T1078
Description : Les connexions depuis des pays non autorisés doivent être bloquées automatiquement via Conditional Access pour réduire les risques de compromission.
Vérification :
- Portal > Azure AD > Security > Conditional Access > Named locations
- CLI: az rest –method get –url https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies
- PowerShell: Get-AzADConditionalAccessPolicy
Remédiation :
- Créer Named Locations pour pays autorisés
- Créer politique CA “Block Risky Countries”
- Condition : Locations (exclude trusted countries)
- Grant : Block access
Valeur par défaut : Aucune restriction géographique
1.2.2 — Accès conditionnel basé sur les risques utilisateur
Niveau : 🟠
Référence CIS : CIS Azure 1.1.4
MITRE ATT&CK : T1078.004
Description : Azure AD Identity Protection doit détecter et bloquer automatiquement les connexions à haut risque basées sur le comportement utilisateur anormal.
Vérification :
- Portal > Azure AD > Security > Identity Protection > User risk policy
- CLI: az rest –method get –url https://graph.microsoft.com/beta/identity/riskyUsers
- PowerShell: Get-AzADIdentityProtectionRiskyUser
Remédiation :
- Activer Azure AD P2 license
- Portal > Identity Protection > User risk policy
- Configuration : High risk = Block access
- Medium risk = Require MFA + password change
Valeur par défaut : Désactivé (nécessite P2)
1.2.3 — Accès conditionnel pour applications cloud
Niveau : 🟠
Référence CIS : CIS Azure 1.1.5
MITRE ATT&CK : T1078.004
Description : Toutes les applications cloud critiques doivent avoir des politiques d’accès conditionnel spécifiques avec contrôles de sécurité appropriés.
Vérification :
- Portal > Azure AD > Enterprise applications > Conditional Access
- CLI: az ad app list –query “[].{appId:appId,displayName:displayName}”
- PowerShell: Get-AzADApplication
Remédiation :
- Inventaire des applications critiques
- Créer politiques CA par application
- Conditions : Device compliance, Location, Risk
- Grant controls : MFA, Compliant device, etc.
Valeur par défaut : Aucune politique spécifique
1.3 — PRIVILEGED IDENTITY MANAGEMENT (PIM)
1.3.1 — PIM activé pour les rôles administrateurs
Niveau : 🔴
Référence CIS : CIS Azure 1.1.6
MITRE ATT&CK : T1078.003
Description : Azure AD Privileged Identity Management doit être activé pour tous les rôles administratifs sensibles, permettant l’accès just-in-time et l’audit des privilèges.
Vérification :
- Portal > Azure AD > Privileged Identity Management > Azure AD roles
- CLI: az rest –method get –url https://graph.microsoft.com/beta/privilegedAccess/azureAD/roleAssignments
- PowerShell: Get-AzADPIMEligibleRoleAssignment
Remédiation :
- Activer Azure AD P2 license
- Portal > PIM > Azure AD roles > Discover resources
- Configurer rôles éligibles (eligible assignments)
- Supprimer assignations permanentes
Valeur par défaut : Désactivé (nécessite P2)
1.3.2 — Activation PIM avec justification obligatoire
Niveau : 🟠
Référence CIS : CIS Azure 1.1.7
MITRE ATT&CK : T1078.003
Description : L’activation des rôles privilégiés via PIM doit exiger une justification métier et une approbation selon le niveau de criticité du rôle.
Vérification :
- Portal > PIM > Azure AD roles > Settings > Role settings
- CLI: Vérifier via Microsoft Graph API
- PowerShell: Get-AzADPIMRoleSettings
Remédiation :
- PIM > Role settings > Configure chaque rôle
- Activation : Require justification
- Activation : Require approval pour rôles critiques
- Maximum duration : 8 heures maximum
Valeur par défaut : Aucune justification requise
1.3.3 — Révision d’accès PIM automatisée
Niveau : 🟡
Référence CIS : CIS Azure 1.1.8
MITRE ATT&CK : T1078
Description : Des révisions d’accès automatisées doivent être configurées pour valider périodiquement que les assignations de rôles privilégiés sont toujours justifiées.
Vérification :
- Portal > PIM > Azure AD roles > Access reviews
- CLI: az rest –method get –url https://graph.microsoft.com/beta/accessReviews
- PowerShell: Get-AzADAccessReview
Remédiation :
- PIM > Access reviews > New access review
- Scope : Eligible role assignments
- Reviewers : Resource owners + managers
- Recurrence : Quarterly pour rôles critiques
Valeur par défaut : Aucune révision automatisée
1.4 — RÔLES ET PERMISSIONS (RBAC)
1.4.1 — Principe du moindre privilège appliqué
Niveau : 🟠
Référence CIS : CIS Azure 1.2.1
MITRE ATT&CK : T1078
Description : Les utilisateurs et services doivent avoir uniquement les permissions minimales nécessaires pour accomplir leurs tâches, avec usage préférentiel des rôles intégrés plutôt que Owner ou Contributor.
Vérification :
- Portal > Subscriptions > Access control (IAM) > Role assignments
- CLI: az role assignment list –include-inherited –include-groups
- PowerShell: Get-AzRoleAssignment
Remédiation :
- Audit des assignations actuelles
- Identifier les sur-privilèges (Owner, Contributor)
- Remplacer par rôles spécifiques (Reader, VM Contributor, etc.)
- Documenter justifications métier
Valeur par défaut : Souvent sur-privilégié
1.4.2 — Limitation des propriétaires de souscriptions
Niveau : 🔴
Référence CIS : CIS Azure 1.2.2
MITRE ATT&CK : T1078
Description : Le nombre de propriétaires (Owner) de souscriptions Azure doit être limité au strict minimum (2-3 maximum) et faire l’objet d’un contrôle strict.
Vérification :
- Portal > Subscriptions > Access control (IAM) > Filter by Owner role
- CLI: az role assignment list –role Owner –include-inherited
- PowerShell: Get-AzRoleAssignment | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.RoleDefinitionName -eq “Owner”}
Remédiation :
- Lister tous les propriétaires actuels
- Révision métier : qui a vraiment besoin du rôle Owner ?
- Remplacer par des rôles plus granulaires
- Maintenir 2-3 Owners maximum par souscription
Valeur par défaut : Souvent trop de propriétaires
1.4.3 — Rôles personnalisés justifiés et documentés
Niveau : 🟡
Référence CIS : CIS Azure 1.2.3
MITRE ATT&CK : T1078
Description : Les rôles personnalisés ne doivent être créés que lorsqu’aucun rôle intégré ne répond au besoin, avec documentation complète des permissions accordées.
Vérification :
- Portal > Subscriptions > Access control (IAM) > Roles > Type: Custom
- CLI: az role definition list –custom-role-only
- PowerShell: Get-AzRoleDefinition | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.IsCustom -eq }
Remédiation :
- Inventaire des rôles personnalisés
- Révision : est-ce qu’un rôle intégré pourrait convenir ?
- Documentation des rôles personnalisés conservés
- Suppression des rôles obsolètes
Valeur par défaut : Aucun rôle personnalisé
1.5 — SERVICE PRINCIPALS ET MANAGED IDENTITIES
1.5.1 — Managed Identity privilégiée sur Service Principal
Niveau : 🟠
Référence CIS : CIS Azure 1.2.4
MITRE ATT&CK : T1078.004
Description : Les applications Azure doivent utiliser des Managed Identities plutôt que des Service Principals avec secrets pour l’authentification aux services Azure.
Vérification :
- Portal > Azure AD > Enterprise applications > Managed identities
- CLI: az ad sp list –query “[?servicePrincipalType==‘Application’].{appId:appId,displayName:displayName}”
- PowerShell: Get-AzADServicePrincipal | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.ServicePrincipalType -eq “Application”}
Remédiation :
- Inventaire des Service Principals actuels
- Identifier lesquels peuvent utiliser Managed Identity
- Migration : App Services, VMs, Function Apps
- Suppression des secrets non nécessaires
Valeur par défaut : Service Principals avec secrets
1.5.2 — Rotation automatique des secrets Service Principal
Niveau : 🟠
Référence CIS : CIS Azure 1.2.5
MITRE ATT&CK : T1078.004
Description : Les secrets des Service Principals qui ne peuvent pas être remplacés par des Managed Identities doivent avoir une rotation automatisée et une durée de vie limitée (12 mois maximum).
Vérification :
- Portal > Azure AD > App registrations > Certificates & secrets
- CLI: az ad app credential list –id
- PowerShell: Get-AzADAppCredential -ApplicationId
Remédiation :
- Audit des secrets existants et leurs dates d’expiration
- Rotation des secrets > 12 mois
- Mise en place d’alertes d’expiration
- Processus de rotation automatisée (Key Vault + Logic Apps)
Valeur par défaut : Secrets à long terme (2 ans par défaut)
1.5.3 — Permissions minimales pour Service Principals
Niveau : 🟠
Référence CIS : CIS Azure 1.2.6
MITRE ATT&CK : T1078.004
Description : Les Service Principals doivent avoir uniquement les permissions Azure RBAC et API Graph strictement nécessaires pour leur fonction.
Vérification :
- Portal > Azure AD > Enterprise applications > Permissions
- CLI: az ad sp show –id
–query “oauth2PermissionGrants” - PowerShell: Get-AzADServicePrincipal | Get-AzADServicePrincipalOAuth2PermissionGrant
Remédiation :
- Audit des permissions Graph API accordées
- Révocation des permissions excessive (ex: Directory.ReadWrite.All)
- Application du principe du moindre privilège
- Test des applications après réduction des permissions
Valeur par défaut : Souvent sur-privilégié
1.6 — UTILISATEURS INVITÉS (GUEST)
1.6.1 — Restriction des invitations d’utilisateurs externes
Niveau : 🟠
Référence CIS : CIS Azure 1.2.7
MITRE ATT&CK : T1078.004
Description : Les invitations d’utilisateurs externes (B2B) doivent être restreintes aux administrateurs ou à un groupe défini, avec processus d’approbation formel.
Vérification :
- Portal > Azure AD > External Identities > External collaboration settings
- CLI: az rest –method get –url https://graph.microsoft.com/v1.0/policies/externalIdentitiesPolicy
- PowerShell: Get-MgPolicyExternalIdentityPolicy
Remédiation :
- External Identities > External collaboration settings
- Guest invite restrictions : “Only users assigned to specific admin roles”
- OU créer groupe autorisé à inviter
- Processus de validation métier des invitations
Valeur par défaut : Tous les utilisateurs peuvent inviter
1.6.2 — Révision périodique des utilisateurs invités
Niveau : 🟡
Référence CIS : CIS Azure 1.2.8
MITRE ATT&CK : T1078.004
Description : Les comptes utilisateurs invités doivent faire l’objet d’une révision d’accès trimestrielle pour s’assurer que leur accès est toujours justifié.
Vérification :
- Portal > Azure AD > Identity Governance > Access reviews
- CLI: az ad user list –query “[?userType==‘Guest’].{userPrincipalName:userPrincipalName,creationType:creationType}”
- PowerShell: Get-AzADUser | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.UserType -eq “Guest”}
Remédiation :
- Identity Governance > Access reviews > New access review
- Scope : Guest users
- Reviewers : Resource owners/sponsors
- Recurrence : Quarterly
Valeur par défaut : Aucune révision automatisée
1.7 — COMPTES DE SERVICE ET BREAK-GLASS
1.7.1 — Comptes break-glass configurés et protégés
Niveau : 🔴
Référence CIS : CIS Azure 1.2.9
MITRE ATT&CK : T1078
Description : Au moins 2 comptes break-glass (urgence) doivent être configurés avec mot de passe complexe stocké de façon sécurisée, exclus des politiques Conditional Access.
Vérification :
- Portal > Azure AD > Users > Filter par “emergency” ou “breakglass”
- CLI: az ad user list –query “[?contains(displayName,’emergency’) || contains(displayName,‘break’)]”
- PowerShell: Get-AzADUser | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.DisplayName -like “emergency” -or BEGIN___COMMAND_OUTPUT_MARKER.DisplayName -like “break”}
Remédiation :
- Créer 2 comptes : emergency-admin-01/02
- Mot de passe complexe stocké offline sécurisé
- Rôle Global Administrator
- Exclusion des politiques Conditional Access
- Monitoring spécifique des connexions
Valeur par défaut : Aucun compte break-glass
1.7.2 — Surveillance des comptes break-glass
Niveau : 🟠
Référence CIS : CIS Azure 1.2.10
MITRE ATT&CK : T1078
Description : Toute utilisation des comptes break-glass doit déclencher une alerte immédiate et faire l’objet d’un suivi d’incident de sécurité.
Vérification :
- Portal > Azure Monitor > Logs > SigninLogs
- Requête KQL : SigninLogs | where UserPrincipalName contains “emergency”
- PowerShell: Get-AzActivityLog | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.Caller -like “emergency”}
Remédiation :
- Azure Monitor > Alerts > New alert rule
- Condition : SigninLogs where UserPrincipalName contains emergency
- Action Group : Email SOC + SMS responsables sécurité
- Processus d’incident automatique
Valeur par défaut : Aucune surveillance spécifique
1.8 — POLITIQUES DE MOTS DE PASSE ET SÉCURITÉ
1.8.1 — Politique de mots de passe sécurisée
Niveau : 🟠
Référence CIS : CIS Azure 1.1.9
MITRE ATT&CK : T1110
Description : Les politiques de mots de passe doivent respecter les bonnes pratiques : longueur minimale, complexité, bannissement des mots de passe courants.
Vérification :
- Portal > Azure AD > Security > Authentication methods > Password protection
- CLI: az rest –method get –url https://graph.microsoft.com/beta/policies/authenticationMethodsPolicy
- PowerShell: Get-MgPolicyAuthenticationMethodPolicy
Remédiation :
- Portal > Security > Authentication methods > Password protection
- Activer “Enforce custom banned password list”
- Ajouter termes spécifiques organisation
- Mode : Enforced (pas Audit)
Valeur par défaut : Politique basique
1.8.2 — Protection contre le password spray
Niveau : 🟠
Référence CIS : CIS Azure 1.1.10
MITRE ATT&CK : T1110.003
Description : Azure AD Smart Lockout doit être configuré pour détecter et bloquer les attaques par pulvérisation de mots de passe.
Vérification :
- Portal > Azure AD > Security > Authentication methods > Password protection
- CLI: Vérifier les paramètres via Graph API
- PowerShell: Vérification des politiques de verrouillage
Remédiation :
- Security > Authentication methods > Password protection
- Smart Lockout : Threshold = 5 tentatives
- Lockout duration : 60 secondes minimum
- Monitoring des événements de verrouillage
Valeur par défaut : Lockout threshold = 10
1.9 — AUDIT ET SURVEILLANCE IAM
1.9.1 — Audit des changements de rôles privilégiés
Niveau : ��
Référence CIS : CIS Azure 1.1.11
MITRE ATT&CK : T1078
Description : Tous les changements d’attribution de rôles privilégiés doivent être audités et alerter automatiquement l’équipe de sécurité.
Vérification :
- Portal > Azure AD > Audit logs > Activity: Add member to role
- CLI: az monitor activity-log list –filters “Category eq ‘Administrative’”
- PowerShell: Get-AzLog -ResourceProvider “Microsoft.Authorization”
Remédiation :
- Azure Monitor > Logs > Recherche modifications RBAC
- Création alerte : AuditLogs | where ActivityDisplayName contains “role”
- Action Group : Notification équipe sécurité
- Révision hebdomadaire des changements
Valeur par défaut : Audit activé, alertes non configurées
1.9.2 — Surveillance des connexions administrateur
Niveau : 🟠
Référence CIS : CIS Azure 1.1.12
MITRE ATT&CK : T1078
Description : Les connexions des comptes administrateur doivent être surveillées en continu avec alertes sur les comportements anormaux (géolocalisation, horaires, échecs répétés).
Vérification :
- Portal > Azure AD > Sign-ins > Filter by admin roles
- CLI: az monitor activity-log list –filters “Category eq ‘SigninLogs’”
- PowerShell: Search-AzGraph -Query “SigninLogs | where UserType == ‘Admin’”
Remédiation :
- Configurer Identity Protection (Azure AD P2)
- Surveillance géographique anormale
- Alertes connexions à risque élevé
- Dashboard SOC avec métriques admin
Valeur par défaut : Surveillance basique uniquement
1.7 — ACCÈS CONDITIONNEL AVANCÉ
1.7.1 — Politique d’accès basée sur les risques utilisateur
Niveau : 🔴
Référence CIS : CIS Azure 1.1.7
MITRE ATT&CK : T1078.004
Description : Configurer des politiques d’accès conditionnel qui évaluent les risques des utilisateurs et sessions pour bloquer ou demander une authentification supplémentaire lors de connexions suspectes.
Vérification :
- Portal > Azure AD > Security > Conditional Access > Policies
- CLI: az ad policy list –query “[?contains(displayName,‘Risk’)]”
- PowerShell: Get-AzureADMSConditionalAccessPolicy | Where-Object {$_.DisplayName -like “Risk”}
Remédiation :
- Activer Azure AD Identity Protection
- Configurer les niveaux de risque utilisateur (Low, Medium, High)
- Créer une politique CA “Block High Risk Users”
- Tester en mode report-only avant activation
# Créer une politique de risque utilisateur
New-AzureADMSConditionalAccessPolicy -DisplayName "Block High Risk Users" -State "Enabled" -UserRiskLevels @("high") -SignInRiskLevels @("high") -BuiltInControls @("block")
Valeur par défaut : Désactivé
1.7.2 — Accès conditionnel basé sur la géolocalisation
Niveau : 🟠
Référence CIS : CIS Azure 1.1.8
MITRE ATT&CK : T1078.004
Description : Bloquer ou restreindre l’accès depuis des pays/régions non approuvés pour réduire les risques d’accès malveillants depuis des zones géographiques inattendues.
Vérification :
- Portal > Azure AD > Security > Named locations
- CLI: az ad policy list –query “[?contains(displayName,‘Location’)]”
- PowerShell: Get-AzureADMSNamedLocationPolicy
Remédiation :
- Définir les emplacements nommés approuvés
- Créer une politique de géolocalisation
- Configurer le blocage des pays non approuvés
# Créer un emplacement nommé pour les pays approuvés
New-AzureADMSNamedLocationPolicy -OdataType "#microsoft.graph.countryNamedLocation" -DisplayName "Approved Countries" -CountriesAndRegions @("FR", "US", "CA") -IncludeUnknownCountriesAndRegions $false
Valeur par défaut : Désactivé
1.7.3 — Contrôle d’accès basé sur les appareils conformes
Niveau : 🔴
Référence CIS : CIS Azure 1.1.9
MITRE ATT&CK : T1078.004
Description : Exiger que les appareils soient conformes aux politiques de sécurité ou joints au domaine avant d’autoriser l’accès aux ressources sensibles.
Vérification :
- Portal > Azure AD > Devices > Device compliance
- CLI: az ad device list –query “[].{Name:displayName,Compliant:isCompliant}”
- PowerShell: Get-AzureADDevice | Select-Object DisplayName, IsCompliant
Remédiation :
- Configurer Microsoft Intune pour la gestion des appareils
- Définir les politiques de conformité
- Créer une politique CA exigeant des appareils conformes
# Créer une politique exigeant des appareils conformes
New-AzureADMSConditionalAccessPolicy -DisplayName "Require Compliant Device" -State "Enabled" -DeviceState @("compliant", "domainJoined")
Valeur par défaut : Désactivé
1.8 — PRIVILEGED IDENTITY MANAGEMENT (PIM)
1.8.1 — Activation JIT pour les rôles privilégiés
Niveau : 🔴
Référence CIS : CIS Azure 1.2.1
MITRE ATT&CK : T1078.004
Description : Configurer PIM pour exiger une activation just-in-time des rôles administratifs avec approbation et justification métier.
Vérification :
- Portal > Azure AD > Privileged Identity Management > Azure AD roles
- CLI: az rest –method GET –url “https://graph.microsoft.com/v1.0/privilegedAccess/azureResources/roleAssignments"
- PowerShell: Get-AzureADMSPrivilegedRoleAssignment
Remédiation :
- Activer PIM pour Azure AD
- Configurer les paramètres d’activation pour chaque rôle
- Définir les approbateurs et exigences de justification
# Configurer PIM pour le rôle Global Administrator
$roleDefinitionId = (Get-AzureADDirectoryRole | Where-Object {$_.DisplayName -eq "Global Administrator"}).ObjectId
Set-AzureADMSPrivilegedRoleAssignmentPolicy -ProviderId "aadRoles" -ResourceId "tenant" -RoleDefinitionId $roleDefinitionId -ActivationDuration "PT8H" -ApprovalRequired $true
Valeur par défaut : Désactivé
1.8.2 — Révisions d’accès périodiques pour les rôles privilégiés
Niveau : 🔴
Référence CIS : CIS Azure 1.2.2
MITRE ATT&CK : T1078.004
Description : Configurer des révisions d’accès automatiques pour tous les rôles privilégiés afin de s’assurer que les permissions restent nécessaires et appropriées.
Vérification :
- Portal > Azure AD > Identity Governance > Access reviews
- CLI: az rest –method GET –url “https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions"
- PowerShell: Get-AzureADMSAccessReview
Remédiation :
- Créer des révisions d’accès pour tous les rôles privilégiés
- Configurer la fréquence (recommandé : trimestrielle)
- Définir les réviseurs appropriés
# Créer une révision d'accès pour les administrateurs globaux
New-AzureADMSAccessReview -DisplayName "Global Admin Review" -StartDate (Get-Date) -EndDate (Get-Date).AddDays(30) -ReviewedEntity "GlobalAdmins"
Valeur par défaut : Désactivé
1.8.3 — Alertes PIM configurées
Niveau : 🟠
Référence CIS : CIS Azure 1.2.3
MITRE ATT&CK : T1078.004
Description : Configurer et surveiller les alertes PIM pour détecter les activations suspectes ou les modifications non autorisées des rôles privilégiés.
Vérification :
- Portal > Azure AD > PIM > Azure AD roles > Alerts
- CLI: az monitor activity-log list –resource-group “PIM-Alerts”
- PowerShell: Get-AzureADAuditDirectoryLogs -Filter “category eq ‘RoleManagement’”
Remédiation :
- Configurer les alertes PIM dans le portail
- Définir les destinataires des notifications
- Intégrer avec SIEM/Log Analytics
# Configurer une alerte pour les activations de rôles élevés
New-AzMetricAlertRuleV2 -Name "PIM-HighPrivilegeActivation" -ResourceGroupName "Security-Alerts" -TargetResourceId "/subscriptions/{subscription-id}/providers/Microsoft.AzureActiveDirectory"
Valeur par défaut : Alertes de base activées
1.9 — COMPTES D’URGENCE
1.9.1 — Comptes break-glass configurés et protégés
Niveau : 🔴
Référence CIS : CIS Azure 1.3.1
MITRE ATT&CK : T1078.004
Description : Configurer et maintenir des comptes d’urgence (break-glass) pour l’accès d’urgence en cas de défaillance des systèmes d’authentification normaux.
Vérification :
- Portal > Azure AD > Users > Rechercher comptes emergency/breakglass
- CLI: az ad user list –query “[?contains(userPrincipalName,’emergency’)]”
- PowerShell: Get-AzureADUser | Where-Object {$_.UserPrincipalName -like “emergency”}
Remédiation :
- Créer 2 comptes d’urgence avec mots de passe forts
- Exclure de toutes les politiques d’accès conditionnel
- Stocker les identifiants dans un coffre-fort physique
- Documenter les procédures d’utilisation
# Créer un compte d'urgence
New-AzureADUser -DisplayName "Emergency Admin 01" -UserPrincipalName "emergency01@domain.com" -PasswordProfile @{Password="ComplexPassword123!"; ForceChangePasswordNextLogin=$false} -AccountEnabled $true
Valeur par défaut : Non configuré
1.9.2 — Surveillance des comptes d’urgence
Niveau : 🔴
Référence CIS : CIS Azure 1.3.2
MITRE ATT&CK : T1078.004
Description : Implémenter une surveillance stricte des comptes d’urgence avec alertes en temps réel pour toute utilisation.
Vérification :
- Portal > Azure AD > Sign-ins > Filtrer par comptes emergency
- CLI: az monitor activity-log list –caller “emergency01@domain.com”
- PowerShell: Get-AzureADAuditSignInLogs -Filter “userPrincipalName eq ’emergency01@domain.com’”
Remédiation :
- Créer des alertes Log Analytics pour les connexions des comptes d’urgence
- Configurer des notifications immé
RÉCAPITULATIF SECTION S1 - IAM
| Sous-section | Total contrôles | 🔴 Critique | 🟠 Élevé | 🟡 Moyen | 🟢 Faible |
|---|---|---|---|---|---|
| 1.1 MFA | 3 | 2 | 1 | 0 | 0 |
| 1.2 Conditional Access | 3 | 0 | 3 | 0 | 0 |
| 1.3 PIM | 3 | 1 | 1 | 1 | 0 |
| 1.4 RBAC | 3 | 1 | 1 | 1 | 0 |
| 1.5 Service Principals | 3 | 0 | 3 | 0 | 0 |
| 1.6 Guest Users | 2 | 0 | 1 | 1 | 0 |
| 1.7 Break-glass | 2 | 1 | 1 | 0 | 0 |
| 1.8 Password Policy | 2 | 0 | 2 | 0 | 0 |
| 1.9 Audit IAM | 2 | 0 | 2 | 0 | 0 |
| TOTAL S1 | 23 | 5 | 15 | 3 | 0 |
S2 — MICROSOFT DEFENDER FOR CLOUD
2.1 — ACTIVATION ET CONFIGURATION DEFENDER
2.1.1 — Defender for Cloud activé sur toutes les souscriptions
Niveau : 🔴
Référence CIS : CIS Azure 2.1
MITRE ATT&CK : T1562.001
Description : Microsoft Defender for Cloud doit être activé avec niveau Standard/Paid sur toutes les souscriptions pour la détection de menaces et l’évaluation de sécurité continue.
Vérification :
- Portal > Microsoft Defender for Cloud > Environment settings
- CLI: az security pricing list –query “value[].{name:name,tier:pricingTier}”
- PowerShell: Get-AzSecurityPricing
Remédiation :
- Defender for Cloud > Environment settings
- Sélectionner chaque souscription
- Activer tous les Defender plans (Servers, Storage, SQL, etc.)
- Configurer Log Analytics workspace
Valeur par défaut : Free tier activé
2.1.2 — Plans Defender activés par type de ressource
Niveau : 🔴
Référence CIS : CIS Azure 2.1.1
MITRE ATT&CK : T1562.001
Description : Tous les plans Defender spécialisés doivent être activés : Servers, App Service, Storage, SQL, Kubernetes, Container Registries, Key Vault, Resource Manager, DNS.
Vérification :
- Portal > Defender for Cloud > Environment settings > Plans
- CLI: az security pricing show –name VirtualMachines
- PowerShell: Get-AzSecurityPricing | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.Name -eq “VirtualMachines”}
Remédiation :
- Environment settings > Subscription > Plans
- Activer chaque plan individuellement :
- Defender for Servers (Plan 2)
- Defender for App Service
- Defender for Storage
- Defender for SQL
- Defender for Kubernetes
- Defender for Container Registries
- Defender for Key Vault
Valeur par défaut : Plans désactivés individuellement
2.1.3 — Auto-provisioning activé pour agents de sécurité
Niveau : 🟠
Référence CIS : CIS Azure 2.1.2
MITRE ATT&CK : T1562.001
Description : Le provisioning automatique des agents Log Analytics et Dependency Agent doit être activé pour permettre la collecte automatique des données de sécurité.
Vérification :
- Portal > Defender for Cloud > Environment settings > Auto provisioning
- CLI: az security auto-provisioning-setting list
- PowerShell: Get-AzSecurityAutoProvisioningSetting
Remédiation :
- Environment settings > Auto provisioning
- Log Analytics agent for Azure VMs : ON
- Vulnerability assessment for machines : ON
- Configurer workspace Log Analytics cible
Valeur par défaut : Auto-provisioning désactivé
2.2 — CLOUD SECURITY POSTURE MANAGEMENT (CSPM)
2.2.1 — Secure Score monitoring et amélioration
Niveau : 🟠
Référence CIS : CIS Azure 2.2
MITRE ATT&CK : T1562
Description : Le Secure Score doit être surveillé régulièrement avec objectif d’amélioration continue. Score minimum acceptable : 70% pour production.
Vérification :
- Portal > Defender for Cloud > Secure Score
- CLI: az security secure-score list
- PowerShell: Get-AzSecuritySecureScore
Remédiation :
- Établir baseline actuel du Secure Score
- Prioriser recommandations High/Medium impact
- Plan d’amélioration mensuel
- Monitoring automatisé avec alertes si score < 70%
Valeur par défaut : Variable selon configuration
2.2.2 — Recommandations de sécurité priorisées et traitées
Niveau : 🟠
Référence CIS : CIS Azure 2.2.1
MITRE ATT&CK : T1562
Description : Les recommandations de sécurité critiques et de haut impact doivent être traitées dans les délais définis : 7 jours pour critique, 30 jours pour élevé.
Vérification :
- Portal > Defender for Cloud > Recommendations
- CLI: az security task list –query “value[?state==‘Active’]”
- PowerShell: Get-AzSecurityTask | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.State -eq “Active”}
Remédiation :
- Classification des recommandations par criticité
- Workflow de traitement avec SLA définis
- Assignation responsables par type de recommandation
- Tracking et reporting hebdomadaire
Valeur par défaut : Recommandations générées mais non traitées
2.2.3 — Compliance frameworks activés et surveillés
Niveau : 🟡
Référence CIS : CIS Azure 2.2.2
MITRE ATT&CK : T1562
Description : Les frameworks de compliance requis doivent être activés et surveillés : Azure Security Benchmark, CIS, PCI DSS, ISO 27001 selon les besoins métier.
Vérification :
- Portal > Defender for Cloud > Regulatory compliance
- CLI: az security regulatory-compliance-standards list
- PowerShell: Get-AzSecurityRegulatoryComplianceStandard
Remédiation :
- Regulatory compliance > Add standards
- Activer frameworks requis pour l’organisation
- Monitoring des scores de compliance
- Reporting compliance mensuel
Valeur par défaut : Azure Security Benchmark activé
2.3 — THREAT PROTECTION ET DETECTION
2.3.1 — Defender for Servers configuration avancée
Niveau : 🔴
Référence CIS : CIS Azure 2.3
MITRE ATT&CK : T1055
Description : Defender for Servers Plan 2 doit être configuré avec toutes les fonctionnalités de détection : comportemental, réseau, file integrity monitoring, adaptive application controls.
Vérification :
- Portal > Defender for Cloud > Workload protections > Servers
- CLI: az security pricing show –name VirtualMachines
- PowerShell: Get-AzSecurityPricing -Name “VirtualMachines”
Remédiation :
- Activer Defender for Servers Plan 2
- Configurer File Integrity Monitoring
- Activer Adaptive Application Controls
- Configurer Just-in-Time VM access
Valeur par défaut : Plan 1 ou désactivé
2.3.2 — Defender for Storage avec protection malware
Niveau : 🟠
Référence CIS : CIS Azure 2.3.1
MITRE ATT&CK : T1204.002
Description : Defender for Storage doit inclure la protection contre les malwares et la détection d’anomalies d’accès pour tous les comptes de stockage critiques.
Vérification :
- Portal > Defender for Cloud > Workload protections > Storage
- CLI: az security pricing show –name StorageAccounts
- PowerShell: Get-AzSecurityPricing -Name “StorageAccounts”
Remédiation :
- Activer Defender for Storage
- Configurer malware scanning
- Activer sensitive data discovery
- Configurer alertes accès anormaux
Valeur par défaut : Désactivé
2.3.3 — Defender for SQL avec Advanced Threat Protection
Niveau : 🟠
Référence CIS : CIS Azure 2.3.2
MITRE ATT&CK : T1190
Description : Defender for SQL doit être activé avec Advanced Threat Protection pour détecter injections SQL, accès anormaux, et activités suspectes.
Vérification :
- Portal > Defender for Cloud > Workload protections > Databases
- CLI: az security pricing show –name SqlServers
- PowerShell: Get-AzSecurityPricing -Name “SqlServers”
Remédiation :
- Activer Defender for SQL servers
- Activer Defender for SQL databases
- Configurer email notifications
- Intégration avec SIEM/Sentinel
Valeur par défaut : Désactivé
2.4 — INTÉGRATION ET ALERTING
2.4.1 — Intégration avec Azure Sentinel/SIEM
Niveau : 🟠
Référence CIS : CIS Azure 2.4
MITRE ATT&CK : T1562.001
Description : Les alertes Defender for Cloud doivent être intégrées avec Azure Sentinel ou SIEM externe pour corrélation et réponse aux incidents.
Vérification :
- Portal > Defender for Cloud > Security alerts > Export settings
- CLI: az security automation list
- PowerShell: Get-AzSecurityAutomation
Remédiation :
- Defender for Cloud > Security alerts > Export settings
- Configurer continuous export vers Log Analytics
- Ou configurer connector SIEM externe
- Vérifier réception des alertes dans SIEM
Valeur par défaut : Pas d’export automatique
2.4.2 — Notifications email des alertes critiques
Niveau : 🟠
Référence CIS : CIS Azure 2.4.1
MITRE ATT&CK : T1562.001
Description : Les alertes de sécurité de niveau High et Critical doivent déclencher des notifications email automatiques vers l’équipe de sécurité.
Vérification :
- Portal > Defender for Cloud > Environment settings > Email notifications
- CLI: az security contact list
- PowerShell: Get-AzSecurityContact
Remédiation :
- Environment settings > Email notifications
- Configurer email addresses SOC/Security team
- Activer notifications pour alertes High severity
- Tester réception des notifications
Valeur par défaut : Notifications désactivées
2.4.3 — Automation et réponse automatique
Niveau : 🟡
Référence CIS : CIS Azure 2.4.2
MITRE ATT&CK : T1562.001
Description : Des règles d’automation doivent être configurées pour répondre automatiquement aux alertes communes : isolement VM, blocage IP, escalade vers équipe sécurité.
Vérification :
- Portal > Defender for Cloud > Workflow automation
- CLI: az security automation list
- PowerShell: Get-AzSecurityAutomation
Remédiation :
- Workflow automation > Add workflow automation
- Trigger : Security alerts avec conditions
- Actions : Logic Apps, Function Apps, ou Webhooks
- Exemples : isolement network, ticket ITSM
Valeur par défaut : Aucune automation configurée
2.5 — VULNERABILITY MANAGEMENT
2.5.1 — Évaluation des vulnérabilités VMs activée
Niveau : 🟠
Référence CIS : CIS Azure 2.5
MITRE ATT&CK : T1203
Description : L’évaluation automatique des vulnérabilités doit être activée sur toutes les VMs avec remédiation priorisée selon CVSS score.
Vérification :
- Portal > Defender for Cloud > Recommendations > Vulnerability findings
- CLI: az security va-solution list
- PowerShell: Get-AzSecurityVulnerabilityAssessment
Remédiation :
- Activer vulnerability assessment solution (Qualys ou Microsoft)
- Déploiement automatique sur toutes VMs
- Planification scans réguliers
- Workflow remédiation vulnérabilités High/Critical
Valeur par défaut : Désactivé
2.5.2 — Container image vulnerability scanning
Niveau : 🟠
Référence CIS : CIS Azure 2.5.1
MITRE ATT&CK : T1203
Description : Les images de conteneurs doivent être scannées automatiquement pour les vulnérabilités lors du push vers Azure Container Registry.
Vérification :
- Portal > Container Registry > Repository > Vulnerability scan results
- CLI: az acr task show –registry
–name - PowerShell: Get-AzContainerRegistryTask
Remédiation :
- Activer Defender for Container Registries
- Configurer scan automatique au push
- Politiques de blocage images vulnérables
- Processus update régulier des base images
Valeur par défaut : Scan manuel uniquement
2.6 — COMPLIANCE ET GOUVERNANCE
2.6.1 — Azure Policy integration avec Defender
Niveau : 🟡
Référence CIS : CIS Azure 2.6
MITRE ATT&CK : T1562
Description : Les recommandations Defender for Cloud doivent être intégrées avec Azure Policy pour enforcement automatique des configurations de sécurité.
Vérification :
- Portal > Policy > Assignments > Security Center initiatives
- CLI: az policy assignment list –query “[?contains(displayName,‘Security’)]”
- PowerShell: Get-AzPolicyAssignment | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.Properties.displayName -like “Security”}
Remédiation :
- Assign Azure Security Benchmark initiative
- Configurer remediation automatique quand possible
- Review non-compliance resources régulièrement
- Exceptions documentées et approuvées
Valeur par défaut : Initiative ASB non assignée
2.6.2 — Inventaire et classification des assets
Niveau : 🟡
Référence CIS : CIS Azure 2.6.1
MITRE ATT&CK : T1083
Description : Un inventaire complet des ressources Azure doit être maintenu avec classification de criticité pour prioriser les efforts de sécurisation.
Vérification :
- Portal > Defender for Cloud > Asset inventory
- CLI: az graph query -q “Resources | project name, type, resourceGroup, subscriptionId”
- PowerShell: Search-AzGraph -Query “Resources | project name, type, resourceGroup”
Remédiation :
- Utiliser Asset inventory de Defender for Cloud
- Tagging des ressources avec niveau criticité
- Filtres et vues par criticité/environnement
- Révision inventaire mensuelle
Valeur par défaut : Inventaire basique sans classification
RÉCAPITULATIF SECTION S2 - DEFENDER FOR CLOUD
| Sous-section | Total contrôles | 🔴 Critique | 🟠 Élevé | 🟡 Moyen | 🟢 Faible |
|---|---|---|---|---|---|
| 2.1 Activation Defender | 3 | 2 | 1 | 0 | 0 |
| 2.2 CSPM | 3 | 0 | 2 | 1 | 0 |
| 2.3 Threat Protection | 3 | 1 | 2 | 0 | 0 |
| 2.4 Intégration Alerting | 3 | 0 | 2 | 1 | 0 |
| 2.5 Vulnerability Mgmt | 2 | 0 | 2 | 0 | 0 |
| 2.6 Compliance | 2 | 0 | 0 | 2 | 0 |
| TOTAL S2 | 16 | 3 | 9 | 4 | 0 |
S3 — SÉCURITÉ DU STOCKAGE
3.1 — CHIFFREMENT ET PROTECTION DES DONNÉES
3.1.1 — Chiffrement au repos activé pour Storage Accounts
Niveau : 🔴
Référence CIS : CIS Azure 3.1
MITRE ATT&CK : T1486
Description : Le chiffrement au repos doit être activé sur tous les comptes de stockage Azure avec des clés managées par Microsoft ou Customer Managed Keys pour les données sensibles.
Vérification :
- Portal > Storage accounts > Encryption
- CLI: az storage account show –name
–query “encryption” - PowerShell: Get-AzStorageAccount | Select-Object StorageAccountName,Encryption
Remédiation :
- Portal > Storage account > Security + networking > Encryption
- Vérifier “Encryption at rest” activé
- Pour données sensibles : configurer Customer Managed Keys
- Rotation automatique des clés si CMK
Valeur par défaut : Chiffrement Microsoft-managed activé
3.1.2 — Secure transfer (HTTPS) obligatoire
Niveau : 🔴
Référence CIS : CIS Azure 3.1.1
MITRE ATT&CK : T1040
Description : L’option “Secure transfer required” doit être activée pour forcer l’utilisation de HTTPS/SMB 3.0 et bloquer les connexions HTTP non sécurisées.
Vérification :
- Portal > Storage accounts > Configuration > Secure transfer required
- CLI: az storage account show –name
–query “enableHttpsTrafficOnly” - PowerShell: Get-AzStorageAccount | Select-Object StorageAccountName,EnableHttpsTrafficOnly
Remédiation :
- Storage account > Configuration
- Secure transfer required : Enabled
- Validation : tester qu’HTTP est bloqué
- Mettre à jour applications pour utiliser HTTPS
Valeur par défaut : Enabled (depuis 2019)
3.1.3 — Minimum TLS version configurée (1.2)
Niveau : 🟠
Référence CIS : CIS Azure 3.1.2
MITRE ATT&CK : T1040
Description : La version TLS minimale acceptée doit être configurée à 1.2 pour éviter l’utilisation de protocoles cryptographiques faibles.
Vérification :
- Portal > Storage accounts > Configuration > Minimum TLS version
- CLI: az storage account show –name
–query “minimumTlsVersion” - PowerShell: Get-AzStorageAccount | Select-Object StorageAccountName,MinimumTlsVersion
Remédiation :
- Storage account > Configuration
- Minimum TLS version : Version 1.2
- Tester compatibilité applications existantes
- Monitoring des rejets de connexions TLS < 1.2
Valeur par défaut : TLS 1.0 (legacy)
3.2 — GESTION DES CLÉS ET ACCÈS
3.2.1 — Rotation automatique des clés d’accès
Niveau : 🟠
Référence CIS : CIS Azure 3.2
MITRE ATT&CK : T1552.001
Description : Les clés d’accès des comptes de stockage doivent être régénérées périodiquement (90 jours maximum) avec processus de rotation sans interruption.
Vérification :
- Portal > Storage accounts > Access keys > Regenerate
- CLI: az storage account keys list –account-name
- PowerShell: Get-AzStorageAccountKey -ResourceGroupName
-StorageAccountName
Remédiation :
- Documenter processus rotation (key1 puis key2)
- Mettre à jour applications avec nouvelle clé
- Automatisation via Key Vault + Logic Apps
- Test avant suppression ancienne clé
Valeur par défaut : Pas de rotation automatique
3.2.2 — Shared Access Signatures (SAS) avec durée limitée
Niveau : 🟠
Référence CIS : CIS Azure 3.2.1
MITRE ATT&CK : T1552.001
Description : Les SAS tokens doivent avoir une durée de validité limitée (24 heures maximum pour production) et des permissions minimales selon le principe du moindre privilège.
Vérification :
- Portal > Storage Explorer > Generate SAS
- CLI: az storage blob generate-sas –help (vérifier –expiry)
- PowerShell: New-AzStorageBlobSASToken -ExpiryTime
Remédiation :
- Audit des SAS existants et leur durée
- Politique max 24h pour SAS de production
- Permissions minimales (read-only si possible)
- Utiliser Service/Account SAS plutôt que Ad-hoc
Valeur par défaut : Durée configurable, souvent excessive
3.2.3 — Stored Access Policies pour SAS management
Niveau : 🟡
Référence CIS : CIS Azure 3.2.2
MITRE ATT&CK : T1552.001
Description : Les Stored Access Policies doivent être utilisées pour gérer centralement les permissions SAS et permettre la révocation immédiate.
Vérification :
- Portal > Storage account > Containers > Access policy
- CLI: az storage container policy list –container-name
- PowerShell: Get-AzStorageContainerStoredAccessPolicy
Remédiation :
- Créer Stored Access Policies par use case
- Générer SAS basés sur ces policies
- Révocation possible via suppression policy
- Documentation des policies et leur usage
Valeur par défaut : Aucune policy pré-configurée
3.3 — CONTRÔLES D’ACCÈS RÉSEAU
3.3.1 — Firewall Storage Account configuré
Niveau : 🟠
Référence CIS : CIS Azure 3.3
MITRE ATT&CK : T1095
Description : Les règles de firewall doivent restreindre l’accès aux comptes de stockage aux réseaux autorisés uniquement, bloquant l’accès public par défaut.
Vérification :
- Portal > Storage account > Security + networking > Firewalls and virtual networks
- CLI: az storage account show –name
–query “networkRuleSet” - PowerShell: Get-AzStorageAccount | Select-Object NetworkRuleSet
Remédiation :
- Storage account > Firewalls and virtual networks
- Selected networks (pas “All networks”)
- Ajouter VNets/Subnets autorisés
- Ajouter IPs publiques si nécessaire (bureaux)
Valeur par défaut : All networks (accès public)
3.3.2 — Private Endpoints pour accès sécurisé
Niveau : 🟠
Référence CIS : CIS Azure 3.3.1
MITRE ATT&CK : T1095
Description : Des Private Endpoints doivent être configurés pour l’accès aux comptes de stockage critiques depuis les VNets Azure, évitant le transit par Internet.
Vérification :
- Portal > Storage account > Security + networking > Private endpoint connections
- CLI: az network private-endpoint list –query “[?privateLinkServiceConnections[0].groupIds[0]==‘blob’]”
- PowerShell: Get-AzPrivateEndpoint | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.PrivateLinkServiceConnections.GroupIds -contains “blob”}
Remédiation :
- Storage account > Private endpoint connections > Add
- Créer Private Endpoint dans VNet cible
- Configurer Private DNS zone
- Tester connectivité interne
Valeur par défaut : Pas de Private Endpoint
3.3.3 — Disable public blob access si non requis
Niveau : 🟠
Référence CIS : CIS Azure 3.3.2
MITRE ATT&CK : T1190
Description : L’accès public aux blobs doit être désactivé au niveau du compte de stockage si aucun blob ne doit être accessible publiquement.
Vérification :
- Portal > Storage account > Configuration > Allow Blob public access
- CLI: az storage account show –name
–query “allowBlobPublicAccess” - PowerShell: Get-AzStorageAccount | Select-Object StorageAccountName,AllowBlobPublicAccess
Remédiation :
- Storage account > Configuration
- Allow Blob public access : Disabled
- Validation : aucun container public requis
- Alternative : SAS tokens pour accès externe
Valeur par défaut : Enabled
3.4 — LOGGING ET MONITORING
3.4.1 — Storage Analytics et monitoring activés
Niveau : 🟠
Référence CIS : CIS Azure 3.4
MITRE ATT&CK : T1562.001
Description : Storage Analytics doit être activé pour logger toutes les opérations de lecture/écriture/suppression avec rétention appropriée (90 jours minimum).
Vérification :
- Portal > Storage account > Monitoring > Insights
- CLI: az monitor diagnostic-settings list –resource
- PowerShell: Get-AzDiagnosticSetting -ResourceId
Remédiation :
- Storage account > Monitoring > Diagnostic settings
- Activer logs pour Blob, Queue, Table, File
- Destination : Log Analytics workspace
- Retention : 90 jours minimum
Valeur par défaut : Logging minimal
3.4.2 — Alertes sur activités suspectes de stockage
Niveau : 🟡
Référence CIS : CIS Azure 3.4.1
MITRE ATT&CK : T1562.001
Description : Des alertes doivent être configurées pour détecter les activités anormales : accès depuis IPs non autorisées, volume de données anormal, suppressions en masse.
Vérification :
- Portal > Azure Monitor > Alerts > Alert rules
- CLI: az monitor metrics alert list
- PowerShell: Get-AzMetricAlertRuleV2
Remédiation :
- Azure Monitor > Alerts > New alert rule
- Scope : Storage account
- Conditions : Transactions anomales, Errors, etc.
- Action groups : notification équipe sécurité
Valeur par défaut : Pas d’alertes configurées
3.5 — PROTECTION AVANCÉE DES DONNÉES
3.5.1 — Advanced Threat Protection activé
Niveau : 🟠
Référence CIS : CIS Azure 3.5
MITRE ATT&CK : T1204.002
Description : Advanced Threat Protection (Defender for Storage) doit être activé pour détecter les malwares, accès anormaux, et exfiltration de données.
Vérification :
- Portal > Defender for Cloud > Workload protections > Storage
- CLI: az security pricing show –name StorageAccounts
- PowerShell: Get-AzSecurityPricing -Name “StorageAccounts”
Remédiation :
- Defender for Cloud > Workload protections > Storage
- Enable Defender for Storage
- Configurer alertes et notifications
- Intégration avec Sentinel/SIEM
Valeur par défaut : Désactivé
3.5.2 — Soft delete activé pour blobs et containers
Niveau : 🟡
Référence CIS : CIS Azure 3.5.1
MITRE ATT&CK : T1485
Description : La suppression réversible doit être activée pour les blobs et containers pour permettre la récupération après suppression accidentelle ou malveillante.
Vérification :
- Portal > Storage account > Data protection > Recovery
- CLI: az storage account blob-service-properties show –account-name
- PowerShell: Get-AzStorageBlobServiceProperty
Remédiation :
- Storage account > Data protection > Recovery
- Enable soft delete for blobs : 30 jours
- Enable soft delete for containers : 30 jours
- Test procédure de récupération
Valeur par défaut : Désactivé
3.5.3 — Versioning des blobs activé
Niveau : 🟡
Référence CIS : CIS Azure 3.5.2
MITRE ATT&CK : T1485
Description : Le versioning des blobs doit être activé pour les données critiques afin de maintenir l’historique des modifications et permettre la restauration.
Vérification :
- Portal > Storage account > Data protection > Tracking
- CLI: az storage account blob-service-properties show –account-name
–query “isVersioningEnabled” - PowerShell: Get-AzStorageBlobServiceProperty | Select-Object IsVersioningEnabled
Remédiation :
- Storage account > Data protection > Tracking
- Enable versioning for blobs
- Configurer lifecycle management pour versions anciennes
- Monitoring de la consommation de stockage
Valeur par défaut : Désactivé
3.6 — BACKUP ET DISASTER RECOVERY
3.6.1 — Géo-réplication configurée selon criticité
Niveau : 🟡
Référence CIS : CIS Azure 3.6
MITRE ATT&CK : T1485
Description : La géo-réplication appropriée doit être configurée selon la criticité des données : LRS pour dev/test, GRS/RA-GRS pour production critique.
Vérification :
- Portal > Storage account > Overview > Replication
- CLI: az storage account show –name
–query “sku.name” - PowerShell: Get-AzStorageAccount | Select-Object StorageAccountName,Sku
Remédiation :
- Évaluer criticité des données par storage account
- Production critique : Standard_RAGRS ou Standard_GZRS
- Non-critique : Standard_LRS ou Standard_ZRS
- Test procédures de failover
Valeur par défaut : LRS (réplication locale uniquement)
3.6.2 — Backup automatisé via Azure Backup
Niveau : 🟡
Référence CIS : CIS Azure 3.6.1
MITRE ATT&CK : T1485
Description : Les données critiques doivent être sauvegardées automatiquement via Azure Backup avec rétention selon les exigences métier (7-7-12 minimum).
Vérification :
- Portal > Recovery Services vault > Backup items > Azure Storage (Azure Files)
- CLI: az backup item list –resource-group
–vault-name - PowerShell: Get-AzRecoveryServicesBackupItem
Remédiation :
- Créer Recovery Services vault
- Configurer backup policy (daily/weekly/monthly)
- Activer backup pour Azure Files critiques
- Tester procédures de restauration
Valeur par défaut : Pas de backup automatique
RÉCAPITULATIF SECTION S3 - STORAGE SECURITY
| Sous-section | Total contrôles | 🔴 Critique | 🟠 Élevé | 🟡 Moyen | 🟢 Faible |
|---|---|---|---|---|---|
| 3.1 Chiffrement | 3 | 2 | 1 | 0 | 0 |
| 3.2 Gestion clés | 3 | 0 | 2 | 1 | 0 |
| 3.3 Accès réseau | 3 | 0 | 3 | 0 | 0 |
| 3.4 Logging | 2 | 0 | 1 | 1 | 0 |
| 3.5 Protection avancée | 3 | 0 | 1 | 2 | 0 |
| 3.6 Backup DR | 2 | 0 | 0 | 2 | 0 |
| TOTAL S3 | 16 | 2 | 8 | 6 | 0 |
S4 — SÉCURITÉ DES BASES DE DONNÉES
4.1 — AZURE SQL DATABASE SECURITY
4.1.1 — Transparent Data Encryption (TDE) activé
Niveau : 🔴
Référence CIS : CIS Azure 4.1
MITRE ATT&CK : T1486
Description : Transparent Data Encryption doit être activé sur toutes les bases de données SQL Azure pour chiffrer les données au repos avec rotation automatique des clés.
Vérification :
- Portal > SQL database > Security > Transparent data encryption
- CLI: az sql db tde show –database
–server –resource-group - PowerShell: Get-AzSqlDatabaseTransparentDataEncryption
Remédiation :
- SQL database > Security > Transparent data encryption
- Status : ON (activé)
- Pour données sensibles : Customer-managed key dans Key Vault
- Vérifier performance impact négligeable
Valeur par défaut : Activé par défaut depuis 2017
4.1.2 — SQL Auditing activé avec rétention appropriée
Niveau : 🔴
Référence CIS : CIS Azure 4.1.1
MITRE ATT&CK : T1562.001
Description : L’audit SQL doit être activé au niveau serveur avec logs envoyés vers Log Analytics et rétention minimum 90 jours pour conformité et investigation.
Vérification :
- Portal > SQL server > Security > Auditing
- CLI: az sql server audit-policy show –server
–resource-group - PowerShell: Get-AzSqlServerAudit
Remédiation :
- SQL server > Security > Auditing > ON
- Destination : Log Analytics workspace
- Retention : 90 jours minimum
- Audit actions : All actions and groups
Valeur par défaut : Désactivé
4.1.3 — Advanced Data Security activé
Niveau : 🔴
Référence CIS : CIS Azure 4.1.2
MITRE ATT&CK : T1190
Description : Advanced Data Security (maintenant Defender for SQL) doit être activé pour la détection de menaces, évaluation des vulnérabilités et classification des données.
Vérification :
- Portal > SQL server > Security > Microsoft Defender for Cloud
- CLI: az security pricing show –name SqlServers
- PowerShell: Get-AzSecurityPricing -Name “SqlServers”
Remédiation :
- SQL server > Security > Microsoft Defender for Cloud > Enable
- Configurer notifications email pour alertes
- Activer vulnerability assessment avec stockage résultats
- Révision régulière des recommandations
Valeur par défaut : Désactivé
4.1.4 — Firewall SQL Server configuré restrictif
Niveau : 🟠
Référence CIS : CIS Azure 4.1.3
MITRE ATT&CK : T1190
Description : Les règles de firewall SQL Server doivent être configurées pour limiter l’accès aux IPs/réseaux autorisés uniquement, avec “Allow Azure services” désactivé si non requis.
Vérification :
- Portal > SQL server > Security > Firewalls and virtual networks
- CLI: az sql server firewall-rule list –server
–resource-group - PowerShell: Get-AzSqlServerFirewallRule
Remédiation :
- SQL server > Firewalls and virtual networks
- “Allow Azure services and resources to access this server” : OFF si non requis
- Ajouter uniquement IPs/ranges nécessaires
- Utiliser Virtual Network rules pour VNets
Valeur par défaut : “Allow Azure services” souvent activé
4.1.5 — Azure AD Authentication configurée
Niveau : 🟠
Référence CIS : CIS Azure 4.1.4
MITRE ATT&CK : T1078.004
Description : L’authentification Azure AD doit être configurée comme méthode d’authentification principale, avec désactivation optionnelle de l’authentification SQL.
Vérification :
- Portal > SQL server > Security > Azure Active Directory admin
- CLI: az sql server ad-admin show –server
–resource-group - PowerShell: Get-AzSqlServerActiveDirectoryAdministrator
Remédiation :
- SQL server > Security > Azure Active Directory admin
- Set admin : Configurer un groupe AD plutôt qu’un utilisateur
- Considérer désactiver SQL authentication si AD seul suffisant
- Utiliser Managed Identity pour applications
Valeur par défaut : SQL authentication uniquement
4.2 — AZURE SQL MANAGED INSTANCE
4.2.1 — Managed Instance dans VNet privé
Niveau : 🔴
Référence CIS : CIS Azure 4.2
MITRE ATT&CK : T1095
Description : Azure SQL Managed Instance doit être déployé dans un subnet dédié de VNet privé avec NSG appropriés pour isoler le trafic réseau.
Vérification :
- Portal > SQL managed instance > Overview > Virtual network/subnet
- CLI: az sql mi show –name
–resource-group –query “subnetId” - PowerShell: Get-AzSqlInstance | Select-Object SubnetId
Remédiation :
- Déploiement dans subnet dédié (/27 minimum)
- NSG avec règles restrictives
- Route table configurée si nécessaire
- Pas d’endpoint public sauf exception justifiée
Valeur par défaut : Configuration lors du déploiement
4.2.2 — TLS 1.2 minimum pour Managed Instance
Niveau : 🟠
Référence CIS : CIS Azure 4.2.1
MITRE ATT&CK : T1040
Description : La version TLS minimale doit être configurée à 1.2 pour toutes les connexions vers SQL Managed Instance.
Vérification :
- Portal > SQL managed instance > Security > Networking
- CLI: az sql mi show –name
–resource-group –query “minimalTlsVersion” - PowerShell: Get-AzSqlInstance | Select-Object MinimalTlsVersion
Remédiation :
- SQL managed instance > Security > Networking
- Minimal TLS version : 1.2
- Tester compatibilité applications
- Monitoring des rejets connexions TLS < 1.2
Valeur par défaut : TLS 1.0
4.3 — POSTGRESQL ET MYSQL
4.3.1 — SSL enforcement activé PostgreSQL/MySQL
Niveau : 🔴
Référence CIS : CIS Azure 4.3
MITRE ATT&CK : T1040
Description : L’application SSL doit être activée sur tous les serveurs Azure Database for PostgreSQL et MySQL pour chiffrer les communications.
Vérification :
- Portal > Azure Database > Connection security > SSL enforcement
- CLI: az postgres server show –name
–query “sslEnforcement” - PowerShell: Get-AzPostgreSqlServer | Select-Object SslEnforcement
Remédiation :
- Azure Database > Connection security
- SSL enforcement : ENABLED
- Minimum TLS version : 1.2
- Mettre à jour chaînes connexion applications
Valeur par défaut : ENABLED par défaut
4.3.2 — Firewall PostgreSQL/MySQL restrictif
Niveau : 🟠
Référence CIS : CIS Azure 4.3.1
MITRE ATT&CK : T1190
Description : Les règles de firewall des serveurs PostgreSQL/MySQL doivent être configurées pour limiter l’accès aux sources autorisées uniquement.
Vérification :
- Portal > Azure Database > Connection security > Firewall rules
- CLI: az postgres server firewall-rule list –server-name
- PowerShell: Get-AzPostgreSqlFirewallRule
Remédiation :
- Azure Database > Connection security > Firewall rules
- “Allow access to Azure services” : OFF si non requis
- Ajouter uniquement IPs/ranges nécessaires
- Utiliser Private Endpoints quand possible
Valeur par défaut : “Allow Azure services” souvent activé
4.3.3 — Backup automatique avec rétention appropriée
Niveau : 🟠
Référence CIS : CIS Azure 4.3.2
MITRE ATT&CK : T1485
Description : Les sauvegardes automatiques doivent être configurées avec rétention appropriée (7-35 jours) et géo-redondance pour les environnements critiques.
Vérification :
- Portal > Azure Database > Overview > Backup retention period
- CLI: az postgres server show –name
–query “backupRetentionDays” - PowerShell: Get-AzPostgreSqlServer | Select-Object BackupRetentionDay
Remédiation :
- Configuration lors du déploiement ou via support
- Retention period : 7 jours minimum, 35 pour production
- Geo-redundant backup pour environnements critiques
- Test procédures de restauration
Valeur par défaut : 7 jours, locally redundant
4.4 — COSMOS DB SECURITY
4.4.1 — Chiffrement Cosmos DB avec Customer Managed Keys
Niveau : 🟠
Référence CIS : CIS Azure 4.4
MITRE ATT&CK : T1486
Description : Cosmos DB doit utiliser le chiffrement avec Customer Managed Keys stockées dans Azure Key Vault pour les données sensibles.
Vérification :
- Portal > Cosmos DB account > Settings > Encryption
- CLI: az cosmosdb show –name
–query “keyVaultKeyUri” - PowerShell: Get-AzCosmosDBAccount | Select-Object KeyVaultKeyUri
Remédiation :
- Créer Key Vault avec clé de chiffrement
- Cosmos DB > Settings > Encryption
- Configurer Customer Managed Key
- Vérifier rotation automatique des clés
Valeur par défaut : Microsoft-managed keys
4.4.2 — Firewall Cosmos DB configuré
Niveau : 🟠
Référence CIS : CIS Azure 4.4.1
MITRE ATT&CK : T1190
Description : Le firewall IP de Cosmos DB doit être configuré pour restreindre l’accès aux sources autorisées, avec désactivation de l’accès public si non requis.
Vérification :
- Portal > Cosmos DB account > Settings > Firewalls and virtual networks
- CLI: az cosmosdb show –name
–query “ipRules” - PowerShell: Get-AzCosmosDBAccount | Select-Object IpRules
Remédiation :
- Cosmos DB > Firewalls and virtual networks
- “Allow access from Azure Portal” : OFF si non requis
- “Allow access from Azure datacenters” : OFF si non requis
- Ajouter uniquement IPs autorisées
Valeur par défaut : Accès public autorisé
4.4.3 — Private Endpoints pour Cosmos DB
Niveau : 🟡
Référence CIS : CIS Azure 4.4.2
MITRE ATT&CK : T1095
Description : Des Private Endpoints doivent être configurés pour l’accès sécurisé à Cosmos DB depuis les VNets Azure sans transit par Internet.
Vérification :
- Portal > Cosmos DB account > Settings > Private endpoint connections
- CLI: az network private-endpoint list –query “[?privateLinkServiceConnections[0].groupIds[0]==‘Sql’]”
- PowerShell: Get-AzPrivateEndpoint | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.PrivateLinkServiceConnections.GroupIds -contains “Sql”}
Remédiation :
- Cosmos DB > Private endpoint connections > Add
- Créer Private Endpoint dans VNet approprié
- Configurer Private DNS zone
- Désactiver accès public après validation
Valeur par défaut : Pas de Private Endpoint
4.5 — DATABASE MONITORING ET COMPLIANCE
4.5.1 — Log Analytics intégration pour databases
Niveau : 🟠
Référence CIS : CIS Azure 4.5
MITRE ATT&CK : T1562.001
Description : Tous les logs de base de données doivent être centralisés dans Log Analytics pour monitoring, alerting et investigation de sécurité.
Vérification :
- Portal > Database > Monitoring > Diagnostic settings
- CLI: az monitor diagnostic-settings list –resource
- PowerShell: Get-AzDiagnosticSetting -ResourceId
Remédiation :
- Database > Monitoring > Diagnostic settings
- Activer tous les logs pertinents (Audit, Errors, etc.)
- Destination : Log Analytics workspace
- Retention : 90 jours minimum
Valeur par défaut : Logging minimal
4.5.2 — Alertes sur activités suspectes base de données
Niveau : 🟠
Référence CIS : CIS Azure 4.5.1
MITRE ATT&CK : T1562.001
Description : Des alertes doivent être configurées pour détecter les activités anormales : connexions depuis IPs inhabituelles, requêtes suspectes, échecs d’authentification répétés.
Vérification :
- Portal > Azure Monitor > Alerts > Alert rules (scope: databases)
- CLI: az monitor metrics alert list –resource-group
- PowerShell: Get-AzMetricAlertRuleV2
Remédiation :
- Azure Monitor > Alerts > New alert rule
- Scope : Database resources
- Conditions : Failed connections, CPU high, etc.
- Action groups : SOC notification
Valeur par défaut : Pas d’alertes configurées
4.5.3 — Data Discovery et Classification activées
Niveau : 🟡
Référence CIS : CIS Azure 4.5.2
MITRE ATT&CK : T1083
Description : La découverte et classification automatique des données sensibles doit être activée pour identifier et protéger les informations personnelles et confidentielles.
Vérification :
- Portal > SQL database > Security > Data Discovery & Classification
- CLI: Vérification via Azure Resource Graph ou API REST
- PowerShell: Utilisation des cmdlets SQL ou Resource Graph
Remédiation :
- SQL database > Security > Data Discovery & Classification
- Lancer scan automatique
- Révision et validation des classifications
- Application labels de sensibilité
Valeur par défaut : Scan manuel
4.6 — ACCESS CONTROL ET PERMISSIONS
4.6.1 — Principe du moindre privilège pour accès DB
Niveau : 🟠
Référence CIS : CIS Azure 4.6
MITRE ATT&CK : T1078
Description : Les permissions d’accès aux bases de données doivent suivre le principe du moindre privilège avec séparation des environnements et rôles granulaires.
Vérification :
- Portal > Database > Access control (IAM)
- SQL: SELECT name, type_desc FROM sys.database_principals
- PowerShell: Get-AzRoleAssignment -Scope
Remédiation :
- Audit des permissions actuelles
- Création de rôles granulaires par fonction
- Suppression des permissions excessives
- Séparation prod/dev/test
Valeur par défaut : Permissions souvent excessives
4.6.2 — Comptes de service avec Managed Identity
Niveau : 🟠
Référence CIS : CIS Azure 4.6.1
MITRE ATT&CK : T1078.004
Description : Les applications doivent utiliser Managed Identity pour l’authentification aux bases de données Azure plutôt que des chaînes de connexion avec mots de passe.
Vérification :
- Portal > Application > Identity > System assigned/User assigned
- Code : vérifier utilisation DefaultAzureCredential
- PowerShell: Get-AzWebApp | Select-Object Identity
Remédiation :
- Activer Managed Identity sur App Service/VM
- Configurer permissions database pour l’identity
- Modifier code application (DefaultAzureCredential)
- Supprimer chaînes connexion avec mots de passe
Valeur par défaut : Chaînes de connexion avec mots de passe
RÉCAPITULATIF SECTION S4 - DATABASE SECURITY
| Sous-section | Total contrôles | 🔴 Critique | 🟠 Élevé | 🟡 Moyen | 🟢 Faible |
|---|---|---|---|---|---|
| 4.1 Azure SQL Database | 5 | 3 | 2 | 0 | 0 |
| 4.2 SQL Managed Instance | 2 | 1 | 1 | 0 | 0 |
| 4.3 PostgreSQL/MySQL | 3 | 1 | 2 | 0 | 0 |
| 4.4 Cosmos DB | 3 | 0 | 2 | 1 | 0 |
| 4.5 Monitoring | 3 | 0 | 2 | 1 | 0 |
| 4.6 Access Control | 2 | 0 | 2 | 0 | 0 |
| TOTAL S4 | 18 | 5 | 11 | 2 | 0 |
S5 — LOGGING ET SURVEILLANCE
5.1 — AZURE ACTIVITY LOG
5.1.1 — Activity Log retention configurée appropriée
Niveau : 🔴
Référence CIS : CIS Azure 5.1
MITRE ATT&CK : T1562.001
Description : L’Azure Activity Log doit être configuré avec une rétention de 90 jours minimum et exporté vers Log Analytics pour analyse et conformité réglementaire.
Vérification :
- Portal > Monitor > Activity Log > Export Activity Logs
- CLI: az monitor diagnostic-settings list –resource “/subscriptions/
” - PowerShell: Get-AzDiagnosticSetting -ResourceId “/subscriptions/
”
Remédiation :
- Monitor > Activity Log > Export Activity Logs
- Diagnostic settings > Add diagnostic setting
- Logs : Administrative, Security, Alert, Policy
- Destination : Log Analytics workspace
Valeur par défaut : 90 jours dans Activity Log, pas d’export
5.1.2 — Alertes Activity Log pour actions critiques
Niveau : 🔴
Référence CIS : CIS Azure 5.1.1
MITRE ATT&CK : T1562.001
Description : Des alertes doivent être configurées pour les actions critiques dans Activity Log : création/suppression de ressources, modifications NSG, changements RBAC.
Vérification :
- Portal > Monitor > Alerts > Alert rules
- CLI: az monitor activity-log alert list
- PowerShell: Get-AzActivityLogAlert
Remédiation :
- Monitor > Alerts > New alert rule
- Scope : Subscription
- Condition : Activity Log - Administrative
- Filters : Create/Delete Resource, NSG changes, etc.
Valeur par défaut : Aucune alerte Activity Log
5.1.3 — Activity Log protection contre suppression
Niveau : 🟠
Référence CIS : CIS Azure 5.1.2
MITRE ATT&CK : T1562.001
Description : L’Activity Log exporté vers Log Analytics ou Storage doit être protégé contre la suppression non autorisée avec contrôles d’accès appropriés.
Vérification :
- Portal > Log Analytics workspace > Access control (IAM)
- CLI: az role assignment list –scope
- PowerShell: Get-AzRoleAssignment -Scope
Remédiation :
- Limiter les permissions “Contributor” sur Log Analytics workspace
- Utiliser “Log Analytics Reader” pour la majorité des utilisateurs
- Resource lock sur workspace critique
- Audit régulier des accès
Valeur par défaut : Permissions souvent excessives
5.2 — LOG ANALYTICS WORKSPACE
5.2.1 — Log Analytics workspace centralisé configuré
Niveau : 🔴
Référence CIS : CIS Azure 5.2
MITRE ATT&CK : T1562.001
Description : Un workspace Log Analytics centralisé doit être configuré pour collecter tous les logs de sécurité avec rétention appropriée selon les exigences de conformité.
Vérification :
- Portal > Log Analytics workspaces > Overview
- CLI: az monitor log-analytics workspace list
- PowerShell: Get-AzOperationalInsightsWorkspace
Remédiation :
- Créer Log Analytics workspace central
- Configurer retention : 90 jours minimum
- Data sources : Activity Logs, Security Events, etc.
- Scaling selon volume de données
Valeur par défaut : Pas de workspace centralisé
5.2.2 — Solutions de sécurité installées dans Log Analytics
Niveau : 🟠
Référence CIS : CIS Azure 5.2.1
MITRE ATT&CK : T1562.001
Description : Les solutions de sécurité doivent être installées dans Log Analytics : Security Center, Update Management, Change Tracking, Security & Audit.
Vérification :
- Portal > Log Analytics workspace > Legacy solutions
- CLI: az monitor log-analytics solution list
- PowerShell: Get-AzOperationalInsightsIntelligencePack
Remédiation :
- Log Analytics workspace > Legacy solutions
- Ajouter : Security & Audit, Update Management
- Configurer Change Tracking si requis
- Vérifier data collection
Valeur par défaut : Solutions de base uniquement
5.2.3 — Contrôle d’accès granulaire Log Analytics
Niveau : 🟠
Référence CIS : CIS Azure 5.2.2
MITRE ATT&CK : T1562.001
Description : L’accès au workspace Log Analytics doit être contrôlé avec permissions granulaires par table/ressource pour respecter la séparation des responsabilités.
Vérification :
- Portal > Log Analytics workspace > Access control (IAM)
- Portal > Tables > Access control settings
- PowerShell: Get-AzRoleAssignment -Scope
Remédiation :
- Utiliser table-level RBAC plutôt que workspace-level
- Rôles granulaires : Log Analytics Reader, Security Reader
- Custom roles pour besoins spécifiques
- Audit régulier des accès
Valeur par défaut : Workspace-level permissions
5.3 — DIAGNOSTIC SETTINGS
5.3.1 — Diagnostic settings activés pour toutes ressources critiques
Niveau : 🔴
Référence CIS : CIS Azure 5.3
MITRE ATT&CK : T1562.001
Description : Les paramètres de diagnostic doivent être activés sur toutes les ressources critiques avec envoi des logs vers Log Analytics centralisé.
Vérification :
- Portal > Resources > Monitoring > Diagnostic settings
- CLI: az monitor diagnostic-settings list –resource
- PowerShell: Get-AzDiagnosticSetting -ResourceId
Remédiation :
- Identifier toutes les ressources critiques
- Activer diagnostic settings par ressource
- Sélectionner tous les logs de sécurité pertinents
- Destination : Log Analytics workspace central
Valeur par défaut : Diagnostic settings désactivés
5.3.2 — Azure Policy pour enforcement diagnostic settings
Niveau : 🟠
Référence CIS : CIS Azure 5.3.1
MITRE ATT&CK : T1562.001
Description : Azure Policy doit être utilisé pour forcer automatiquement l’activation des diagnostic settings sur toutes les nouvelles ressources créées.
Vérification :
- Portal > Policy > Assignments > Diagnostic settings policies
- CLI: az policy assignment list –query “[?contains(displayName,‘diagnostic’)]”
- PowerShell: Get-AzPolicyAssignment | Where-Object {BEGIN___COMMAND_OUTPUT_MARKER.Properties.displayName -like “diagnostic”}
Remédiation :
- Policy > Definitions > Rechercher “Configure diagnostic”
- Assign policies pour chaque type de ressource
- Configure remediation automatique
- Monitor compliance dashboard
Valeur par défaut : Pas d’enforcement automatique
5.4 — AZURE MONITOR ALERTS
5.4.1 — Action Groups configurés pour équipes sécurité
Niveau : 🟠
Référence CIS : CIS Azure 5.4
MITRE ATT&CK : T1562.001
Description : Des Action Groups doivent être configurés avec les contacts appropriés (SOC, équipe sécurité, astreinte) pour notification des alertes de sécurité.
Vérification :
- Portal > Monitor > Alerts > Action groups
- CLI: az monitor action-group list
- PowerShell: Get-AzActionGroup
Remédiation :
- Monitor > Alerts > Action groups > Add
- Actions : Email, SMS, Azure app notification
- Groupes : SOC 24/7, Security Team, Management
- Test notifications
Valeur par défaut : Pas d’action groups configurés
5.4.2 — Alertes métriques pour ressources critiques
Niveau : 🟠
Référence CIS : CIS Azure 5.4.1
MITRE ATT&CK : T1562.001
Description : Des alertes métriques doivent être configurées pour surveiller la santé et performance des ressources critiques : CPU, mémoire, connexions, erreurs.
Vérification :
- Portal > Monitor > Alerts > Alert rules (Metric alerts)
- CLI: az monitor metrics alert list
- PowerShell: Get-AzMetricAlertRuleV2
Remédiation :
- Identifier métriques critiques par type de ressource
- Configurer seuils appropriés (CPU >90%, etc.)
- Action groups pour escalade
- Suppression alertes non actionnables
Valeur par défaut : Alertes basiques uniquement
5.4.3 — Log search alerts pour détection anomalies
Niveau : 🟡
Référence CIS : CIS Azure 5.4.2
MITRE ATT&CK : T1562.001
Description : Des alertes de recherche de logs (KQL) doivent être configurées pour détecter les activités suspectes et anomalies de sécurité.
Vérification :
- Portal > Monitor > Alerts > Alert rules (Log search alerts)
- CLI: az monitor scheduled-query list
- PowerShell: Get-AzScheduledQueryRule
Remédiation :
- Développer requêtes KQL pour détection
- Exemples : Failed logins, Privilege escalation
- Fréquence appropriée (5-15 minutes)
- Tuning pour réduire false positives
Valeur par défaut : Pas d’alertes log search
5.5 — NETWORK WATCHER
5.5.1 — Network Watcher activé dans toutes régions
Niveau : 🟠
Référence CIS : CIS Azure 5.5
MITRE ATT&CK : T1040
Description : Network Watcher doit être activé dans toutes les régions Azure utilisées pour permettre le monitoring réseau et l’investigation des incidents.
Vérification :
- Portal > Network Watcher > Overview (toutes régions)
- CLI: az network watcher list
- PowerShell: Get-AzNetworkWatcher
Remédiation :
- Network Watcher > Overview
- Vérifier activation dans chaque région utilisée
- Activer si nécessaire
- Configurer diagnostic settings
Valeur par défaut : Activé automatiquement dans certaines régions
5.5.2 — NSG Flow Logs activés pour NSGs critiques
Niveau : 🟠
Référence CIS : CIS Azure 5.5.1
MITRE ATT&CK : T1040
Description : Les NSG Flow Logs doivent être activés sur tous les NSG critiques avec stockage dans Storage Account et analyse via Traffic Analytics.
Vérification :
- Portal > Network Watcher > NSG flow logs
- CLI: az network watcher flow-log list
- PowerShell: Get-AzNetworkWatcherFlowLogStatus
Remédiation :
- Network Watcher > NSG flow logs
- Configurer pour chaque NSG critique
- Storage account pour stockage logs
- Activer Traffic Analytics avec Log Analytics
Valeur par défaut : Désactivé
5.5.3 — Traffic Analytics configuré
Niveau : 🟡
Référence CIS : CIS Azure 5.5.2
MITRE ATT&CK : T1040
Description : Traffic Analytics doit être configuré pour analyser les NSG Flow Logs et détecter les communications anormales ou non autorisées.
Vérification :
- Portal > Network Watcher > Traffic Analytics
- CLI: Vérification via Network Watcher flow logs
- PowerShell: Vérification des paramètres Traffic Analytics
Remédiation :
- Network Watcher > Traffic Analytics
- Configurer Log Analytics workspace
- Interval : 10 minutes pour production
- Révision régulière des insights
Valeur par défaut : Désactivé
5.6 — AZURE SENTINEL / SIEM
5.6.1 — Azure Sentinel ou SIEM externe configuré
Niveau : 🟠
Référence CIS : CIS Azure 5.6
MITRE ATT&CK : T1562.001
Description : Une solution SIEM (Azure Sentinel ou externe) doit être configurée pour corrélation des événements de sécurité et réponse aux incidents.
Vérification :
- Portal > Microsoft Sentinel > Overview
- CLI: az sentinel workspace list
- Ou vérification SIEM externe (Splunk, QRadar, etc.)
Remédiation :
- Évaluer Azure Sentinel vs SIEM existant
- Si Sentinel : onboard Log Analytics workspace
- Configurer data connectors appropriés
- Développer règles de détection
Valeur par défaut : Aucune solution SIEM
5.6.2 — Data connectors Sentinel configurés
Niveau : 🟡
Référence CIS : CIS Azure 5.6.1
MITRE ATT&CK : T1562.001
Description : Tous les connecteurs de données pertinents doivent être configurés dans Sentinel : Azure AD, Activity Log, Security Center, Office 365, etc.
Vérification :
- Portal > Microsoft Sentinel > Data connectors
- CLI: az sentinel data-connector list
- PowerShell: Get-AzSentinelDataConnector
Remédiation :
- Sentinel > Data connectors
- Activer : Azure Active Directory, Azure Activity
- Security Events, Office 365 si applicable
- Connecteurs tiers selon environnement
Valeur par défaut : Connecteurs de base uniquement
5.6.3 — Analytics rules et détections personnalisées
Niveau : 🟡
Référence CIS : CIS Azure 5.6.2
MITRE ATT&CK : T1562.001
Description : Des règles d’analyse et détections personnalisées doivent être configurées dans Sentinel pour détecter les menaces spécifiques à l’environnement.
Vérification :
- Portal > Microsoft Sentinel > Analytics > Rules
- CLI: az sentinel alert-rule list
- PowerShell: Get-AzSentinelAlertRule
Remédiation :
- Sentinel > Analytics > Rule templates
- Activer règles Microsoft appropriées
- Créer règles personnalisées selon besoins
- Tuning et réduction false positives
Valeur par défaut : Templates Microsoft uniquement
5.7 — COMPLIANCE ET AUDIT TRAIL
5.7.1 — Immutable logs pour compliance
Niveau : 🟡
Référence CIS : CIS Azure 5.7
MITRE ATT&CK : T1562.001
Description : Pour les environnements soumis à conformité stricte, les logs doivent être stockés de manière immuable avec protection WORM.
Vérification :
- Portal > Storage account > Data protection > Immutable storage
- CLI: az storage container immutability-policy show
- PowerShell: Get-AzStorageContainerImmutabilityPolicy
Remédiation :
- Storage account dédié pour logs d’audit
- Immutable blob storage avec time-based retention
- Legal hold si requis par régulation
- Export logs critiques vers ce storage
Valeur par défaut : Stockage logs standard mutable
5.7.2 — Audit trail complet des modifications
Niveau : 🟡
Référence CIS : CIS Azure 5.7.1
MITRE ATT&CK : T1562.001
Description : Un audit trail complet doit être maintenu pour toutes les modifications de configuration de sécurité avec traçabilité des responsables.
Vérification :
- Portal > Monitor > Activity Log > Administrative category
- Requête KQL : AzureActivity | where CategoryValue == “Administrative”
- PowerShell: Get-AzLog -ResourceProvider “Microsoft.Authorization”
Remédiation :
- S’assurer Activity Log activé sur toutes souscriptions
- Export vers Log Analytics avec rétention longue
- Alertes sur modifications critiques
- Reporting mensuel des changements
Valeur par défaut : Activity Log standard 90 jours
RÉCAPITULATIF SECTION S5 - LOGGING ET SURVEILLANCE
| Sous-section | Total contrôles | 🔴 Critique | 🟠 Élevé | 🟡 Moyen | 🟢 Faible |
|---|---|---|---|---|---|
| 5.1 Activity Log | 3 | 2 | 1 | 0 | 0 |
| 5.2 Log Analytics | 3 | 1 | 2 | 0 | 0 |
| 5.3 Diagnostic Settings | 2 | 1 | 1 | 0 | 0 |
| 5.4 Azure Monitor | 3 | 0 | 2 | 1 | 0 |
| 5.5 Network Watcher | 3 | 0 | 2 | 1 | 0 |
| 5.6 Sentinel/SIEM | 3 | 0 | 1 | 2 | 0 |
| 5.7 Compliance | 2 | 0 | 0 | 2 | 0 |
| TOTAL S5 | 19 | 4 | 9 | 6 | 0 |
S6 — SÉCURITÉ RÉSEAU
6.1.1 — Network Security Groups (NSG) configurés restrictifs
Niveau : 🔴
Référence CIS : CIS Azure 6.1
MITRE ATT&CK : T1095
Description : Les NSG doivent être configurés avec règles restrictives suivant le principe du moindre privilège pour contrôler le trafic réseau.
Vérification :
- Portal > Virtual networks > Subnets > Network security group
- CLI: az network nsg rule list –nsg-name
Remédiation :
- Audit des règles NSG existantes
- Suppression des règles “Any to Any”
- Principe allow explicit, deny all
6.2.1 — Azure Firewall ou NVA déployé
Niveau : 🟠
Référence CIS : CIS Azure 6.2
MITRE ATT&CK : T1095
Description : Azure Firewall ou Network Virtual Appliance doit être déployé pour inspection et filtrage du trafic réseau centralisé.
Vérification :
- Portal > Firewalls ou Network Virtual Appliances
- CLI: az network firewall list
Remédiation :
- Déploiement Azure Firewall dans hub VNet
- Configuration des règles de filtrage
- Route tables pour forcer passage par firewall
6.3.1 — DDoS Protection Standard activé
Niveau : 🟠
Référence CIS : CIS Azure 6.3
MITRE ATT&CK : T1499
Description : DDoS Protection Standard doit être activé sur les VNets exposés publiquement pour protection contre les attaques déni de service.
Vérification :
- Portal > Virtual networks > DDoS protection
- CLI: az network ddos-protection list
Remédiation :
- Créer DDoS protection plan
- Associer aux VNets publics
- Configurer alertes DDoS
6.4 — AZURE FIREWALL PREMIUM ET WAF
6.4.1 — Azure Firewall Premium avec IDPS activé
Niveau : 🔴
Référence CIS : CIS Azure 6.1.1
MITRE ATT&CK : T1190
Description : Déployer Azure Firewall Premium avec les capacités IDPS (Intrusion Detection and Prevention System) pour détecter et bloquer les menaces réseau avancées.
Vérification :
- Portal > Azure Firewall > Overview > Check SKU
- CLI: az network firewall show –name MyFirewall –resource-group MyRG –query “sku.tier”
- PowerShell: (Get-AzFirewall -Name “MyFirewall” -ResourceGroupName “MyRG”).Sku.Tier
Remédiation :
- Upgrader vers Azure Firewall Premium
- Activer les règles IDPS
- Configurer les signatures de menaces
# Créer Azure Firewall Premium avec IDPS
$firewallPremium = New-AzFirewall -Name "MyFirewallPremium" -ResourceGroupName "MyRG" -Location "France Central" -VirtualNetwork $vnet -PublicIpAddress $pip -SkuTier "Premium" -SkuName "AZFW_VNet"
# Activer IDPS
$firewallPolicy = New-AzFirewallPolicy -Name "MyFirewallPolicy" -ResourceGroupName "MyRG" -Location "France Central" -ThreatIntelMode "Alert" -IntrusionDetection (New-AzFirewallPolicyIntrusionDetection -Mode "Alert")
Valeur par défaut : Standard SKU
6.4.2 — Web Application Firewall (WAF) avec règles OWASP
Niveau : 🔴
Référence CIS : CIS Azure 6.1.2
MITRE ATT&CK : T1190
Description : Configurer WAF avec les règles OWASP Core Rule Set pour protéger les applications web contre les attaques communes.
Vérification :
- Portal > Application Gateway > Web application firewall
- CLI: az network application-gateway waf-config show –gateway-name MyAppGW –resource-group MyRG
- PowerShell: Get-AzApplicationGatewayWebApplicationFirewallConfiguration -ApplicationGateway $appgw
Remédiation :
- Activer WAF sur Application Gateway
- Configurer OWASP Core Rule Set 3.2
- Définir le mode de protection
# Configurer WAF avec OWASP
$appgw = Get-AzApplicationGateway -Name "MyAppGW" -ResourceGroupName "MyRG"
Set-AzApplicationGatewayWebApplicationFirewallConfiguration -ApplicationGateway $appgw -Enabled $true -FirewallMode "Prevention" -RuleSetType "OWASP" -RuleSetVersion "3.2"
Set-AzApplicationGateway -ApplicationGateway $appgw
Valeur par défaut : Désactivé
6.5 — NSG ET FLOW LOGS
6.5.1 — NSG Flow Logs activés pour tous les NSG critiques
Niveau : 🟠
Référence CIS : CIS Azure 6.2.1
MITRE ATT&CK : T1071
Description : Activer les NSG Flow Logs pour surveiller et auditer le trafic réseau traversant les Network Security Groups.
Vérification :
- Portal > Network Watcher > NSG flow logs
- CLI: az network watcher flow-log list –location francecentral
- PowerShell: Get-AzNetworkWatcherFlowLogStatus -NetworkWatcher $nw -TargetResourceId $nsg.Id
Remédiation :
- Créer un compte de stockage pour les logs
- Activer Flow Logs sur tous les NSG critiques
- Configurer Traffic Analytics si disponible
# Activer NSG Flow Logs
$nsg = Get-AzNetworkSecurityGroup -Name "MyNSG" -ResourceGroupName "MyRG"
$storageAccount = Get-AzStorageAccount -Name "flowlogsstorage" -ResourceGroupName "MyRG"
$nw = Get-AzNetworkWatcher -ResourceGroupName "NetworkWatcherRG" -Name "NetworkWatcher_francecentral"
Set-AzNetworkWatcherConfigFlowLog -NetworkWatcher $nw -TargetResourceId $nsg.Id -StorageAccountId $storageAccount.Id -EnableFlowLog $true -EnableTrafficAnalytics $true
Valeur par défaut : Désactivé
6.5.2 — Règles NSG avec principe du moindre privilège
Niveau : 🔴
Référence CIS : CIS Azure 6.2.2
MITRE ATT&CK : T1071
Description : Configurer les règles NSG selon le principe du moindre privilège, bloquant tout trafic par défaut et autorisant uniquement les flux nécessaires.
Vérification :
- Portal > Network security group > Inbound/Outbound security rules
- CLI: az network nsg rule list –resource-group MyRG –nsg-name MyNSG
- PowerShell: Get-AzNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg
Remédiation :
- Auditer toutes les règles existantes
- Supprimer les règles trop permissives
- Implémenter des règles spécifiques par service
# Créer une règle NSG restrictive pour HTTPS
Add-AzNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg -Name "Allow-HTTPS-Inbound" -Protocol "Tcp" -Direction "Inbound" -Priority 1000 -SourceAddressPrefix "10.0.0.0/8" -SourcePortRange "*" -DestinationAddressPrefix "*" -DestinationPortRange "443" -Access "Allow"
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Valeur par défaut : Règles par défaut permissives
6.6 — DDOS PROTECTION
6.6.1 — DDoS Protection Standard activé
Niveau : 🔴
Référence CIS : CIS Azure 6.3.1
MITRE ATT&CK : T1498
Description : Activer DDoS Protection Standard pour protéger les adresses IP publiques contre les attaques de déni de service distribué.
Vérification :
- Portal > Virtual network > DDoS protection
- CLI: az network ddos-protection list
- PowerShell: Get-AzDdosProtectionPlan
Remédiation :
- Créer un plan de protection DDoS Standard
- Associer le plan aux réseaux virtuels
- Configurer les alertes et métriques
# Créer et activer DDoS Protection
$ddosProtectionPlan = New-AzDdosProtectionPlan -Name "MyDdosProtectionPlan" -ResourceGroupName "MyRG" -Location "France Central"
$vnet = Get-AzVirtualNetwork -Name "MyVNet" -ResourceGroupName "MyRG"
$vnet.DdosProtectionPlan = New-Object Microsoft.Azure.Commands.Network.Models.PSResourceId
$vnet.DdosProtectionPlan.Id = $ddosProtectionPlan.Id
$vnet.EnableDdosProtection = $true
Set-AzVirtualNetwork -VirtualNetwork $vnet
Valeur par défaut : Basic (gratuit)
6.6.2 — Métriques et alertes DDoS configurées
Niveau : 🟠
Référence CIS : CIS Azure 6.3.2
MITRE ATT&CK : T1498
Description : Configurer la surveillance et les alertes pour les métriques DDoS afin de détecter et répondre rapidement aux attaques.
Vérification :
- Portal > Monitor > Metrics > DDoS Protection
- CLI: az monitor metrics list –resource-type “Microsoft.Network/publicIPAddresses”
- PowerShell: Get-AzMetric -ResourceId $pip.Id -MetricName “IfUnderDDoSAttack”
Remédiation :
- Configurer des alertes sur les métriques DDoS
- Créer des règles d’action automatisées
- Intégrer avec les équipes de réponse
# Créer une alerte DDoS
$actionGroup = Get-AzActionGroup -ResourceGroupName "MyRG" -Name "SecurityTeam"
Add-AzMetricAlertRuleV2 -Name "DDoS-Attack-Alert" -ResourceGroupName "MyRG" -WindowSize "PT5M" -Frequency "PT1M" -TargetResourceId $pip.Id -MetricName "IfUnderDDoSAttack" -Operator "GreaterThan" -Threshold 0 -ActionGroupId $actionGroup.Id
Valeur par défaut : Pas d’alertes configurées
6.7 — PRIVATE ENDPOINTS ET SERVICE ENDPOINTS
6.7.1 — Private Endpoints pour tous les services PaaS critiques
Niveau : 🔴
Référence CIS : CIS Azure 6.4.1
MITRE ATT&CK : T1071.001
Description : Configurer des Private Endpoints pour tous les services PaaS critiques afin d’éliminer l’exposition à Internet public.
Vérification :
- Portal > Private Link Center > Private endpoints
- CLI: az network private-endpoint list
- PowerShell: Get-AzPrivateEndpoint
Remédiation :
- Identifier tous les services PaaS exposés publiquement
- Créer des Private Endpoints appropriés
- Configurer les zones DNS privées
# Créer un Private Endpoint pour SQL Database
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "PrivateEndpointSubnet" -VirtualNetwork $vnet
New-AzPrivateEndpoint -ResourceGroupName "MyRG" -Name "sql-pe" -Location "France Central" -Subnet $subnet -PrivateLinkServiceId "/subscriptions/{sub}/resourceGroups/MyRG/providers/Microsoft.Sql/servers/myserver" -GroupId "sqlServer"
Valeur par défaut : Accès public autorisé
6.7.2 — Service Endpoints sécurisés configurés
Niveau : 🟠
Référence CIS : CIS Azure 6.4.2
MITRE ATT&CK : T1071.001
Description : Utiliser les Service Endpoints comme alternative aux Private Endpoints pour sécuriser l’accès aux services PaaS depuis des réseaux virtuels spécifiques.
Vérification :
- Portal > Virtual network > Service endpoints
- CLI: az network vnet subnet show –vnet-name MyVNet –name MySubnet –resource-group MyRG –query “serviceEndpoints”
- PowerShell: (Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name “MySubnet”).ServiceEndpoints
Remédiation :
- Configurer des Service Endpoints sur les sous-réseaux appropriés
- Restreindre l’accès aux services depuis ces endpoints uniquement
# Configurer Service Endpoint pour Storage
$vnet = Get-AzVirtualNetwork -Name "MyVNet" -ResourceGroupName "MyRG"
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "MySubnet" -VirtualNetwork $vnet
Add-AzVirtualNetworkSubnetConfig -Name "MySubnet" -VirtualNetwork $vnet -AddressPrefix $subnet.AddressPrefix -ServiceEndpoint "Microsoft.Storage"
Set-AzVirtualNetwork -VirtualNetwork $vnet
Valeur par défaut : Pas de Service Endpoints
6.8 — NETWORK MONITORING ET ANALYTICS
6.8.1 — Connection Monitor configuré pour la surveillance réseau
Niveau : 🟠
Référence CIS : CIS Azure 6.5.1
MITRE ATT&CK : T1071
Description : Configurer Connection Monitor pour surveiller la connectivité réseau entre les ressources critiques et détecter les problèmes de performance.
Vérification :
- Portal > Network Watcher > Connection monitor
- CLI: az network watcher connection-monitor list
- PowerShell: Get-AzNetworkWatcherConnectionMonitor
Remédiation :
- Créer des Connection Monitors pour les flux critiques
- Configurer des seuils d’alertes
- Intégrer avec Log Analytics
# Créer un Connection Monitor
$nw = Get-AzNetworkWatcher -ResourceGroupName "NetworkWatcherRG" -Name "NetworkWatcher_francecentral"
New-AzNetworkWatcherConnectionMonitor -NetworkWatcher $nw -Name "WebToDatabase" -SourceResourceId $vm1.Id -DestinationResourceId $vm2.Id -DestinationPort 1433
Valeur par défaut : Non configuré
6.8.2 — Traffic Analytics activé
Niveau : 🟠
Référence CIS : CIS Azure 6.5.2
MITRE ATT&CK : T1071
Description : Activer Traffic Analytics pour analyser les patterns de trafic réseau et détecter les anomalies de communication.
Vérification :
- Portal > Network Watcher > Traffic Analytics
- CLI: az network watcher flow-log show –location francecentral –name MyFlowLog
- PowerShell: Get-AzNetworkWatcherFlowLogStatus -NetworkWatcher $nw -TargetResourceId $nsg.Id
Remédiation :
- Créer un workspace Log Analytics
- Activer Traffic Analytics sur les Flow Logs
- Configurer des requêtes personnalisées
# Activer Traffic Analytics
$workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName "MyRG" -Name "MyWorkspace"
Set-AzNetworkWatcherConfigFlowLog -NetworkWatcher $nw -TargetResourceId $nsg.Id -StorageAccountId $storageAccount.Id -EnableFlowLog $true -EnableTrafficAnalytics $true -WorkspaceResourceId $workspace.ResourceId
Valeur par défaut : Désactivé
S7 — SÉCURITÉ DES MACHINES VIRTUELLES
7.1.1 — Disk encryption activé sur toutes les VMs
Niveau : 🔴
Référence CIS : CIS Azure 7.1
MITRE ATT&CK : T1486
Description : Azure Disk Encryption doit être activé sur tous les disques des VMs pour chiffrer les données au repos.
Vérification :
- Portal > Virtual machines > Disks > Encryption
- CLI: az vm encryption show –name
Remédiation :
- Créer Key Vault avec access policies
- Activer Azure Disk Encryption
- Vérifier chiffrement OS et data disks
7.2.1 — Just-In-Time VM access configuré
Niveau : 🟠
Référence CIS : CIS Azure 7.2
MITRE ATT&CK : T1078
Description : Just-In-Time VM access doit être configuré pour limiter l’exposition RDP/SSH aux fenêtres de temps nécessaires.
Vérification :
- Portal > Security Center > Just-in-time VM access
- CLI: az security jit-policy list
Remédiation :
- Activer JIT sur VMs critiques
- Configurer ports et durées maximales
- Processus d’approbation pour accès
7.3 — CHIFFREMENT ET PROTECTION DES DISQUES
7.3.1 — Azure Disk Encryption activé sur toutes les VM
Niveau : 🔴
Référence CIS : CIS Azure 7.1.1
MITRE ATT&CK : T1486
Description : Activer Azure Disk Encryption sur toutes les machines virtuelles pour chiffrer les disques OS et de données au repos.
Vérification :
- Portal > Virtual machine > Disks > Encryption settings
- CLI: az vm encryption show –name MyVM –resource-group MyRG
- PowerShell: Get-AzVmDiskEncryptionStatus -ResourceGroupName “MyRG” -VMName “MyVM”
Remédiation :
- Créer un Azure Key Vault avec les bonnes permissions
- Activer le chiffrement sur les VM existantes
- Configurer le chiffrement par défaut pour les nouvelles VM
# Activer le chiffrement de disque
Set-AzVMDiskEncryptionExtension -ResourceGroupName "MyRG" -VMName "MyVM" -DiskEncryptionKeyVaultUrl "https://myvault.vault.azure.net/" -DiskEncryptionKeyVaultId "/subscriptions/{sub}/resourceGroups/MyRG/providers/Microsoft.KeyVault/vaults/myvault"
Valeur par défaut : Désactivé
7.3.2 — Disques managés avec chiffrement côté serveur
Niveau : 🔴
Référence CIS : CIS Azure 7.1.2
MITRE ATT&CK : T1486
Description : Utiliser des disques managés avec chiffrement côté serveur et des clés gérées par le client pour un contrôle total du chiffrement.
Vérification :
- Portal > Disks > Encryption type
- CLI: az disk show –name MyDisk –resource-group MyRG –query “encryption”
- PowerShell: (Get-AzDisk -ResourceGroupName “MyRG” -DiskName “MyDisk”).Encryption
Remédiation :
- Créer un Disk Encryption Set avec Key Vault
- Migrer vers des disques avec chiffrement CMK
- Configurer la rotation automatique des clés
# Créer un Disk Encryption Set
$keyVault = Get-AzKeyVault -VaultName "MyVault" -ResourceGroupName "MyRG"
$key = Get-AzKeyVaultKey -VaultName "MyVault" -Name "DiskEncryptionKey"
New-AzDiskEncryptionSet -ResourceGroupName "MyRG" -Name "MyDiskEncryptionSet" -Location "France Central" -KeyUrl $key.Id -SourceVaultId $keyVault.ResourceId
Valeur par défaut : Clés gérées par la plateforme
7.4 — JUST-IN-TIME ACCESS
7.4.1 — Just-In-Time VM Access configuré
Niveau : 🔴
Référence CIS : CIS Azure 7.2.1
MITRE ATT&CK : T1078.004
Description : Configurer Just-In-Time VM Access pour limiter l’exposition des ports de gestion des machines virtuelles et réduire la surface d’attaque.
Vérification :
- Portal > Security Center > Just-in-time VM access
- CLI: az security jit-policy list
- PowerShell: Get-AzJitNetworkAccessPolicy
Remédiation :
- Activer JIT Access dans Azure Security Center
- Configurer les ports et durées d’accès
- Former les utilisateurs aux procédures d’accès
# Configurer JIT pour RDP/SSH
$jitPolicy = @{
"id" = "/subscriptions/{sub}/resourceGroups/MyRG/providers/Microsoft.Compute/virtualMachines/MyVM"
"ports" = @(
@{
"number" = 22
"protocol" = "TCP"
"allowedSourceAddressPrefix" = "*"
"maxRequestAccessDuration" = "PT3H"
},
@{
"number" = 3389
"protocol" = "TCP"
"allowedSourceAddressPrefix" = "*"
"maxRequestAccessDuration" = "PT3H"
}
)
}
Set-AzJitNetworkAccessPolicy -ResourceGroupName "MyRG" -Location "France Central" -Name "MyJitPolicy" -VirtualMachine $jitPolicy
Valeur par défaut : Désactivé
7.4.2 — Bastion Host déployé pour l’accès sécurisé
Niveau : 🟠
Référence CIS : CIS Azure 7.2.2
MITRE ATT&CK : T1078.004
Description : Déployer Azure Bastion pour fournir un accès RDP/SSH sécurisé aux machines virtuelles sans exposer les adresses IP publiques.
Vérification :
- Portal > Bastion > Check deployment status
- CLI: az network bastion list –resource-group MyRG
- PowerShell: Get-AzBastion -ResourceGroupName “MyRG”
Remédiation :
- Créer un sous-réseau AzureBastionSubnet (/27 minimum)
- Déployer Azure Bastion dans le réseau virtuel
- Supprimer les IP publiques des VM
# Déployer Azure Bastion
$vnet = Get-AzVirtualNetwork -Name "MyVNet" -ResourceGroupName "MyRG"
$pip = New-AzPublicIpAddress -Name "BastionIP" -ResourceGroupName "MyRG" -Location "France Central" -AllocationMethod "Static" -Sku "Standard"
New-AzBastion -ResourceGroupName "MyRG" -Name "MyBastion" -PublicIpAddress $pip -VirtualNetwork $vnet
Valeur par défaut : Non déployé
7.5 — UPDATE MANAGEMENT ET PATCH COMPLIANCE
7.5.1 — Update Management automatisé configuré
Niveau : 🔴
Référence CIS : CIS Azure 7.3.1
MITRE ATT&CK : T1068
Description : Configurer Azure Update Management pour automatiser l’installation des mises à jour de sécurité sur toutes les machines virtuelles.
Vérification :
- Portal > Automation Account > Update Management
- CLI: az vm assess-patches –name MyVM –resource-group MyRG
- PowerShell: Get-AzAutomationSoftwareUpdateConfiguration -AutomationAccountName “MyAutomation” -ResourceGroupName “MyRG”
Remédiation :
- Créer un compte Automation avec Update Management
- Associer les VM au service Update Management
- Configurer des planifications de maintenance
# Configurer Update Management
$automationAccount = Get-AzAutomationAccount -ResourceGroupName "MyRG" -Name "MyAutomation"
New-AzAutomationSoftwareUpdateConfiguration -AutomationAccountName "MyAutomation" -ResourceGroupName "MyRG" -Name "SecurityUpdates" -OperatingSystem "Windows" -Classification @("Security", "Critical") -IncludedUpdateClassification "Security"
Valeur par défaut : Mise à jour manuelle
7.5.2 — Boot Diagnostics activé
Niveau : 🟠
Référence CIS : CIS Azure 7.3.2
MITRE ATT&CK : T1068
Description : Activer Boot Diagnostics pour surveiller le processus de démarrage des VM et diagnostiquer les problèmes de sécurité ou de performance.
Vérification :
- Portal > Virtual machine > Boot diagnostics
- CLI: az vm boot-diagnostics get-boot-log –name MyVM –resource-group MyRG
- PowerShell: (Get-AzVM -ResourceGroupName “MyRG” -Name “MyVM”).DiagnosticsProfile
Remédiation :
- Créer un compte de stockage pour les diagnostics
- Activer Boot Diagnostics sur toutes les VM
- Surveiller les logs de démarrage
# Activer Boot Diagnostics
$storageAccount = Get-AzStorageAccount -ResourceGroupName "MyRG" -Name "diagstorage"
$vm = Get-AzVM -ResourceGroupName "MyRG" -Name "MyVM"
Set-AzVMBootDiagnostic -VM $vm -Enable -ResourceGroupName "MyRG" -StorageAccountName "diagstorage"
Update-AzVM -ResourceGroupName "MyRG" -VM $vm
Valeur par défaut : Désactivé
7.6 — CONFIDENTIAL COMPUTING
7.6.1 — VM de calcul confidentiel pour données sensibles
Niveau : 🟠
Référence CIS : CIS Azure 7.4.1
MITRE ATT&CK : T1486
Description : Utiliser des VM de calcul confidentiel (DCsv2, DCsv3) pour traiter des données hautement sensibles avec chiffrement en mémoire.
Vérification :
- Portal > Virtual machine > Size (Check DC series)
- CLI: az vm show –name MyVM –resource-group MyRG –query “hardwareProfile.vmSize”
- PowerShell: (Get-AzVM -ResourceGroupName “MyRG” -Name “MyVM”).HardwareProfile.VmSize
Remédiation :
- Identifier les workloads nécessitant un calcul confidentiel
- Migrer vers des VM DC series
- Configurer l’attestation avec Azure Attestation
# Créer une VM de calcul confidentiel
New-AzVM -ResourceGroupName "MyRG" -Name "ConfidentialVM" -Location "France Central" -VirtualNetworkName "MyVNet" -SubnetName "ConfidentialSubnet" -SecurityGroupName "ConfidentialNSG" -Size "Standard_DC2s_v3" -Image "Win2019Datacenter"
Valeur par défaut : VM standard
7.6.2 — Azure Attestation configuré
Niveau : 🟠
Référence CIS : CIS Azure 7.4.2
MITRE ATT&CK : T1486
Description : Configurer Azure Attestation pour vérifier l’intégrité et l’authenticité des environnements de calcul confidentiel.
Vérification :
- Portal > Azure Attestation > Provider status
- CLI: az attestation list
- PowerShell: Get-AzAttestation
Remédiation :
- Créer un provider Azure Attestation
- Configurer les politiques d’attestation
- Intégrer avec les applications confidentielles
# Créer un provider d'attestation
New-AzAttestation -Name "MyAttestationProvider" -ResourceGroupName "MyRG" -Location "France Central"
Valeur par défaut : Non configuré
S8 — AZURE KEY VAULT
8.1.1 — Key Vault avec RBAC et soft delete
Niveau : 🔴
Référence CIS : CIS Azure 8.1
MITRE ATT&CK : T1552
Description : Key Vault doit utiliser RBAC pour l’autorisation et avoir soft delete activé avec purge protection.
Vérification :
- Portal > Key Vault > Access control (IAM)
- CLI: az keyvault show –name
–query “properties.enableSoftDelete”
Remédiation :
- Migrer vers RBAC authorization
- Activer soft delete et purge protection
- Configurer permissions granulaires
8.2.1 — Rotation automatique des clés
Niveau : 🟠
Référence CIS : CIS Azure 8.2
MITRE ATT&CK : T1552
Description : Les clés dans Key Vault doivent avoir une rotation automatique configurée selon leur criticité.
Vérification :
- Portal > Key Vault > Keys > Rotation policy
- CLI: az keyvault key rotation-policy show
Remédiation :
- Définir rotation policies par clé
- Automatisation via Logic Apps si nécessaire
- Test des processus de rotation
8.3 — POLITIQUES D’ACCÈS ET RBAC
8.3.1 — RBAC activé au lieu des politiques d’accès classiques
Niveau : 🔴
Référence CIS : CIS Azure 8.1.1
MITRE ATT&CK : T1078.004
Description : Utiliser le modèle RBAC Azure pour Key Vault au lieu des politiques d’accès classiques pour une gestion des permissions plus granulaire et auditable.
Vérification :
- Portal > Key Vault > Access policies > Permission model
- CLI: az keyvault show –name MyKeyVault –query “properties.enableRbacAuthorization”
- PowerShell: (Get-AzKeyVault -VaultName “MyKeyVault”).EnableRbacAuthorization
Remédiation :
- Migrer vers le modèle de permissions RBAC
- Assigner des rôles granulaires appropriés
- Supprimer les anciennes politiques d’accès
# Activer RBAC sur Key Vault
Update-AzKeyVault -VaultName "MyKeyVault" -EnableRbacAuthorization $true
# Assigner un rôle Key Vault Secrets Officer
New-AzRoleAssignment -SignInName "user@domain.com" -RoleDefinitionName "Key Vault Secrets Officer" -Scope "/subscriptions/{sub}/resourceGroups/MyRG/providers/Microsoft.KeyVault/vaults/MyKeyVault"
Valeur par défaut : Politiques d’accès classiques
8.3.2 — Soft Delete et Purge Protection activés
Niveau : 🔴
Référence CIS : CIS Azure 8.1.2
MITRE ATT&CK : T1485
Description : Activer Soft Delete et Purge Protection sur tous les Key Vaults pour protéger contre la suppression accidentelle ou malveillante.
Vérification :
- Portal > Key Vault > Properties > Soft-delete and Purge protection
- CLI: az keyvault show –name MyKeyVault –query “{SoftDelete:properties.enableSoftDelete, PurgeProtection:properties.enablePurgeProtection}”
- PowerShell: Get-AzKeyVault -VaultName “MyKeyVault” | Select-Object EnableSoftDelete, EnablePurgeProtection
Remédiation :
- Activer Soft Delete avec période de rétention appropriée
- Activer Purge Protection pour empêcher la suppression définitive
- Tester la récupération des objets supprimés
# Activer Soft Delete et Purge Protection
Update-AzKeyVault -VaultName "MyKeyVault" -EnableSoftDelete -EnablePurgeProtection
Valeur par défaut : Soft Delete activé, Purge Protection désactivé
8.4 — HSM ET CLÉS MATÉRIELLES
8.4.1 — HSM managé pour les clés critiques
Niveau : 🟠
Référence CIS : CIS Azure 8.2.1
MITRE ATT&CK : T1552.004
Description : Utiliser Azure Key Vault Managed HSM pour stocker les clés cryptographiques les plus critiques avec un niveau de sécurité FIPS 140-2 Level 3.
Vérification :
- Portal > Key Vault > Managed HSM instances
- CLI: az keyvault list –resource-type hsm
- PowerShell: Get-AzKeyVaultManagedHsm
Remédiation :
- Créer un Managed HSM pour les clés critiques
- Migrer les clés sensibles vers le HSM
- Configurer la sauvegarde et la récupération
# Créer un Managed HSM
New-AzKeyVaultManagedHsm -Name "MyManagedHSM" -ResourceGroupName "MyRG" -Location "France Central" -Administrator "admin@domain.com"
Valeur par défaut : Key Vault standard
8.4.2 — Clés HSM-backed pour le chiffrement d’infrastructure
Niveau : 🟠
Référence CIS : CIS Azure 8.2.2
MITRE ATT&CK : T1552.004
Description : Utiliser des clés protégées par HSM pour le chiffrement de l’infrastructure critique (disques, bases de données, stockage).
Vérification :
- Portal > Key Vault > Keys > Check key type (HSM)
- CLI: az keyvault key show –vault-name MyKeyVault –name MyKey –query “key.kty”
- PowerShell: (Get-AzKeyVaultKey -VaultName “MyKeyVault” -Name “MyKey”).Attributes.HSM
Remédiation :
- Créer des clés HSM dans Key Vault
- Configurer les services pour utiliser des clés HSM
- Documenter l’utilisation des clés HSM
# Créer une clé protégée par HSM
Add-AzKeyVaultKey -VaultName "MyKeyVault" -Name "HSMKey" -Destination HSM
Valeur par défaut : Clés logicielles
8.5 — ROTATION ET GESTION DES SECRETS
8.5.1 — Rotation automatique des secrets configurée
Niveau : 🔴
Référence CIS : CIS Azure 8.3.1
MITRE ATT&CK : T1552.001
Description : Configurer la rotation automatique des secrets et certificats dans Key Vault pour maintenir leur fraîcheur et réduire les risques de compromission.
Vérification :
- Portal > Key Vault > Secrets/Certificates > Rotation policy
- CLI: az keyvault secret show –vault-name MyKeyVault –name MySecret –query “attributes.expires”
- PowerShell: Get-AzKeyVaultSecret -VaultName “MyKeyVault” -Name “MySecret”
Remédiation :
- Définir des politiques de rotation pour tous les secrets
- Configurer des Azure Functions pour la rotation automatique
- Intégrer avec les applications pour la gestion des secrets
# Configurer une politique de rotation pour un certificat
$policy = New-AzKeyVaultCertificatePolicy -SecretContentType "application/x-pkcs12" -SubjectName "CN=mycert" -RenewAtNumberOfDaysBeforeExpiry 30
Add-AzKeyVaultCertificate -VaultName "MyKeyVault" -Name "MyCertificate" -CertificatePolicy $policy
Valeur par défaut : Rotation manuelle
8.5.2 — Intégration avec Azure DevOps pour les secrets
Niveau : 🟠
Référence CIS : CIS Azure 8.3.2
MITRE ATT&CK : T1552.001
Description : Intégrer Key Vault avec Azure DevOps pour sécuriser la gestion des secrets dans les pipelines CI/CD.
Vérification :
- Portal > Azure DevOps > Pipelines > Variable groups
- CLI: az devops configure –defaults organization=https://dev.azure.com/myorg project=myproject
- PowerShell: Vérification via REST API Azure DevOps
Remédiation :
- Créer des Service Connections vers Key Vault
- Configurer des Variable Groups liés à Key Vault
- Utiliser des Managed Identity pour l’authentification
# Assigner des permissions DevOps sur Key Vault
$spn = Get-AzADServicePrincipal -DisplayName "Azure DevOps Service Connection"
Set-AzKeyVaultAccessPolicy -VaultName "MyKeyVault" -ObjectId $spn.Id -PermissionsToSecrets get,list
Valeur par défaut : Secrets codés en dur
8.6 — SURVEILLANCE ET AUDIT
8.6.1 — Diagnostic settings configurés pour Key Vault
Niveau : 🔴
Référence CIS : CIS Azure 8.4.1
MITRE ATT&CK : T1552.004
Description : Configurer les paramètres de diagnostic pour surveiller et auditer toutes les opérations sur Key Vault.
Vérification :
- Portal > Key Vault > Diagnostic settings
- CLI: az monitor diagnostic-settings list –resource MyKeyVault
- PowerShell: Get-AzDiagnosticSetting -ResourceId $keyVaultId
Remédiation :
- Créer des paramètres de diagnostic pour Key Vault
- Envoyer les logs vers Log Analytics et Storage
- Configurer des alertes sur les opérations sensibles
# Configurer les diagnostics Key Vault
$keyVault = Get-AzKeyVault -VaultName "MyKeyVault"
$workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName "MyRG" -Name "MyWorkspace"
Set-AzDiagnosticSetting -ResourceId $keyVault.ResourceId -WorkspaceId $workspace.ResourceId -Enabled $true -Category @("AuditEvent", "AzurePolicyEvaluationDetails")
Valeur par défaut : Diagnostics désactivés
8.6.2 — Alertes configurées pour les accès Key Vault
Niveau : 🟠
Référence CIS : CIS Azure 8.4.2
MITRE ATT&CK : T1552.004
Description : Configurer des alertes pour détecter les accès anormaux ou suspects aux Key Vaults et leurs contenus.
Vérification :
- Portal > Monitor > Alerts > Alert rules for Key Vault
- CLI: az monitor metrics alert list –resource-group MyRG
- PowerShell: Get-AzMetricAlertRuleV2 | Where-Object {$_.TargetResourceType -eq “Microsoft.KeyVault/vaults”}
Remédiation :
- Créer des alertes sur les métriques Key Vault
- Configurer des alertes sur les requêtes Log Analytics
- Intégrer avec les équipes de sécurité
# Créer une alerte pour les échecs d'authentification Key Vault
$actionGroup = Get-AzActionGroup -ResourceGroupName "MyRG" -Name "SecurityAlerts"
$keyVault = Get-AzKeyVault -VaultName "MyKeyVault"
Add-AzMetricAlertRuleV2 -Name "KeyVault-AuthFailures" -ResourceGroupName "MyRG" -WindowSize "PT5M" -Frequency "PT1M" -TargetResourceId $keyVault.ResourceId -MetricName "ServiceApiResult" -Operator "GreaterThan" -Threshold 5 -ActionGroupId $actionGroup.Id
Valeur par défaut : Pas d’alertes configurées
S9 — APP SERVICE SECURITY
9.1.1 — HTTPS obligatoire et TLS 1.2 minimum
Niveau : 🔴
Référence CIS : CIS Azure 9.1
MITRE ATT&CK : T1040
Description : App Service doit forcer HTTPS avec TLS 1.2 minimum et désactiver les protocoles non sécurisés.
Vérification :
- Portal > App Service > TLS/SSL settings
- CLI: az webapp config show –name
–query “httpsOnly”
Remédiation :
- HTTPS Only : Enabled
- Minimum TLS version : 1.2
- Supprimer protocoles faibles
9.2.1 — Managed Identity pour authentification
Niveau : 🟠
Référence CIS : CIS Azure 9.2
MITRE ATT&CK : T1078.004
Description : App Service doit utiliser Managed Identity pour l’authentification aux services Azure.
Vérification :
- Portal > App Service > Identity
- CLI: az webapp identity show –name
Remédiation :
- Activer System-assigned ou User-assigned identity
- Configurer permissions aux ressources cibles
- Modifier code pour utiliser DefaultAzureCredential
9.3 — IDENTITÉS MANAGÉES ET AUTHENTIFICATION
9.3.1 — Managed Identity activée pour tous les App Services
Niveau : 🔴
Référence CIS : CIS Azure 9.1.1
MITRE ATT&CK : T1078.004
Description : Activer les identités managées (System-assigned ou User-assigned) pour tous les App Services afin d’éliminer l’utilisation de secrets codés en dur.
Vérification :
- Portal > App Service > Identity
- CLI: az webapp identity show –name MyApp –resource-group MyRG
- PowerShell: (Get-AzWebApp -ResourceGroupName “MyRG” -Name “MyApp”).Identity
Remédiation :
- Activer System-assigned Managed Identity
- Assigner les rôles nécessaires aux ressources Azure
- Modifier le code pour utiliser DefaultAzureCredential
# Activer Managed Identity pour App Service
Set-AzWebApp -ResourceGroupName "MyRG" -Name "MyApp" -AssignIdentity $true
# Assigner des permissions Key Vault
$webapp = Get-AzWebApp -ResourceGroupName "MyRG" -Name "MyApp"
New-AzRoleAssignment -ObjectId $webapp.Identity.PrincipalId -RoleDefinitionName "Key Vault Secrets User" -Scope "/subscriptions/{sub}/resourceGroups/MyRG/providers/Microsoft.KeyVault/vaults/MyKeyVault"
Valeur par défaut : Désactivé
9.3.2 — Authentication/Authorization (EasyAuth) configuré
Niveau : 🔴
Référence CIS : CIS Azure 9.1.2
MITRE ATT&CK : T1078.004
Description : Configurer l’authentification et l’autorisation intégrées d’App Service (EasyAuth) pour sécuriser l’accès aux applications.
Vérification :
- Portal > App Service > Authentication/Authorization
- CLI: az webapp auth show –name MyApp –resource-group MyRG
- PowerShell: Get-AzWebAppAuthSettings -ResourceGroupName “MyRG” -Name “MyApp”
Remédiation :
- Activer l’authentification App Service
- Configurer Azure AD comme fournisseur d’identité
- Définir les actions à effectuer avec les demandes non authentifiées
# Configurer l'authentification Azure AD
Set-AzWebAppAuthSettings -ResourceGroupName "MyRG" -Name "MyApp" -Enabled $true -DefaultProvider "AzureActiveDirectory" -UnauthenticatedClientAction "RedirectToLoginPage"
Valeur par défaut : Désactivé
9.4 — TLS ET CHIFFREMENT
9.4.1 — HTTPS Only obligatoire et TLS 1.2 minimum
Niveau : 🔴
Référence CIS : CIS Azure 9.2.1
MITRE ATT&CK : T1040
Description : Forcer HTTPS uniquement et configurer TLS 1.2 comme version minimale pour sécuriser toutes les communications avec l’App Service.
Vérification :
- Portal > App Service > TLS/SSL settings
- CLI: az webapp show –name MyApp –resource-group MyRG –query “{HttpsOnly:httpsOnly,MinTlsVersion:siteConfig.minTlsVersion}”
- PowerShell: Get-AzWebApp -ResourceGroupName “MyRG” -Name “MyApp” | Select-Object HttpsOnly, MinTlsVersion
Remédiation :
- Activer HTTPS Only dans les paramètres TLS/SSL
- Configurer la version TLS minimale à 1.2
- Tester l’accès HTTP pour vérifier la redirection
# Forcer HTTPS et TLS 1.2
Set-AzWebApp -ResourceGroupName "MyRG" -Name "MyApp" -HttpsOnly $true
$webappConfig = (Get-AzWebApp -ResourceGroupName "MyRG" -Name "MyApp").SiteConfig
$webappConfig.MinTlsVersion = "1.2"
Set-AzWebApp -ResourceGroupName "MyRG" -Name "MyApp" -SiteConfig $webappConfig
Valeur par défaut : HTTP autorisé, TLS 1.0+
9.4.2 — Certificats SSL/TLS gérés automatiquement
Niveau : 🟠
Référence CIS : CIS Azure 9.2.2
MITRE ATT&CK : T1040
Description : Utiliser des certificats SSL/TLS gérés par Azure ou App Service pour simplifier la gestion et assurer le renouvellement automatique.
Vérification :
- Portal > App Service > TLS/SSL settings > Private Key Certificates
- CLI: az webapp config ssl list –resource-group MyRG
- PowerShell: Get-AzWebAppSSLBinding -ResourceGroupName “MyRG” -WebAppName “MyApp”
Remédiation :
- Configurer un domaine personnalisé
- Créer un certificat géré App Service gratuit
- Lier le certificat au domaine
# Créer et lier un certificat géré
New-AzWebAppSSLBinding -ResourceGroupName "MyRG" -WebAppName "MyApp" -Name "www.mydomain.com" -CertificateFilePath $null -Thumbprint $null -SSLState "SniEnabled"
Valeur par défaut : Certificat par défaut uniquement
9.5 — RESTRICTIONS D’ACCÈS ET SÉCURITÉ RÉSEAU
9.5.1 — Restrictions d’accès par IP configurées
Niveau : 🔴
Référence CIS : CIS Azure 9.3.1
MITRE ATT&CK : T1071.001
Description : Configurer des restrictions d’accès par adresse IP pour limiter l’accès aux App Services depuis des sources autorisées uniquement.
Vérification :
- Portal > App Service > Networking > Access restrictions
- CLI: az webapp config access-restriction show –name MyApp –resource-group MyRG
- PowerShell: Get-AzWebAppAccessRestrictionConfig -ResourceGroupName “MyRG” -Name “MyApp”
Remédiation :
- Identifier les plages IP autorisées
- Configurer les règles de restriction d’accès
- Tester l’accès depuis différentes sources
# Configurer des restrictions d'accès IP
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "MyRG" -WebAppName "MyApp" -Name "OfficeNetwork" -IpAddress "203.0.113.0/24" -Priority 100 -Action Allow
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "MyRG" -WebAppName "MyApp" -Name "VPN" -IpAddress "10.0.0.0/8" -Priority 110 -Action Allow
Valeur par défaut : Accès ouvert
9.5.2 — Private Endpoints pour App Services Premium
Niveau : 🟠
Référence CIS : CIS Azure 9.3.2
MITRE ATT&CK : T1071.001
Description : Configurer des Private Endpoints pour les App Services critiques afin d’éliminer l’exposition Internet public.
Vérification :
- Portal > App Service > Networking > Private endpoints
- CLI: az network private-endpoint list –resource-group MyRG
- PowerShell: Get-AzPrivateEndpoint -ResourceGroupName “MyRG”
Remédiation :
- Upgrader vers un plan App Service Premium si nécessaire
- Créer un Private Endpoint dans le réseau virtuel
- Configurer la zone DNS privée
# Créer un Private Endpoint pour App Service
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "PrivateEndpointSubnet" -VirtualNetwork $vnet
New-AzPrivateEndpoint -ResourceGroupName "MyRG" -Name "appservice-pe" -Location "France Central" -Subnet $subnet -PrivateLinkServiceId "/subscriptions/{sub}/resourceGroups/MyRG/providers/Microsoft.Web/sites/MyApp" -GroupId "sites"
Valeur par défaut : Accès public
9.6 — SURVEILLANCE ET DIAGNOSTIC
9.6.1 — Application Insights intégré et configuré
Niveau : 🟠
Référence CIS : CIS Azure 9.4.1
MITRE ATT&CK : T1562.001
Description : Intégrer Application Insights pour surveiller les performances, diagnostiquer les problèmes et détecter les anomalies de sécurité.
Vérification :
- Portal > App Service > Application Insights
- CLI: az monitor app-insights component show –app MyApp –resource-group MyRG
- PowerShell: Get-AzApplicationInsights -ResourceGroupName “MyRG” -Name “MyApp-insights”
Remédiation :
- Créer une ressource Application Insights
- Connecter l’App Service à Application Insights
- Configurer des alertes personnalisées
# Créer et configurer Application Insights
New-AzApplicationInsights -ResourceGroupName "MyRG" -Name "MyApp-insights" -Location "France Central" -Kind "web"
$insights = Get-AzApplicationInsights -ResourceGroupName "MyRG" -Name "MyApp-insights"
Set-AzWebApp -ResourceGroupName "MyRG" -Name "MyApp" -AppSettings @{"APPINSIGHTS_INSTRUMENTATIONKEY" = $insights.InstrumentationKey}
Valeur par défaut : Non configuré
9.6.2 — Logs de diagnostic configurés
Niveau : 🔴
Référence CIS : CIS Azure 9.4.2
MITRE ATT&CK : T1562.001
Description : Configurer les logs de diagnostic pour capturer et analyser les événements de sécurité et de performance des App Services.
Vérification :
- Portal > App Service > Monitoring > Diagnostic settings
- CLI: az monitor diagnostic-settings list –resource MyApp
- PowerShell: Get-AzDiagnosticSetting -ResourceId $appServiceId
Remédiation :
- Activer les logs de diagnostic appropriés
- Configurer l’envoi vers Log Analytics
- Créer des requêtes de surveillance personnalisées
# Configurer les diagnostics App Service
$appService = Get-AzWebApp -ResourceGroupName "MyRG" -Name "MyApp"
$workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName "MyRG" -Name "MyWorkspace"
Set-AzDiagnosticSetting -ResourceId $appService.Id -WorkspaceId $workspace.ResourceId -Enabled $true -Category @("AppServiceHTTPLogs", "AppServiceConsoleLogs", "AppServiceAppLogs")
Valeur par défaut : Logs désactivés
S10 — AZURE KUBERNETES SERVICE (AKS)
10.1.1 — Cluster AKS privé avec Azure AD integration
Niveau : 🔴
Référence CIS : CIS Azure 10.1
MITRE ATT&CK : T1078.004
Description : Les clusters AKS doivent être privés avec intégration Azure AD pour l’authentification et RBAC Kubernetes.
Vérification :
- Portal > Kubernetes services > Networking
- CLI: az aks show –name
–query “privateCluster”
Remédiation :
- Déploiement cluster privé
- Intégration Azure AD
- Configuration RBAC Kubernetes
10.2.1 — Network policies activées
Niveau : 🟠
Référence CIS : CIS Azure 10.2
MITRE ATT&CK : T1095
Description : Les network policies doivent être activées pour contrôler la communication entre pods dans le cluster AKS.
Vérification :
- Portal > Kubernetes services > Networking > Network policy
- CLI: az aks show –name
–query “networkProfile.networkPolicy”
Remédiation :
- Activer Azure Network Policy ou Calico
- Définir network policies restrictives
- Test de connectivité inter-pods
10.3 — SÉCURITÉ DES PODS ET RBAC
10.3.1 — Azure AD RBAC intégré pour AKS
Niveau : 🔴
Référence CIS : CIS Azure 10.1.1
MITRE ATT&CK : T1078.004
Description : Intégrer Azure AD avec AKS et configurer RBAC pour contrôler l’accès aux ressources Kubernetes basé sur les identités Azure AD.
Vérification :
- Portal > AKS cluster > Access control (IAM)
- CLI: az aks show –name MyAKS –resource-group MyRG –query “aadProfile”
- PowerShell: (Get-AzAksCluster -ResourceGroupName “MyRG” -Name “MyAKS”).AadProfile
Remédiation :
- Activer l’intégration Azure AD lors de la création du cluster
- Configurer des RoleBindings et ClusterRoleBindings
- Assigner des utilisateurs/groupes aux rôles appropriés
# Créer un cluster AKS avec intégration Azure AD
New-AzAksCluster -ResourceGroupName "MyRG" -Name "MyAKS" -NodeCount 3 -EnableAadProfile -AadProfileManaged -EnableRbac
# Assigner des rôles AKS
New-AzRoleAssignment -SignInName "admin@domain.com" -RoleDefinitionName "Azure Kubernetes Service Cluster Admin Role" -Scope "/subscriptions/{sub}/resourceGroups/MyRG/providers/Microsoft.ContainerService/managedClusters/MyAKS"
Valeur par défaut : Authentification locale
10.3.2 — Pod Security Standards configurés
Niveau : 🔴
Référence CIS : CIS Azure 10.1.2
MITRE ATT&CK : T1611
Description : Implémenter les Pod Security Standards pour restreindre les capacités des pods et réduire la surface d’attaque.
Vérification :
- CLI: kubectl get podsecuritypolicy
- CLI: az aks show –name MyAKS –resource-group MyRG –query “podSecurityProfile”
- PowerShell: kubectl get namespace default -o yaml | grep -i security
Remédiation :
- Activer Pod Security Standards au niveau du namespace
- Configurer les profils de sécurité appropriés (restricted/baseline)
- Tester les déploiements avec les nouvelles politiques
# Configurer Pod Security Standards
kubectl label namespace default pod-security.kubernetes.io/enforce=restricted
kubectl label namespace default pod-security.kubernetes.io/audit=restricted
kubectl label namespace default pod-security.kubernetes.io/warn=restricted
Valeur par défaut : Politiques permissives
10.4 — NETWORK POLICIES ET SEGMENTATION
10.4.1 — Network Policies Kubernetes activées
Niveau : 🔴
Référence CIS : CIS Azure 10.2.1
MITRE ATT&CK : T1071.001
Description : Configurer des Network Policies Kubernetes pour contrôler le trafic réseau entre les pods et implémenter la segmentation.
Vérification :
- CLI: kubectl get networkpolicies –all-namespaces
- CLI: az aks show –name MyAKS –resource-group MyRG –query “networkProfile.networkPolicy”
- PowerShell: kubectl describe networkpolicy
Remédiation :
- Activer Calico ou Azure Network Policy
- Créer des NetworkPolicies par namespace
- Implémenter le principe de moindre privilège réseau
# Exemple de Network Policy restrictive
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-ingress
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
Valeur par défaut : Pas de restrictions réseau
10.4.2 — Private Cluster avec API Server privé
Niveau : 🟠
Référence CIS : CIS Azure 10.2.2
MITRE ATT&CK : T1071.001
Description : Configurer AKS comme cluster privé pour que l’API Server ne soit accessible que depuis des réseaux privés.
Vérification :
- Portal > AKS cluster > Networking > Check Private cluster
- CLI: az aks show –name MyAKS –resource-group MyRG –query “apiServerAccessProfile”
- PowerShell: (Get-AzAksCluster -ResourceGroupName “MyRG” -Name “MyAKS”).ApiServerAccessProfile
Remédiation :
- Créer un cluster AKS privé ou migrer un cluster existant
- Configurer des plages IP autorisées si nécessaire
- Utiliser Azure Bastion ou VPN pour l’accès administratif
# Créer un cluster AKS privé
New-AzAksCluster -ResourceGroupName "MyRG" -Name "MyPrivateAKS" -EnablePrivateCluster -PrivateDnsZone "System"
Valeur par défaut : API Server public
10.5 — SECRETS ET IDENTITÉS
10.5.1 — Azure Key Vault Provider for Secrets Store CSI Driver
Niveau : 🔴
Référence CIS : CIS Azure 10.3.1
MITRE ATT&CK : T1552.007
Description : Utiliser le CSI Driver Azure Key Vault pour injecter des secrets depuis Key Vault dans les pods AKS de manière sécurisée.
Vérification :
- CLI: kubectl get pods -n kube-system | grep secrets-store-csi-driver
- CLI: az aks addon list –cluster-name MyAKS –resource-group MyRG
- PowerShell: kubectl get secretproviderclass
Remédiation :
- Activer l’addon Azure Key Vault Provider
- Configurer des SecretProviderClass
- Modifier les déploiements pour utiliser les volumes CSI
# Activer le CSI driver Key Vault
az aks enable-addons --addons azure-keyvault-secrets-provider --name MyAKS --resource-group MyRG
Valeur par défaut : Secrets Kubernetes natifs
10.5.2 — Workload Identity pour les pods
Niveau : 🔴
Référence CIS : CIS Azure 10.3.2
MITRE ATT&CK : T1078.004
Description : Configurer Azure AD Workload Identity pour permettre aux pods d’authentifier avec les services Azure sans stocker de secrets.
Vérification :
- CLI: az aks show –name MyAKS –resource-group MyRG –query “oidcIssuerProfile”
- CLI: kubectl get serviceaccount -o yaml | grep azure.workload.identity
- PowerShell: Get-AzAksCluster -Name “MyAKS” -ResourceGroupName “MyRG”
Remédiation :
- Activer OIDC Issuer et Workload Identity sur AKS
- Créer des identités managées utilisateur
- Configurer la fédération d’identité
# Activer Workload Identity
az aks update --resource-group MyRG --name MyAKS --enable-oidc-issuer --enable-workload-identity
Valeur par défaut : Service Account tokens
10.6 — IMAGE SECURITY ET SCANNING
10.6.1 — Azure Defender for containers activé
Niveau : 🔴
Référence CIS : CIS Azure 10.4.1
MITRE ATT&CK : T1611
Description : Activer Azure Defender for containers pour scanner les vulnérabilités dans les images et surveiller l’activité des clusters.
Vérification :
- Portal > Security Center > Pricing & settings > Containers
- CLI: az security pricing show –name “Containers”
- PowerShell: Get-AzSecurityPricing -Name “Containers”
Remédiation :
- Activer Defender for containers dans Security Center
- Configurer les agents de surveillance
- Examiner les recommandations de sécurité
# Activer Defender for containers
Set-AzSecurityPricing -Name "Containers" -PricingTier "Standard"
Valeur par défaut : Tier gratuit
10.6.2 — Admission controllers sécurisés configurés
Niveau : 🟠
Référence CIS : CIS Azure 10.4.2
MITRE ATT&CK : T1611
Description : Configurer des admission controllers pour valider et modifier les ressources Kubernetes avant leur création selon les politiques de sécurité.
Vérification :
- CLI: kubectl get validatingadmissionwebhooks
- CLI: kubectl get mutatingadmissionwebhooks
- Portal > AKS > Policies (si Azure Policy addon activé)
Remédiation :
- Activer l’addon Azure Policy pour AKS
- Assigner des définitions de politique appropriées
- Configurer des admission controllers personnalisés si nécessaire
# Activer Azure Policy addon
az aks enable-addons --addons azure-policy --name MyAKS --resource-group MyRG
Valeur par défaut : Admission controllers de base uniquement
S11 — GOVERNANCE ET COMPLIANCE
11.1.1 — Azure Policy initiatives assignées
Niveau : 🟠
Référence CIS : CIS Azure 11.1
MITRE ATT&CK : T1562
Description : Les initiatives Azure Policy pertinentes doivent être assignées : Azure Security Benchmark, CIS, compliance frameworks.
Vérification :
- Portal > Policy > Assignments
- CLI: az policy assignment list
Remédiation :
- Assigner Azure Security Benchmark
- Assigner initiatives compliance requises
- Configurer remediation automatique
11.2.1 — Resource locks sur ressources critiques
Niveau : 🟡
Référence CIS : CIS Azure 11.2
MITRE ATT&CK : T1485
Description : Des verrous de ressources doivent être appliqués sur les ressources critiques pour prévenir la suppression accidentelle.
Vérification :
- Portal > Resources > Locks
- CLI: az lock list
Remédiation :
- Identifier ressources critiques
- Appliquer CanNotDelete locks
- Documentation des exceptions
11.3 — AZURE POLICY ET BLUEPRINTS
11.3.1 — Azure Policy configuré avec initiatives de sécurité
Niveau : 🔴
Référence CIS : CIS Azure 11.1.1
MITRE ATT&CK : T1562.001
Description : Implémenter Azure Policy avec les initiatives de sécurité intégrées pour assurer la conformité continue des ressources Azure.
Vérification :
- Portal > Policy > Compliance
- CLI: az policy assignment list –scope /subscriptions/{subscription-id}
- PowerShell: Get-AzPolicyAssignment
Remédiation :
- Assigner l’initiative “Azure Security Benchmark”
- Configurer des politiques personnalisées selon les besoins
- Surveiller la conformité et corriger les non-conformités
# Assigner Azure Security Benchmark
$subscription = Get-AzSubscription
New-AzPolicyAssignment -Name "Azure-Security-Benchmark" -DisplayName "Azure Security Benchmark Initiative" -PolicySetDefinition "/providers/Microsoft.Authorization/policySetDefinitions/1f3afdf9-d0c9-4c3d-847f-89da613e70a8" -Scope "/subscriptions/$($subscription.Id)"
Valeur par défaut : Pas de politiques assignées
11.3.2 — Azure Blueprints pour la gouvernance d’entreprise
Niveau : 🟠
Référence CIS : CIS Azure 11.1.2
MITRE ATT&CK : T1562.001
Description : Utiliser Azure Blueprints pour déployer de manière cohérente des environnements conformes avec les politiques, rôles et ressources prédéfinies.
Vérification :
- Portal > Blueprints > Blueprint definitions
- CLI: az blueprint list –management-group {mg-id}
- PowerShell: Get-AzBlueprint
Remédiation :
- Créer des définitions de blueprint pour chaque environnement
- Inclure les politiques, rôles et templates ARM nécessaires
- Assigner les blueprints aux scopes appropriés
# Créer un blueprint de sécurité
Import-AzBlueprintWithArtifact -InputPath "./security-blueprint" -ManagementGroupId "MyMG" -Name "SecurityBlueprint"
Valeur par défaut : Pas de blueprints configurés
11.4 — MANAGEMENT GROUPS ET STRUCTURE
11.4.1 — Management Groups hiérarchiques configurés
Niveau : 🔴
Référence CIS : CIS Azure 11.2.1
MITRE ATT&CK : T1078.004
Description : Structurer les abonnements Azure dans des Management Groups hiérarchiques pour appliquer des politiques et contrôles de gouvernance cohérents.
Vérification :
- Portal > Management groups
- CLI: az account management-group list
- PowerShell: Get-AzManagementGroup
Remédiation :
- Créer une hiérarchie de Management Groups appropriée
- Déplacer les abonnements dans les bons groupes
- Appliquer des politiques au niveau des Management Groups
# Créer une structure de Management Groups
New-AzManagementGroup -GroupName "Corp" -DisplayName "Corporate"
New-AzManagementGroup -GroupName "Prod" -DisplayName "Production" -ParentId "/providers/Microsoft.Management/managementGroups/Corp"
New-AzManagementGroup -GroupName "Dev" -DisplayName "Development" -ParentId "/providers/Microsoft.Management/managementGroups/Corp"
Valeur par défaut : Structure plate
11.4.2 — Resource locks sur les ressources critiques
Niveau : 🔴
Référence CIS : CIS Azure 11.2.2
MITRE ATT&CK : T1485
Description : Appliquer des verrous de ressources (Resource Locks) sur les ressources critiques pour empêcher la suppression ou modification accidentelle.
Vérification :
- Portal > Resource group > Locks
- CLI: az lock list –resource-group MyRG
- PowerShell: Get-AzResourceLock -ResourceGroupName “MyRG”
Remédiation :
- Identifier les ressources critiques nécessitant une protection
- Appliquer des verrous ReadOnly ou CanNotDelete appropriés
- Documenter les procédures de gestion des verrous
# Créer des verrous sur les ressources critiques
New-AzResourceLock -LockName "ProductionVNetLock" -LockLevel CanNotDelete -ResourceGroupName "Production-Network-RG" -ResourceName "Prod-VNet" -ResourceType "Microsoft.Network/virtualNetworks"
Valeur par défaut : Pas de verrous
11.5 — COST MANAGEMENT ET ALERTES
11.5.1 — Budgets et alertes de coûts configurés
Niveau : 🟠
Référence CIS : CIS Azure 11.3.1
MITRE ATT&CK : T1496
Description : Configurer des budgets et alertes de coûts pour surveiller les dépenses Azure et détecter les anomalies de consommation qui pourraient indiquer une compromission.
Vérification :
- Portal > Cost Management + Billing > Budgets
- CLI: az consumption budget list
- PowerShell: Get-AzConsumptionBudget
Remédiation :
- Créer des budgets par abonnement et resource group
- Configurer des alertes à différents seuils (50%, 75%, 90%)
- Intégrer les alertes avec les équipes de sécurité
# Créer un budget avec alertes
$budget = @{
Amount = 1000
TimeGrain = "Monthly"
TimePeriod = @{
StartDate = "2024-01-01T00:00:00Z"
EndDate = "2024-12-31T23:59:59Z"
}
}
New-AzConsumptionBudget -Name "Security-Budget" -Amount 1000 -Category "Cost" -TimeGrain "Monthly" -StartDate "2024-01-01" -EndDate "2024-12-31"
Valeur par défaut : Pas de budgets configurés
11.5.2 — Cost anomaly detection activé
Niveau : 🟠
Référence CIS : CIS Azure 11.3.2
MITRE ATT&CK : T1496
Description : Activer la détection d’anomalies de coûts pour identifier automatiquement les pics de consommation inhabituels qui pourraient indiquer une activité malveillante.
Vérification :
- Portal > Cost Management + Billing > Cost alerts > Anomaly detection
- CLI: az consumption budget list –subscription {sub-id}
- PowerShell: Vérification via l’interface Cost Management
Remédiation :
- Activer la détection d’anomalies dans Cost Management
- Configurer les destinataires des alertes d’anomalie
- Établir des procédures de réponse aux anomalies de coût
# Configuration via PowerShell nécessite des appels REST API
# Exemple de configuration d'alerte de coût
$alertRule = @{
name = "CostAnomalyAlert"
properties = @{
enabled = $true
threshold = @{
operator = "GreaterThan"
value = 500
}
}
}
Valeur par défaut : Désactivé
11.6 — COMPLIANCE ET AUDITING
11.6.1 — Azure Compliance Manager configuré
Niveau : 🟠
Référence CIS : CIS Azure 11.4.1
MITRE ATT&CK : T1562.001
Description : Utiliser Microsoft Compliance Manager pour évaluer et gérer la posture de conformité par rapport aux réglementations applicables.
Vérification :
- Portal > Microsoft Purview compliance portal > Compliance Manager
- Vérification des scores de conformité et des actions d’amélioration
- Évaluation des contrôles selon les frameworks applicables
Remédiation :
- Configurer les évaluations appropriées (GDPR, ISO 27001, etc.)
- Implémenter les actions d’amélioration recommandées
- Surveiller régulièrement le score de conformité
# La gestion de Compliance Manager se fait principalement via le portail
# Exemple d'activation de la surveillance de conformité
Enable-AzSecurityContact -Email "compliance@company.com" -Phone "+33123456789" -AlertAdmin -AlertNotifications
Valeur par défaut : Non configuré
11.6.2 — Retention policies pour la gouvernance des données
Niveau : 🔴
Référence CIS : CIS Azure 11.4.2
MITRE ATT&CK : T1485
Description : Configurer des politiques de rétention pour les logs, données et ressources selon les exigences légales et de conformité.
Vérification :
- Portal > Storage Account > Lifecycle management
- Portal > Log Analytics > Data retention
- CLI: az monitor log-analytics workspace show –workspace-name MyWorkspace –resource-group MyRG –query “retentionInDays”
Remédiation :
- Définir les exigences de rétention par type de données
- Configurer des politiques de cycle de vie automatiques
- Implémenter des politiques de suppression sécurisée
# Configurer la rétention dans Log Analytics
Set-AzOperationalInsightsWorkspace -ResourceGroupName "MyRG" -Name "MyWorkspace" -RetentionInDays 90
# Configurer le cycle de vie du stockage
$action = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete -daysAfterModificationGreaterThan 2555
$filter = New-AzStorageAccountManagementPolicyFilter -PrefixMatch "compliance-logs"
$rule = New-AzStorageAccountManagementPolicyRule -Name "ComplianceRetention" -Action $action -Filter $filter
Set-AzStorageAccountManagementPolicy -ResourceGroupName "MyRG" -StorageAccountName "compliancestorage" -Rule $rule
Valeur par défaut : Rétention par défaut (30 jours pour Log Analytics)
S12 — SECRETS ET CHIFFREMENT
12.1.1 — Customer Managed Keys pour services critiques
Niveau : 🟡
Référence CIS : CIS Azure 12.1
MITRE ATT&CK : T1486
Description : Les services critiques doivent utiliser Customer Managed Keys pour le chiffrement plutôt que Microsoft Managed Keys.
Vérification :
- Portal > Service > Encryption settings
- CLI: Vérification selon le service
Remédiation :
- Évaluer criticité des données
- Configurer CMK dans Key Vault
- Migration des services vers CMK
12.2.1 — Secrets rotation et lifecycle management
Niveau : 🟠
Référence CIS : CIS Azure 12.2
MITRE ATT&CK : T1552
Description : Tous les secrets doivent avoir une gestion de cycle de vie avec rotation automatique et alertes d’expiration.
Vérification :
- Portal > Key Vault > Secrets > Expiration dates
- CLI: az keyvault secret list –vault-name
–query “[].attributes.expires”
Remédiation :
- Audit des secrets sans expiration
- Définir rotation policies
- Alertes avant expiration
12.3 — CHIFFREMENT DE BOUT EN BOUT
12.3.1 — Always Encrypted pour SQL Database
Niveau : 🔴
Référence CIS : CIS Azure 12.1.1
MITRE ATT&CK : T1486
Description : Configurer Always Encrypted pour Azure SQL Database afin de chiffrer les données sensibles côté client et maintenir le contrôle des clés de chiffrement.
Vérification :
- Portal > SQL Database > Security > Always Encrypted keys
- CLI: az sql db show –name MyDB –server MyServer –resource-group MyRG –query “encryption”
- PowerShell: Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName “MyRG” -ServerName “MyServer” -DatabaseName “MyDB”
Remédiation :
- Configurer un Column Master Key dans Azure Key Vault
- Créer des Column Encryption Keys
- Chiffrer les colonnes sensibles avec SSMS ou T-SQL
# Configurer Always Encrypted via PowerShell
$keyVault = Get-AzKeyVault -VaultName "MyKeyVault"
New-AzKeyVaultKey -VaultName "MyKeyVault" -Name "AlwaysEncryptedKey" -Destination Software
# Configuration des colonnes chiffrées via SSMS ou scripts T-SQL
Valeur par défaut : Données en clair
12.3.2 — Chiffrement en transit obligatoire (TLS 1.2+)
Niveau : 🔴
Référence CIS : CIS Azure 12.1.2
MITRE ATT&CK : T1040
Description : Forcer le chiffrement TLS 1.2 ou supérieur pour toutes les communications avec les services Azure afin de protéger les données en transit.
Vérification :
- Portal > SQL Server > Security > Firewalls and virtual networks > Minimum TLS version
- CLI: az sql server show –name MyServer –resource-group MyRG –query “minimalTlsVersion”
- PowerShell: (Get-AzSqlServer -ResourceGroupName “MyRG” -ServerName “MyServer”).MinimalTlsVersion
Remédiation :
- Configurer TLS 1.2 minimum sur tous les services
- Vérifier les applications clientes pour la compatibilité TLS 1.2
- Tester les connexions après activation
# Forcer TLS 1.2 sur SQL Server
Set-AzSqlServer -ResourceGroupName "MyRG" -ServerName "MyServer" -MinimalTlsVersion "1.2"
# Pour Storage Account
Set-AzStorageAccount -ResourceGroupName "MyRG" -Name "mystorageaccount" -MinimumTlsVersion TLS1_2
Valeur par défaut : TLS 1.0+ autorisé
12.4 — GESTION DES CERTIFICATS
12.4.1 — Certificats avec renouvellement automatique
Niveau : 🔴
Référence CIS : CIS Azure 12.2.1
MITRE ATT&CK : T1552.004
Description : Configurer le renouvellement automatique des certificats SSL/TLS dans Key Vault pour éviter les expirations et maintenir la sécurité.
Vérification :
- Portal > Key Vault > Certificates > Issuance policy
- CLI: az keyvault certificate show –vault-name MyKeyVault –name MyCert –query “policy”
- PowerShell: Get-AzKeyVaultCertificatePolicy -VaultName “MyKeyVault” -Name “MyCert”
Remédiation :
- Configurer des Certificate Authorities intégrées (DigiCert, GlobalSign)
- Définir des politiques de renouvellement automatique
- Configurer des notifications avant expiration
# Configurer une politique de certificat avec renouvellement auto
$policy = New-AzKeyVaultCertificatePolicy -SecretContentType "application/x-pkcs12" -SubjectName "CN=www.mydomain.com" -IssuerName "DigiCert" -RenewAtNumberOfDaysBeforeExpiry 30 -ReuseKeyOnRenewal
Add-AzKeyVaultCertificate -VaultName "MyKeyVault" -Name "WebsiteCert" -CertificatePolicy $policy
Valeur par défaut : Renouvellement manuel
12.4.2 — Monitoring des expirations de certificats
Niveau : 🟠
Référence CIS : CIS Azure 12.2.2
MITRE ATT&CK : T1552.004
Description : Surveiller les dates d’expiration des certificats et configurer des alertes pour éviter les interruptions de service.
Vérification :
- Portal > Key Vault > Certificates > Check expiration dates
- CLI: az keyvault certificate list –vault-name MyKeyVault –query “[].{Name:name,Expires:attributes.expires}”
- PowerShell: Get-AzKeyVaultCertificate -VaultName “MyKeyVault” | Select-Object Name, Expires
Remédiation :
- Créer des requêtes Log Analytics pour surveiller les expirations
- Configurer des alertes à 90, 30 et 7 jours avant expiration
- Automatiser les notifications aux équipes responsables
# Créer une alerte pour les certificats expirant bientôt
$actionGroup = Get-AzActionGroup -ResourceGroupName "MyRG" -Name "CertificateAlerts"
# Requête KQL pour les certificats expirant dans 30 jours
$query = "KeyVaultData | where OperationName == 'CertificateNearExpiry' | where TimeGenerated > ago(1d)"
Valeur par défaut : Pas de surveillance automatique
12.5 — HARDWARE SECURITY MODULES (HSM)
12.5.1 — Dedicated HSM pour les workloads ultra-sensibles
Niveau : 🟠
Référence CIS : CIS Azure 12.3.1
MITRE ATT&CK : T1552.004
Description : Utiliser Azure Dedicated HSM pour les workloads nécessitant un contrôle exclusif du matériel cryptographique et une certification FIPS 140-2 Level 3.
Vérification :
- Portal > Azure Dedicated HSM
- CLI: az dedicated-hsm list
- PowerShell: Get-AzDedicatedHsm
Remédiation :
- Évaluer les besoins en HSM dédié vs Managed HSM
- Déployer Dedicated HSM dans un réseau virtuel
- Configurer la haute disponibilité et la sauvegarde
# Déployer un Dedicated HSM (nécessite une planification préalable)
New-AzDedicatedHsm -Name "MyDedicatedHSM" -ResourceGroupName "MyRG" -Location "France Central" -NetworkProfile $networkProfile
Valeur par défaut : Non disponible
12.5.2 — Key Management interoperable avec PKCS#11
Niveau : 🟠
Référence CIS : CIS Azure 12.3.2
MITRE ATT&CK : T1552.004
Description : Configurer la gestion des clés avec support PKCS#11 pour l’interopérabilité avec les applications existantes utilisant des standards HSM.
Vérification :
- Documentation technique des HSM déployés
- Test de compatibilité PKCS#11 avec les applications
- Vérification des interfaces cryptographiques
Remédiation :
- Configurer les bibliothèques PKCS#11 appropriées
- Tester l’intégration avec les applications critiques
- Documenter les procédures d’utilisation PKCS#11
# Configuration PKCS#11 (exemple pour Linux)
# Installation des bibliothèques HSM
sudo apt-get install opensc-pkcs11
# Configuration des applications pour utiliser PKCS#11
export PKCS11_MODULE="/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so"
Valeur par défaut : APIs propriétaires uniquement
S13 — CONTAINERS ET REGISTRIES
13.1.1 — Container Registry scanning des vulnérabilités
Niveau : 🟠
Référence CIS : CIS Azure 13.1
MITRE ATT&CK : T1203
Description : Azure Container Registry doit scanner automatiquement les images pour détecter les vulnérabilités.
Vérification :
- Portal > Container Registry > Repositories > Scan results
- CLI: az acr task list –registry
Remédiation :
- Activer vulnerability scanning
- Policies de blocage images vulnérables
- Processus de remediation
13.2.1 — Container Registry access restreint
Niveau : 🟠
Référence CIS : CIS Azure 13.2
MITRE ATT&CK : T1190
Description : L’accès à Container Registry doit être restreint avec authentification appropriée et network rules.
Vérification :
- Portal > Container Registry > Access control (IAM)
- CLI: az acr show –name
–query “networkRuleSet”
Remédiation :
- RBAC avec rôles granulaires
- Network rules restrictives
- Private endpoints si requis
13.3 — AZURE CONTAINER REGISTRY SECURITY
13.3.1 — Vulnerability scanning activé sur ACR
Niveau : 🔴
Référence CIS : CIS Azure 13.1.1
MITRE ATT&CK : T1610
Description : Activer l’analyse des vulnérabilités sur Azure Container Registry pour scanner automatiquement toutes les images pusheés et détecter les failles de sécurité.
Vérification :
- Portal > Container Registry > Security > Vulnerability scanning
- CLI: az acr task list –registry MyACR –resource-group MyRG
- PowerShell: Get-AzContainerRegistryReplication -RegistryName “MyACR” -ResourceGroupName “MyRG”
Remédiation :
- Upgrader vers ACR Premium tier si nécessaire
- Activer Defender for container registries
- Configurer des politiques de quarantaine pour les images vulnérables
# Activer Defender for container registries
Set-AzSecurityPricing -Name "ContainerRegistry" -PricingTier "Standard"
# Créer un ACR Premium avec scanning
New-AzContainerRegistry -ResourceGroupName "MyRG" -Name "MyACR" -Sku "Premium" -Location "France Central" -EnableAdminUser $false
Valeur par défaut : Scanning désactivé
13.3.2 — Content Trust et signature d’images
Niveau : 🔴
Référence CIS : CIS Azure 13.1.2
MITRE ATT&CK : T1195.001
Description : Activer Docker Content Trust et la signature d’images pour garantir l’intégrité et l’authenticité des images de conteneurs.
Vérification :
- Portal > Container Registry > Policies > Content trust
- CLI: az acr config content-trust show –registry MyACR
- PowerShell: Vérification via Azure REST API
Remédiation :
- Activer Content Trust sur ACR Premium
- Configurer Notary pour la signature d’images
- Forcer la vérification de signature dans les clusters
# Activer Content Trust (nécessite ACR Premium)
az acr config content-trust update --registry MyACR --status enabled
Valeur par défaut : Content Trust désactivé
13.4 — POLITIQUES DE SÉCURITÉ CONTAINERS
13.4.1 — Quarantine policy pour les images vulnérables
Niveau : 🔴
Référence CIS : CIS Azure 13.2.1
MITRE ATT&CK : T1610
Description : Configurer des politiques de quarantaine automatique pour bloquer le déploiement d’images contenant des vulnérabilités critiques ou élevées.
Vérification :
- Portal > Container Registry > Policies > Quarantine policy
- CLI: az acr config quarantine show –registry MyACR
- PowerShell: Vérification via les métriques de sécurité ACR
Remédiation :
- Configurer la quarantaine automatique basée sur les scores CVSS
- Définir des exceptions pour les images approuvées
- Intégrer avec les pipelines CI/CD pour bloquer les déploiements
# Activer la quarantaine pour les vulnérabilités élevées
az acr config quarantine update --registry MyACR --status enabled --policy-type "VulnerabilityBasedPolicy"
Valeur par défaut : Pas de quarantaine automatique
13.4.2 — Image scanning automatisé dans les pipelines
Niveau : 🔴
Référence CIS : CIS Azure 13.2.2
MITRE ATT&CK : T1610
Description : Intégrer l’analyse de sécurité des images dans les pipelines CI/CD pour détecter les vulnérabilités avant le déploiement en production.
Vérification :
- Portal > Azure DevOps > Pipelines > Security tasks
- Vérification des tasks de scanning dans les YAML pipelines
- Review des rapports de sécurité des builds
Remédiation :
- Ajouter des tasks de scanning dans les pipelines Azure DevOps
- Configurer des gates de sécurité pour bloquer les déploiements
- Intégrer avec des outils comme Twistlock, Aqua ou Defender for DevOps
# Exemple de pipeline Azure DevOps avec scanning
- task: ContainerScan@0
displayName: 'Scan container images'
inputs:
containerRegistry: 'MyACR'
repository: 'myapp'
tag: '$(Build.BuildId)'
scanType: 'Basic'
Valeur par défaut : Pas de scanning automatisé
13.5 — RUNTIME SECURITY
13.5.1 — Runtime protection avec Defender for Containers
Niveau : 🔴
Référence CIS : CIS Azure 13.3.1
MITRE ATT&CK : T1611
Description : Activer Defender for Containers pour la protection runtime et la détection de menaces dans les environnements de conteneurs.
Vérification :
- Portal > Security Center > Pricing & settings > Containers plan
- CLI: az security pricing show –name “Containers”
- PowerShell: Get-AzSecurityPricing -Name “Containers”
Remédiation :
- Activer Defender for Containers sur tous les clusters
- Configurer les agents de surveillance sur les nœuds
- Surveiller les alertes de sécurité runtime
# Activer Defender for Containers
Set-AzSecurityPricing -Name "Containers" -PricingTier "Standard"
# Installer l'extension Defender sur AKS
az k8s-extension create --name microsoft.azuresecuritypack.defender --cluster-type managedClusters --cluster-name MyAKS --resource-group MyRG --extension-type microsoft.azuresecuritypack.defender
Valeur par défaut : Protection de base uniquement
13.5.2 — Network segmentation pour containers
Niveau : 🟠
Référence CIS : CIS Azure 13.3.2
MITRE ATT&CK : T1071.001
Description : Implémenter la segmentation réseau pour isoler les workloads de conteneurs et limiter la propagation latérale en cas de compromission.
Vérification :
- CLI: kubectl get networkpolicies –all-namespaces
- Portal > AKS > Networking > Network policy
- Vérification des règles de micro-segmentation
Remédiation :
- Créer des Network Policies Kubernetes granulaires
- Implémenter la segmentation par namespace et labels
- Utiliser des solutions comme Calico ou Azure Network Policy
# Exemple de Network Policy pour isolation
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-ingress
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
egress:
- to: []
ports:
- protocol: TCP
port: 443
- protocol: TCP
port: 53
- protocol: UDP
port: 53
Valeur par défaut : Communication ouverte entre pods
13.6 — COMPLIANCE ET GOUVERNANCE
13.6.1 — Image compliance policies avec OPA Gatekeeper
Niveau : 🟠
Référence CIS : CIS Azure 13.4.1
MITRE ATT&CK : T1610
Description : Utiliser OPA Gatekeeper pour implémenter des politiques de conformité des images et empêcher le déploiement d’images non conformes.
Vérification :
- CLI: kubectl get constraint
- CLI: kubectl get constrainttemplate
- Portal > AKS > Policies (si Azure Policy est activé)
Remédiation :
- Installer OPA Gatekeeper sur le cluster AKS
- Créer des ConstraintTemplates pour la validation d’images
- Appliquer des Constraints pour enforcer les politiques
# Exemple de constraint pour images approuvées uniquement
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: allowedrepos
spec:
crd:
spec:
names:
kind: AllowedRepos
validation:
type: object
properties:
repos:
type: array
items:
type: string
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package allowedrepos
violation[{"msg": msg}] {
container := input.review.object.spec.containers[_]
not starts_with(container.image, input.parameters.repos[_])
msg := "Image not from approved registry"
}
Valeur par défaut : Pas de validation d’images automatisée
S14 — BACKUP ET DISASTER RECOVERY
14.1.1 — Azure Backup configuré pour ressources critiques
Niveau : 🟠
Référence CIS : CIS Azure 14.1
MITRE ATT&CK : T1485
Description : Azure Backup doit être configuré pour toutes les ressources critiques avec politique de rétention appropriée.
Vérification :
- Portal > Recovery Services vault > Backup items
- CLI: az backup item list –vault-name
Remédiation :
- Identifier ressources à sauvegarder
- Configurer backup policies
- Test de restauration réguliers
14.2.1 — Site Recovery pour continuité d’activité
Niveau : 🟡
Référence CIS : CIS Azure 14.2
MITRE ATT&CK : T1485
Description : Azure Site Recovery doit être configuré pour les applications critiques nécessitant un RTO faible.
Vérification :
- Portal > Recovery Services vault > Site Recovery
- CLI: az site-recovery vault list
Remédiation :
- Évaluer besoins RTO/RPO
- Configurer réplication vers région secondaire
- Tests de failover réguliers
14.3 — AZURE BACKUP AVANCÉ
14.3.1 — Backup cross-region pour la continuité d’activité
Niveau : 🔴
Référence CIS : CIS Azure 14.1.1
MITRE ATT&CK : T1485
Description : Configurer des sauvegardes cross-region avec Azure Backup pour assurer la récupération en cas de défaillance régionale majeure.
Vérification :
- Portal > Recovery Services vault > Backup items > Check geo-replication
- CLI: az backup vault show –name MyVault –resource-group MyRG –query “properties.storageType”
- PowerShell: Get-AzRecoveryServicesVault -ResourceGroupName “MyRG” -Name “MyVault”
Remédiation :
- Configurer le stockage géo-redondant (GRS) sur les Recovery Services vaults
- Activer Cross Region Restore si disponible
- Tester la restauration depuis la région secondaire
# Configurer le stockage géo-redondant
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "MyRG" -Name "MyVault"
Set-AzRecoveryServicesVaultContext -Vault $vault
Set-AzRecoveryServicesBackupProperty -Vault $vault -BackupStorageRedundancy GeoRedundant
Valeur par défaut : Stockage localement redondant (LRS)
14.3.2 — Immutable backup pour protection ransomware
Niveau : 🔴
Référence CIS : CIS Azure 14.1.2
MITRE ATT&CK : T1486
Description : Activer les sauvegardes immuables pour protéger les données de sauvegarde contre la suppression ou modification malveillante, notamment lors d’attaques ransomware.
Vérification :
- Portal > Recovery Services vault > Properties > Security Settings > Immutability
- CLI: az backup vault backup-properties show –resource-group MyRG –vault-name MyVault
- PowerShell: Get-AzRecoveryServicesVaultProperty -VaultId $vault.ID
Remédiation :
- Activer Immutability sur le Recovery Services vault
- Configurer la durée de rétention minimale
- Tester l’impossibilité de suppression des points de récupération
# Activer l'immutabilité des sauvegardes
Set-AzRecoveryServicesVaultProperty -VaultId $vault.ID -ImmutabilityState "Unlocked"
# Verrouiller après configuration
Set-AzRecoveryServicesVaultProperty -VaultId $vault.ID -ImmutabilityState "Locked"
Valeur par défaut : Sauvegardes modifiables
14.4 — DISASTER RECOVERY AUTOMATION
14.4.1 — Azure Site Recovery pour les VM critiques
Niveau : 🔴
Référence CIS : CIS Azure 14.2.1
MITRE ATT&CK : T1485
Description : Configurer Azure Site Recovery pour la réplication automatique et le basculement des machines virtuelles critiques vers une région secondaire.
Vérification :
- Portal > Recovery Services vault > Site Recovery > Replicated items
- CLI: az backup protection show –container-name MyContainer –item-name MyVM –resource-group MyRG –vault-name MyVault
- PowerShell: Get-AzRecoveryServicesAsrReplicationProtectedItem
Remédiation :
- Configurer la réplication vers une région Azure secondaire
- Créer des plans de récupération automatisés
- Effectuer des tests de basculement réguliers
# Configurer Site Recovery pour une VM
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "MyRG" -Name "MyVault"
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
$fabric = Get-AzRecoveryServicesAsrFabric -Name "AzureFabric"
$container = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $fabric
Enable-AzRecoveryServicesAsrProtection -ReplicationProtectedItem $vm -ProtectionContainer $container -Policy $policy
Valeur par défaut : Pas de réplication automatique
14.4.2 — Runbooks automatisés pour le disaster recovery
Niveau : 🟠
Référence CIS : CIS Azure 14.2.2
MITRE ATT&CK : T1485
Description : Créer des runbooks Azure Automation pour automatiser les procédures de récupération d’urgence et réduire les temps de récupération (RTO).
Vérification :
- Portal > Automation Account > Runbooks > DR procedures
- CLI: az automation runbook list –automation-account-name MyAutomation –resource-group MyRG
- PowerShell: Get-AzAutomationRunbook -AutomationAccountName “MyAutomation” -ResourceGroupName “MyRG”
Remédiation :
- Créer des runbooks pour les procédures de basculement
- Configurer des webhooks pour l’activation automatique
- Tester régulièrement les runbooks DR
# Créer un runbook de disaster recovery
Import-AzAutomationRunbook -AutomationAccountName "MyAutomation" -ResourceGroupName "MyRG" -Name "DR-Failover" -Type PowerShell -Path "./DR-Failover.ps1"
Publish-AzAutomationRunbook -AutomationAccountName "MyAutomation" -ResourceGroupName "MyRG" -Name "DR-Failover"
Valeur par défaut : Procédures manuelles
14.5 — TESTS ET VALIDATION DR
14.5.1 — Tests de disaster recovery automatisés
Niveau : 🔴
Référence CIS : CIS Azure 14.3.1
MITRE ATT&CK : T1485
Description : Implémenter des tests automatisés réguliers des procédures de disaster recovery pour valider les RTO/RPO et identifier les problèmes.
Vérification :
- Portal > Site Recovery > Recovery plans > Test failover history
- Logs des tests de basculement dans Log Analytics
- Métriques de performance des tests DR
Remédiation :
- Programmer des tests de basculement mensuels automatisés
- Créer des métriques pour mesurer RTO/RPO réels
- Documenter et corriger les écarts identifiés
# Programmer un test de basculement automatisé
$recoveryPlan = Get-AzRecoveryServicesAsrRecoveryPlan -Name "MyDRPlan"
Start-AzRecoveryServicesAsrTestFailoverJob -RecoveryPlan $recoveryPlan -Direction "PrimaryToRecovery" -NetworkId $testNetwork.Id
Valeur par défaut : Tests manuels ad-hoc
14.5.2 — Monitoring des métriques RTO/RPO
Niveau : 🟠
Référence CIS : CIS Azure 14.3.2
MITRE ATT&CK : T1485
Description : Surveiller en continu les métriques RTO (Recovery Time Objective) et RPO (Recovery Point Objective) pour s’assurer du respect des SLA de récupération.
Vérification :
- Portal > Monitor > Metrics > Site Recovery metrics
- Dashboards personnalisés pour RTO/RPO tracking
- Alertes configurées sur les déviations
Remédiation :
- Créer des dashboards Azure Monitor pour RTO/RPO
- Configurer des alertes sur les dépassements d’objectifs
- Intégrer les métriques dans les rapports de gouvernance
# Créer une alerte sur les métriques RPO
$actionGroup = Get-AzActionGroup -ResourceGroupName "MyRG" -Name "DRAlerts"
Add-AzMetricAlertRuleV2 -Name "RPO-Exceeded" -ResourceGroupName "MyRG" -WindowSize "PT15M" -Frequency "PT5M" -TargetResourceId $vault.Id -MetricName "RPO" -Operator "GreaterThan" -Threshold 240 -ActionGroupId $actionGroup.Id
Valeur par défaut : Pas de monitoring automatisé
S15 — SENTINEL ET SOC
15.1.1 — Sentinel workbooks et dashboards
Niveau : 🟡
Référence CIS : CIS Azure 15.1
MITRE ATT&CK : T1562.001
Description : Des workbooks et dashboards Sentinel doivent être configurés pour monitoring proactif de la sécurité.
Vérification :
- Portal > Sentinel > Workbooks
- Templates disponibles et customization
Remédiation :
- Déployer workbooks Microsoft
- Customisation selon environnement
- Dashboards pour différents rôles
15.2.1 — Playbooks automatisation réponse incident
Niveau : 🟡
Référence CIS : CIS Azure 15.2
MITRE ATT&CK : T1562.001
Description : Des playbooks de réponse automatique doivent être configurés pour les incidents de sécurité courants.
Vérification :
- Portal > Sentinel > Automation > Playbooks
- Logic Apps integration
Remédiation :
- Développer playbooks pour cas d’usage communs
- Intégration avec analytics rules
- Test et amélioration continue
15.3 — AZURE SENTINEL SIEM AVANCÉ
15.3.1 — Data connectors configurés pour toutes les sources
Niveau : 🔴
Référence CIS : CIS Azure 15.1.1
MITRE ATT&CK : T1562.001
Description : Configurer tous les connecteurs de données Azure Sentinel nécessaires pour ingérer les logs de sécurité de l’ensemble de l’infrastructure Azure et hybride.
Vérification :
- Portal > Sentinel > Data connectors > Status of connectors
- CLI: az sentinel data-connector list –resource-group MyRG –workspace-name MyWorkspace
- PowerShell: Get-AzSentinelDataConnector -ResourceGroupName “MyRG” -WorkspaceName “MyWorkspace”
Remédiation :
- Activer Azure Activity, Azure AD, Office 365 connectors
- Configurer les connecteurs pour Azure Security Center
- Ajouter les connecteurs tiers (AWS, GCP, Firewalls)
# Activer le connecteur Azure Activity
New-AzSentinelDataConnector -ResourceGroupName "MyRG" -WorkspaceName "MyWorkspace" -Kind "AzureActivity" -SubscriptionId $subscriptionId
# Activer Azure AD connector
New-AzSentinelDataConnector -ResourceGroupName "MyRG" -WorkspaceName "MyWorkspace" -Kind "AzureActiveDirectory" -TenantId $tenantId
Valeur par défaut : Connecteurs de base uniquement
15.3.2 — Analytics rules pour détection de menaces
Niveau : 🔴
Référence CIS : CIS Azure 15.1.2
MITRE ATT&CK : T1562.001
Description : Configurer et personnaliser les règles d’analytique Sentinel pour détecter les menaces spécifiques à l’environnement Azure.
Vérification :
- Portal > Sentinel > Analytics > Active rules count
- CLI: az sentinel alert-rule list –resource-group MyRG –workspace-name MyWorkspace
- PowerShell: Get-AzSentinelAlertRule -ResourceGroupName “MyRG” -WorkspaceName “MyWorkspace”
Remédiation :
- Activer les règles prêtes à l’emploi Microsoft
- Créer des règles personnalisées basées sur KQL
- Ajuster les seuils et fréquences selon l’environnement
# Créer une règle d'analytics personnalisée
$rule = @{
DisplayName = "Suspicious Azure AD Sign-ins"
Description = "Détecte les connexions Azure AD suspectes"
Query = "SigninLogs | where RiskLevelDuringSignIn == 'high' | where ResultType == 0"
QueryFrequency = "PT5M"
QueryPeriod = "PT6H"
TriggerOperator = "GreaterThan"
TriggerThreshold = 0
Severity = "High"
}
New-AzSentinelAlertRule -ResourceGroupName "MyRG" -WorkspaceName "MyWorkspace" @rule
Valeur par défaut : Règles de base Microsoft
15.3.3 — Playbooks automatisés pour la réponse aux incidents
Niveau : 🟠
Référence CIS : CIS Azure 15.1.3
MITRE ATT&CK : T1059
Description : Développer des playbooks Logic Apps pour automatiser la réponse aux incidents de sécurité détectés par Sentinel.
Vérification :
- Portal > Sentinel > Automation > Playbooks
- CLI: az logic workflow list –resource-group MyRG
- PowerShell: Get-AzLogicApp -ResourceGroupName “MyRG”
Remédiation :
- Créer des playbooks pour les cas d’usage courants
- Intégrer avec Azure AD pour disable des comptes compromis
- Configurer des notifications automatiques aux équipes
# Créer un playbook de désactivation automatique de compte
$workflow = @{
Name = "DisableCompromisedUser"
ResourceGroupName = "MyRG"
Location = "France Central"
Definition = $playbook_definition
}
New-AzLogicApp @workflow
Valeur par défaut : Réponse manuelle uniquement
15.4 — THREAT HUNTING AVANCÉ
15.4.1 — Hunting queries personnalisées développées
Niveau : 🟠
Référence CIS : CIS Azure 15.2.1
MITRE ATT&CK : T1057
Description : Développer et maintenir des requêtes de chasse aux menaces personnalisées basées sur les Tactics, Techniques, and Procedures (TTP) pertinents pour l’environnement.
Vérification :
- Portal > Sentinel > Hunting > Custom hunting queries
- Notebook Jupyter avec requêtes KQL avancées
- Métriques d’utilisation des hunting queries
Remédiation :
- Développer des hunting queries pour chaque technique MITRE ATT&CK
- Créer des notebooks Jupyter pour l’analyse avancée
- Programmer des hunts automatisés avec Azure Automation
// Exemple de hunting query pour persistence via scheduled tasks
let timeframe = 7d;
SecurityEvent
| where TimeGenerated >= ago(timeframe)
| where EventID == 4698 // Scheduled task created
| where Process =~ "schtasks.exe"
| extend TaskName = extract(@'TaskName:\s*([^
]+)', 1, CommandLine)
| where TaskName !~ "Microsoft"
| summarize count() by Computer, Account, TaskName, CommandLine
| where count_ > 1
Valeur par défaut : Hunting queries Microsoft de base
15.4.2 — Threat intelligence feeds intégrés
Niveau : 🟠
Référence CIS : CIS Azure 15.2.2
MITRE ATT&CK : T1590
Description : Intégrer des flux de threat intelligence externes et internes dans Sentinel pour enrichir les détections et le contexte des incidents.
Vérification :
- Portal > Sentinel > Threat intelligence > Indicators
- API calls pour vérifier l’ingestion des IOCs
- Métriques d’enrichissement des alertes
Remédiation :
- Configurer des connecteurs vers des fournisseurs TI (Microsoft TI, ThreatConnect)
- Développer des connecteurs personnalisés pour sources internes
- Créer des règles d’analytics utilisant les IOCs
# Importer des IOCs via PowerShell
$indicators = @(
@{
Pattern = "malicious-domain.com"
PatternType = "domain-name"
Source = "Internal Research"
ThreatType = "malicious-activity"
Confidence = 85
}
)
Import-AzSentinelThreatIntelligence -ResourceGroupName "MyRG" -WorkspaceName "MyWorkspace" -Indicators $indicators
Valeur par défaut : Microsoft TI uniquement
15.5 — SOC OPERATIONS
15.5.1 — Incident response workflows standardisés
Niveau : 🔴
Référence CIS : CIS Azure 15.3.1
MITRE ATT&CK : T1059
Description : Établir des workflows d’incident response standardisés intégrés dans Sentinel pour assurer une réponse cohérente et efficace aux menaces.
Vérification :
- Portal > Sentinel > Incidents > Response templates
- Documentation des procédures d’incident response
- Métriques de temps de réponse (MTTR)
Remédiation :
- Créer des templates d’incident par type de menace
- Définir des niveaux d’escalation automatiques
- Intégrer avec les systèmes de ticketing (ServiceNow, JIRA)
{
"incident_template": {
"severity": "High",
"title": "Compromised Account Detected",
"description": "Automated response for compromised user account",
"tasks": [
{
"name": "Disable user account",
"automation": "playbook:disable-user"
},
{
"name": "Reset user credentials",
"automation": "manual"
}
]
}
}
Valeur par défaut : Incidents génériques
15.5.2 — Métriques SOC et dashboards de performance
Niveau : 🟠
Référence CIS : CIS Azure 15.3.2
MITRE ATT&CK : T1562.001
Description : Créer des dashboards et métriques pour surveiller la performance du SOC et l’efficacité des détections de sécurité.
Vérification :
- Portal > Sentinel > Workbooks > SOC performance dashboards
- Métriques MTTR, MTTD, taux de faux positifs
- Rapports de performance mensuels automatisés
Remédiation :
- Créer des workbooks Sentinel pour les métriques SOC
- Configurer des alertes sur les SLA de réponse
- Automatiser la génération de rapports de performance
// Métriques de performance SOC
SecurityIncident
| where TimeGenerated >= ago(30d)
| summarize
TotalIncidents = count(),
AvgTimeToClose = avg(datetime_diff('minute', ClosedTime, CreatedTime)),
HighSeverityIncidents = countif(Severity == "High"),
AutomatedResponse = countif(isnotempty(PlaybookRunId))
| extend
AutomationRate = AutomatedResponse * 100.0 / TotalIncidents,
HighSeverityRate = HighSeverityIncidents * 100.0 / TotalIncidents
Valeur par défaut : Métriques de base uniquement
S16 — SÉCURITÉ API
16.1.1 — API Management avec authentification forte
Niveau : 🟠
Référence CIS : CIS Azure 16.1
MITRE ATT&CK : T1190
Description : Azure API Management doit être configuré avec authentification forte et politiques de sécurité pour toutes les APIs.
Vérification :
- Portal > API Management > APIs > Security
- Policies de validation et authentification
Remédiation :
- OAuth 2.0 ou certificats client
- Rate limiting et throttling
- Validation input/output
16.2.1 — WAF protection pour APIs publiques
Niveau : 🟠
Référence CIS : CIS Azure 16.2
MITRE ATT&CK : T1190
Description : Web Application Firewall doit protéger les APIs publiques contre les attaques communes OWASP.
Vérification :
- Portal > Application Gateway > Web application firewall
- Frontend avec WAF rules
Remédiation :
- Déployer WAF devant APIs
- OWASP Core Rule Set
- Custom rules selon besoins
16.3 — AZURE API MANAGEMENT SECURITY
16.3.1 — API Management avec WAF et rate limiting
Niveau : 🔴
Référence CIS : CIS Azure 16.1.1
MITRE ATT&CK : T1499.004
Description : Configurer Azure API Management avec Web Application Firewall et limitations de débit pour protéger les APIs contre les attaques par déni de service et injection.
Vérification :
- Portal > API Management > Security > WAF policies
- Portal > API Management > APIs > Rate limiting policies
- CLI: az apim api policy show –service-name MyAPIService –resource-group MyRG –api-id MyAPI
Remédiation :
- Déployer APIM derrière Application Gateway avec WAF
- Configurer des politiques de rate limiting granulaires
- Implémenter l’authentification OAuth 2.0/JWT
<!-- Exemple de politique APIM avec rate limiting -->
<policies>
<inbound>
<rate-limit calls="100" renewal-period="60" />
<quota calls="1000" renewal-period="3600" />
<validate-jwt header-name="Authorization" failed-validation-httpcode="401">
<openid-config url="https://login.microsoftonline.com/{tenant}/.well-known/openid_configuration" />
</validate-jwt>
</inbound>
</policies>
Valeur par défaut : Pas de protection APIM
16.3.2 — Authentication et authorization robustes
Niveau : 🔴
Référence CIS : CIS Azure 16.1.2
MITRE ATT&CK : T1078.004
Description : Implémenter une authentification et autorisation robustes pour toutes les APIs avec OAuth 2.0, JWT, et scopes appropriés.
Vérification :
- Portal > App registrations > API permissions
- Portal > API Management > Security > OAuth 2.0
- Tests d’authentification avec différents tokens
Remédiation :
- Configurer Azure AD comme serveur d’autorisation
- Implémenter des scopes OAuth granulaires
- Valider les JWT tokens dans APIM
# Créer un app registration pour l'API
$app = New-AzADApplication -DisplayName "MySecureAPI" -ReplyUrls @("https://api.mycompany.com/oauth/callback")
New-AzADServicePrincipal -ApplicationId $app.ApplicationId
# Configurer les scopes OAuth appropriés
Valeur par défaut : Authentification basique ou API keys
16.3.3 — API monitoring et anomaly detection
Niveau : 🟠
Référence CIS : CIS Azure 16.1.3
MITRE ATT&CK : T1190
Description : Configurer la surveillance avancée des APIs avec détection d’anomalies pour identifier les patterns d’attaque et comportements suspects.
Vérification :
- Portal > API Management > Monitoring > Analytics
- Portal > Application Insights > API performance metrics
- Alertes configurées sur les anomalies d’utilisation
Remédiation :
- Intégrer APIM avec Application Insights
- Configurer des alertes sur les patterns d’attaque
- Implémenter la détection d’anomalies ML
# Configurer Application Insights pour APIM
$appInsights = New-AzApplicationInsights -ResourceGroupName "MyRG" -Name "APIM-Insights" -Location "France Central"
# Lier APIM à Application Insights
Set-AzApiManagementLogger -Context $apimContext -LoggerId "appinsights" -Name "Application Insights Logger"
Valeur par défaut : Logs de base uniquement
16.4 — API GATEWAY SECURITY
16.4.1 — Private endpoints pour APIs internes
Niveau : 🔴
Référence CIS : CIS Azure 16.2.1
MITRE ATT&CK : T1071.001
Description : Configurer des private endpoints pour les APIs internes afin d’éliminer l’exposition Internet public et sécuriser la communication interne.
Vérification :
- Portal > API Management > Network > Virtual network
- CLI: az network private-endpoint list –resource-group MyRG
- Test de connectivité depuis les réseaux internes uniquement
Remédiation :
- Déployer APIM en mode internal dans un VNet
- Créer des private endpoints pour l’accès interne
- Configurer des NSGs appropriées
# Configurer APIM en mode internal
$vnet = Get-AzVirtualNetwork -Name "MyVNet" -ResourceGroupName "MyRG"
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "APIMSubnet" -VirtualNetwork $vnet
Set-AzApiManagement -ResourceGroupName "MyRG" -Name "MyAPIM" -VirtualNetwork $subnet -VpnType "Internal"
Valeur par défaut : APIM external/public
16.4.2 — Certificate pinning et mTLS
Niveau : 🟠
Référence CIS : CIS Azure 16.2.2
MITRE ATT&CK : T1040
Description : Implémenter le certificate pinning et mutual TLS (mTLS) pour sécuriser les communications entre les clients API et les backends.
Vérification :
- Portal > API Management > Security > Client certificates
- Vérification des certificats clients configurés
- Tests de connexion mTLS
Remédiation :
- Configurer l’authentification par certificat client
- Implémenter le certificate pinning côté client
- Valider les certificats dans les politiques APIM
<!-- Politique APIM pour validation de certificat client -->
<policies>
<inbound>
<choose>
<when condition="@(context.Request.Certificate == null || !context.Request.Certificate.Verify())">
<return-response>
<set-status code="403" reason="Invalid client certificate" />
</return-response>
</when>
</choose>
</inbound>
</policies>
Valeur par défaut : TLS simple sans validation client
16.5 — OWASP API SECURITY
16.5.1 — Protection contre OWASP API Top 10
Niveau : 🔴
Référence CIS : CIS Azure 16.3.1
MITRE ATT&CK : T1190
Description : Implémenter des protections contre les 10 risques de sécurité API les plus critiques selon OWASP API Security Top 10.
Vérification :
- Tests de sécurité automatisés pour OWASP API Top 10
- Review des politiques APIM pour chaque risque
- Scans de vulnérabilités API réguliers
Remédiation :
- Configurer des politiques APIM pour chaque risque OWASP
- Implémenter la validation de schéma JSON/XML
- Configurer le logging et monitoring appropriés
<!-- Protection contre injection et data exposure -->
<policies>
<inbound>
<validate-content unspecified-content-type-action="prevent" max-size="102400" size-exceeded-action="prevent" errors-variable-name="requestBodyValidation">
<content type="application/json" validate-as="json" action="prevent" />
</validate-content>
<set-header name="X-Content-Type-Options" exists-action="override">
<value>nosniff</value>
</set-header>
</inbound>
<outbound>
<set-header name="X-Frame-Options" exists-action="override">
<value>DENY</value>
</set-header>
</outbound>
</policies>
Valeur par défaut : Protections de base uniquement
16.5.2 — API versioning et deprecation sécurisée
Niveau : 🟠
Référence CIS : CIS Azure 16.3.2
MITRE ATT&CK : T1190
Description : Gérer le versioning des APIs et la dépréciation sécurisée des anciennes versions pour éviter l’exposition de vulnérabilités dans les versions obsolètes.
Vérification :
- Portal > API Management > APIs > Version management
- Inventory des versions API actives
- Politiques de dépréciation documentées
Remédiation :
- Implémenter un strategy de versioning cohérent
- Définir des timelines de dépréciation claires
- Migrer proactivement les clients vers les nouvelles versions
# Créer une nouvelle version d'API
New-AzApiManagementApiVersionSet -Context $apimContext -Id "myapi-versions" -Name "MyAPI Versions" -Scheme "Path" -PathValue "v{version}"
New-AzApiManagementApi -Context $apimContext -ApiId "myapi-v2" -Name "MyAPI v2.0" -ServiceUrl "https://backend.api.com/v2" -Path "api/v2" -ApiVersionSetId "myapi-versions" -ApiVersion "2.0"
Valeur par défaut : Pas de gestion de versions formelle
S17 — RÉPONSE AUX INCIDENTS
17.1.1 — Plan de réponse incidents documenté
Niveau : 🟡
Référence CIS : CIS Azure 17.1
MITRE ATT&CK : T1562.001
Description : Un plan de réponse aux incidents de sécurité doit être documenté avec procédures claires et contacts d’escalade.
Vérification :
- Documentation disponible et à jour
- Formation équipes sur procédures
Remédiation :
- Rédaction plan de réponse
- Définition des rôles et responsabilités
- Exercices de simulation réguliers
17.2.1 — Forensic capabilities et preservation
Niveau : 🟡
Référence CIS : CIS Azure 17.2
MITRE ATT&CK : T1562.001
Description : Des capacités de forensic numérique doivent être disponibles avec procédures de préservation des preuves.
Vérification :
- Outils et procédures forensic
- Chain of custody documentation
Remédiation :
- Outils forensic cloud (Azure tools)
- Procédures preservation logs
- Formation équipes techniques
S18 — CONFORMITÉ RÉGLEMENTAIRE
18.1.1 — Compliance frameworks mapping
Niveau : 🟡
Référence CIS : CIS Azure 18.1
MITRE ATT&CK : T1562
Description : Les contrôles de sécurité doivent être mappés aux frameworks de conformité applicables (RGPD, NIS2, ISO27001, etc.).
Vérification :
- Documentation mapping controls
- Compliance dashboard et reporting
Remédiation :
- Identification réglementations applicables
- Mapping des contrôles
- Reporting conformité régulier
18.2.1 — Audit trail pour compliance
Niveau : 🟡
Référence CIS : CIS Azure 18.2
MITRE ATT&CK : T1562.001
Description : Un audit trail complet doit être maintenu pour répondre aux exigences de conformité réglementaire.
Vérification :
- Logs avec timestamps et intégrité
- Rétention selon exigences légales
Remédiation :
- Centralisation logs dans SIEM
- Protection intégrité (signatures)
- Rétention selon réglementations
RÉCAPITULATIFS SECTIONS S6-S18
| Section | Total contrôles | 🔴 Critique | 🟠 Élevé | 🟡 Moyen | 🟢 Faible |
|---|---|---|---|---|---|
| S6 - Réseau | 15 | 3 | 8 | 4 | 0 |
| S7 - VMs | 12 | 2 | 6 | 4 | 0 |
| S8 - Key Vault | 8 | 2 | 4 | 2 | 0 |
| S9 - App Service | 8 | 2 | 4 | 2 | 0 |
| S10 - AKS | 8 | 2 | 4 | 2 | 0 |
| S11 - Governance | 8 | 0 | 4 | 4 | 0 |
| S12 - Secrets | 6 | 0 | 3 | 3 | 0 |
| S13 - Containers | 6 | 0 | 4 | 2 | 0 |
| S14 - Backup | 6 | 0 | 3 | 3 | 0 |
| S15 - Sentinel | 6 | 0 | 2 | 4 | 0 |
| S16 - API Security | 6 | 0 | 4 | 2 | 0 |
| S17 - Incident Response | 6 | 0 | 2 | 4 | 0 |
| S18 - Compliance | 6 | 0 | 2 | 4 | 0 |
RÉCAPITULATIF GLOBAL
SYNTHÈSE PAR CRITICITÉ
| Niveau Criticité | Nombre de contrôles | Pourcentage | Action requise |
|---|---|---|---|
| 🔴 Critique | 28 | 10.0% | Correction immédiate |
| 🟠 Élevé | 118 | 42.1% | Correction sous 30 jours |
| 🟡 Moyen | 124 | 44.3% | Correction sous 90 jours |
| 🟢 Faible | 10 | 3.6% | Selon planification |
| TOTAL | 280 | 100% |
SYNTHÈSE PAR SECTION
| Section | Contrôles | Score /100 | Statut | Priorité |
|---|---|---|---|---|
| S1 - IAM | 23 | ___% | 🔴🟠🟡🟢 | Critique |
| S2 - Defender for Cloud | 16 | ___% | 🔴🟠🟡🟢 | Critique |
| S3 - Storage | 16 | ___% | 🔴🟠🟡🟢 | Élevé |
| S4 - Databases | 18 | ___% | ��🟠🟡🟢 | Élevé |
| S5 - Logging | 19 | ___% | 🔴🟠🟡🟢 | Élevé |
| S6 - Network | 15 | ___% | 🔴🟠🟡🟢 | Élevé |
| S7 - VMs | 12 | ___% | 🔴🟠🟡🟢 | Moyen |
| S8 - Key Vault | 8 | ___% | 🔴🟠🟡🟢 | Élevé |
| S9 - App Service | 8 | ___% | 🔴🟠🟡🟢 | Moyen |
| S10 - AKS | 8 | ___% | 🔴🟠🟡🟢 | Moyen |
| S11 - Governance | 8 | ___% | 🔴🟠🟡🟢 | Moyen |
| S12 - Secrets | 6 | ___% | 🔴🟠🟡🟢 | Moyen |
| S13 - Containers | 6 | ___% | 🔴🟠🟡🟢 | Moyen |
| S14 - Backup | 6 | ___% | 🔴🟠🟡🟢 | Moyen |
| S15 - Sentinel | 6 | ___% | 🔴🟠🟡🟢 | Moyen |
| S16 - API Security | 6 | ___% | 🔴🟠🟡🟢 | Moyen |
| S17 - Incident Response | 6 | ___% | 🔴🟠🟡🟢 | Faible |
| S18 - Compliance | 6 | ___% | 🔴🟠🟡🟢 | Faible |
RÉSUMÉ EXÉCUTIF
NIVEAU DE MATURITÉ SÉCURITÉ AZURE
Score global : /280 (%)
| Niveau | Seuil | Statut | Description |
|---|---|---|---|
| 🔴 Initial | < 40% | ☐ | Sécurité de base non maîtrisée |
| 🟠 Reproductible | 40-60% | ☐ | Processus sécurité partiels |
| 🟡 Défini | 60-80% | ☐ | Bonnes pratiques largement appliquées |
| 🟢 Optimisé | > 80% | ☐ | Excellence en sécurité cloud |
TOP 3 DES RISQUES IDENTIFIÉS
1. 🔴 RISQUE CRITIQUE - [À compléter]
Impact : Très élevé | Probabilité : Élevée Description : [Synthèse des vulnérabilités critiques identifiées] Recommandation : Correction immédiate prioritaire
2. 🟠 RISQUE ÉLEVÉ - [À compléter]
Impact : Élevé | Probabilité : Moyenne Description : [Synthèse des vulnérabilités importantes] Recommandation : Plan de remédiation 30 jours
3. 🟡 RISQUE MOYEN - [À compléter]
Impact : Moyen | Probabilité : Élevée
Description : [Synthèse des améliorations nécessaires]
Recommandation : Intégration roadmap sécurité
FEUILLE DE ROUTE RECOMMANDÉE
Phase 1 (0-30 jours) - Sécurisation d’urgence
- Correction des 28 contrôles critiques 🔴
- Activation MFA sur tous comptes privilégiés
- Activation Defender for Cloud
- Configuration Activity Log centralisé
- Mise en place break-glass accounts
Phase 2 (30-90 jours) - Renforcement sécurité
- Correction des 118 contrôles élevés 🟠
- Implémentation Conditional Access
- Configuration PIM (Privileged Identity Management)
- Déploiement Azure Sentinel ou SIEM
- Chiffrement avancé des données sensibles
Phase 3 (90-180 jours) - Optimisation et gouvernance
- Correction des 124 contrôles moyens 🟡
- Azure Policy et gouvernance avancée
- Automatisation réponse aux incidents
- Formation équipes sécurité
- Audit et certification compliance
MAPPING MULTI-FRAMEWORKS
CORRESPONDANCES NIST 800-53 Rev5
| Famille NIST | Contrôles Azure concernés | Description |
|---|---|---|
| AC (Access Control) | S1.1-S1.9 (IAM complet) | Contrôle d’accès et authentification |
| AU (Audit) | S5.1-S5.7 (Logging) | Audit et responsabilité |
| CA (Assessment) | S2.1-S2.6 (Defender) | Évaluation et autorisation |
| CM (Configuration) | S11.1-S11.2 (Governance) | Gestion de configuration |
| CP (Contingency) | S14.1-S14.2 (Backup/DR) | Planification d’urgence |
| IA (Identification) | S1.1-S1.3 (MFA/CA) | Identification et authentification |
| IR (Incident Response) | S17.1-S17.2 | Réponse aux incidents |
| PE (Physical) | N/A (Cloud natif) | Protection physique |
| PL (Planning) | S18.1-S18.2 (Compliance) | Planification sécurité |
| PS (Personnel) | S1.6 (Guest users) | Sécurité du personnel |
| RA (Risk Assessment) | S2.2 (CSPM) | Évaluation des risques |
| SA (System Acquisition) | S11.1 (Policy) | Acquisition systèmes |
| SC (System Communications) | S6.1-S6.3, S3.3 (Réseau) | Protection communications |
| SI (System Information) | S3.1, S4.1 (Chiffrement) | Intégrité systèmes |
CORRESPONDANCES ISO 27001:2022
| Annexe A | Contrôles Azure concernés | Domaine |
|---|---|---|
| A.5 - Politiques sécurité | S11.1 (Azure Policy) | Gouvernance |
| A.6 - Organisation sécurité | S1.7 (Break-glass), S17.1 (IRP) | Organisation |
| A.7 - Sécurité RH | S1.6 (Guest users) | Ressources humaines |
| A.8 - Gestion actifs | S2.6 (Asset inventory) | Gestion des actifs |
| A.9 - Contrôle accès | S1.1-S1.9 (IAM complet) | Contrôle d’accès |
| A.10 - Cryptographie | S3.1, S4.1, S12.1 (Chiffrement) | Cryptographie |
| A.11 - Sécurité physique | N/A (Responsabilité Microsoft) | Physique |
| A.12 - Sécurité exploitation | S7.1-S7.2, S9.1-S9.2 | Exploitation |
| A.13 - Sécurité communications | S6.1-S6.3 (Réseau) | Communications |
| A.14 - Acquisition systèmes | S13.1 (Container scanning) | Développement |
| A.15 - Relations fournisseurs | N/A (SaaS/PaaS) | Fournisseurs |
| A.16 - Gestion incidents | S17.1-S17.2 (Incident Response) | Gestion incidents |
| A.17 - Continuité activité | S14.1-S14.2 (Backup/DR) | Continuité |
| A.18 - Conformité | S18.1-S18.2 (Compliance) | Conformité |
© 2026 AYI NEDJIMI CONSULTANTS
Document confidentiel - Distribution restreinte
Version 1.0 - Avril 2026
Ce document contient des informations confidentielles et propriétaires d’AYI NEDJIMI CONSULTANTS. Toute reproduction ou distribution non autorisée est strictement interdite.
FIN DU DOCUMENT CHECKLIST AZURE FOUNDATIONS v1.0
Toutes nos checklists sécurité
Retrouvez l'ensemble de nos 11 checklists d'audit et de durcissement professionnelles.
Voir toutes les checklists