Azure Bastion : Sécuriser l'Accès RDP/SSH sans Exposer vos VMs (et sans Exploser le Budget)
Introduction
Azure Bastion est le service PaaS de Microsoft qui élimine le besoin d'exposer vos machines virtuelles Azure via des IP publiques pour les connexions RDP (Remote Desktop) et SSH (Secure Shell). Au lieu de laisser le port 3389 ou 22 ouvert sur Internet - cible favorite des bots de scan et attaques par bruteforce - Bastion agit comme un jump host managé qui établit des sessions chiffrées TLS depuis le portail Azure ou votre client natif.
Le pitch marketing : "Sécurité renforcée sans complexité, connexion en un clic". La réalité : un service qui coûte 140€/mois en SKU Basic pour protéger des VMs que vous utilisez 2h par semaine, avec des limitations frustrantes et des alternatives moins chères mais plus risquées. Entre le bastion classique auto-hébergé (complexe, chronophage), l'IP publique directe (dangereuse), et Azure Bastion (simple mais coûteux), le choix n'est jamais évident.
Cet article décortique Azure Bastion au-delà du discours commercial : fonctionnement technique, pricing réel avec les pièges cachés, comparaison objective avec les alternatives (public IP, jump box, VPN), cas d'usage où Bastion est incontournable vs situations où c'est du gaspillage. Parce que sécuriser l'accès à vos VMs ne devrait pas nécessiter un master en architecture réseau ni vider le budget cloud.
Qu'est-ce qu'Azure Bastion et comment ça fonctionne techniquement ?
Le problème de sécurité RDP/SSH classique
Scénario traditionnel : vous créez une VM Windows/Linux sur Azure pour un environnement de dev, test ou production. Pour vous y connecter en RDP (Windows) ou SSH (Linux), deux options s'offrent :
Option A - IP publique exposée : attacher une adresse IP publique à la VM et autoriser le port 3389 (RDP) ou 22 (SSH) dans le Network Security Group (NSG). Résultat : votre VM est scannable depuis n'importe où sur Internet. Les bots automatisés détectent l'IP en quelques heures et lancent des attaques par dictionnaire. Même avec des mots de passe complexes ou des restrictions IP sources, la surface d'attaque est maximale.
Option B - Jump box manuel : déployer une VM dédiée (le bastion/jump host) dans un subnet spécifique, configurer les NSG, gérer les mises à jour de sécurité, maintenir la haute disponibilité. Sécurité améliorée mais charge opérationnelle lourde : patching OS, dimensionnement, monitoring, coût de la VM 24/7.
Architecture Azure Bastion
Azure Bastion supprime ces compromis avec une architecture PaaS fully-managed :
Déploiement dans AzureBastionSubnet : Bastion est provisionné dans un subnet dédié nommé AzureBastionSubnet
(minimum /26 soit 64 IPs) au sein de votre VNet. Ce subnet contient les instances Bastion (VMs optimisées gérées par Microsoft).
Connexion via proxy TLS : quand vous initiez une connexion RDP/SSH depuis le portail Azure, le trafic passe par HTTPS (port 443) vers le service Bastion. Bastion établit ensuite une session RDP/SSH vers la VM cible via son IP privée. Votre VM n'a jamais besoin d'IP publique. Le flux est chiffré end-to-end en TLS 1.2+.
Sans agent ni client : pas besoin d'installer un agent sur les VMs cibles ou un logiciel spécifique sur votre poste. Le RDP/SSH s'exécute directement dans le navigateur (HTML5) pour les connexions portail, ou via votre client natif RDP/SSH local (avec la SKU Standard minimum).
Permissions et RBAC : Bastion respecte les permissions Azure RBAC. Un utilisateur ne peut se connecter qu'aux VMs sur lesquelles il a les droits. Pas de risque qu'un développeur accède à des VMs de production par erreur.
Architecture zonale optionnelle : déploiement dans plusieurs Availability Zones pour la haute disponibilité (preview en octobre 2025). Si une zone tombe, les connexions basculent automatiquement.
Les 4 SKUs : Developer, Basic, Standard, Premium
Bastion Developer (GA depuis juin 2025) : SKU gratuite et lightweight. Connexion à 1 VM à la fois via le portail Azure uniquement. Pas de subnet AzureBastionSubnet requis, pas de ressource Bastion à déployer. Activation directe depuis la page "Connect" de la VM. Parfait pour les développeurs qui testent et veulent éviter les IP publiques. Limitations : pas de connexion via client natif, pas de scaling, une seule session active par utilisateur.
Bastion Basic (ancienne version standard) : déploiement dans AzureBastionSubnet, 2 instances par défaut (40 connexions SSH ou 20 RDP concurrentes). Connexion portail uniquement, pas de client natif. Prix : ~140€/mois (0,19€/heure) + transfert de données sortantes.
Bastion Standard : toutes les fonctionnalités Basic + connexion via client natif RDP/SSH (depuis votre terminal/client Windows Remote Desktop), scaling manuel jusqu'à 50 instances, upload/download de fichiers, support IP-based connection (connexion à des VMs hors VNet via peering), intégration Shareable Link. Prix : ~140€/mois base + ~70€/instance supplémentaire.
Bastion Premium (nouveau 2025) : toutes les fonctionnalités Standard + Session Recording (enregistrement vidéo des sessions RDP/SSH pour audit et compliance), Private-only Bastion (pas d'IP publique sur Bastion lui-même, 100% privé via Private Endpoint). Prix : ~200€/mois base + instances additionnelles.
Pricing réel et pièges cachés : au-delà des 140€/mois
Structure tarifaire 2025
Coût horaire SKU :
- Developer : gratuit (GA depuis juin 2025)
- Basic : 0,19€/heure = ~140€/mois
- Standard : 0,19€/heure = ~140€/mois (2 instances incluses)
- Premium : 0,27€/heure = ~200€/mois (2 instances incluses)
Instances supplémentaires (Standard/Premium) : 0,095€/heure par instance = ~70€/mois par scale unit. Chaque instance supporte 20 connexions RDP ou 40 connexions SSH concurrentes (charge moyenne).
Transfert de données sortantes : facturé comme tout trafic Azure sortant. Premiers 100 Go : ~0,08€/Go. Au-delà de 10 To : ~0,05€/Go. Si vous transférez des fichiers volumineux via RDP (copier-coller de 50 Go de données), attendez-vous à 2-4€ supplémentaires.
IP publique : Basic/Standard/Premium nécessitent une IP publique Standard SKU. Coût : ~3,50€/mois. Developer n'en a pas besoin.
Calcul de coût total mensuel réaliste
Scénario 1 - Environnement dev/test :
- 5 développeurs, 1 VM chacun, connexion 2h/jour
- Solution : Bastion Developer (gratuit)
- Coût mensuel : 0€
Scénario 2 - Production PME :
- 20 VMs, 5 administrateurs système, 10 connexions simultanées max
- Solution : Bastion Standard (2 instances de base suffisent)
- Coût mensuel : 140€ + 3,50€ IP + ~10€ transfert données = 153,50€/mois
Scénario 3 - Grande entreprise :
- 200 VMs multi-régions, 50 admins, 30 connexions simultanées pic
- Solution : Bastion Premium avec 4 instances (2 base + 2 additionnelles)
- Coût mensuel : 200€ + (2 x 70€) + 3,50€ + 50€ transfert = 393,50€/mois
Scénario 4 - Entreprise avec session recording obligatoire :
- Compliance financière ou santé nécessitant audit de toutes les sessions admin
- Solution : Bastion Premium avec Session Recording activé
- Stockage des vidéos : Azure Storage à ~0,02€/Go. 100h de sessions/mois = ~50 Go = 1€
- Coût mensuel : 200€ + 3,50€ + 1€ stockage + 15€ transfert = 219,50€/mois
Coûts cachés rarement mentionnés
Subnet dédié /26 : immobilise 64 adresses IP de votre espace d'adressage VNet. Dans des VNets fortement utilisés, ça peut forcer un redesign d'architecture.
Pas de downgrade de SKU : une fois déployé en Standard ou Premium, impossible de redescendre vers Basic sans tout supprimer et redéployer. Si vous testez Premium "pour voir", vous êtes coincé au tarif Premium.
Facturation continue : Bastion se facture à l'heure dès le déploiement, que vous l'utilisiez ou non. VM éteinte = facture Bastion qui tourne. Oubliez un Bastion dans un environnement de test → 140€/mois de gaspillage.
Limites de connexions concurrentes : Basic avec 2 instances = 20 RDP ou 40 SSH max. Si vous dépassez, les utilisateurs attendent dans une file. Pas de scaling automatique comme les VMs, uniquement manuel. Un pic non anticipé = utilisateurs bloqués.
Bande passante réseau : les connexions RDP haute résolution (multi-écrans, 4K) consomment 5-10 Mbps par session. 10 sessions simultanées = 50-100 Mbps. Vérifiez que votre VNet et peering supportent la charge.
Bastion vs Alternatives : comparaison sans langue de bois
Alternative 1 : IP publique directe sur la VM
Coût : ~3,50€/mois par VM (IP publique Standard) + quelques centimes de transfert données = 4€/mois
Avantages :
- 35x moins cher que Bastion Basic
- Latence ultra-faible (connexion directe)
- Compatible avec tous les outils RDP/SSH sans restriction
Inconvénients :
- Risque sécurité majeur : exposition Internet directe, cible des attaques automatisées en <24h
- Nécessite NSG stricte avec IP sources whitelistées (problématique pour utilisateurs nomades)
- Logs de tentatives d'intrusion permanentes (bruit de fond)
- Non-conforme à de nombreux frameworks sécurité (ISO 27001, NIST, PCI-DSS)
Verdict : acceptable pour un lab perso ou environnement dev jetable. Inacceptable pour la production ou des données sensibles. Si votre DSI découvre des VMs prod avec IP publiques + RDP ouvert, préparez-vous à une conversation désagréable.
Alternative 2 : Jump box auto-hébergé (Bastion traditionnel)
Coût : VM B2s (2 vCPU, 4 Go RAM) = ~35€/mois + IP publique 3,50€ = 38,50€/mois
Avantages :
- Contrôle total : OS custom, logs personnalisés, outils spécifiques
- Coût fixe prévisible
- Pas de limitations artificielles (connexions concurrentes, features)
Inconvénients :
- Charge opérationnelle : patching mensuel, monitoring, hardening, gestion users
- SPOF (Single Point of Failure) : si la VM tombe, plus d'accès aux autres VMs
- Setup complexe : NSG, UDR, scripts de déploiement, haute dispo nécessite 2+ VMs
- Responsabilité sécurité : logs, audits, compliance = votre problème
Verdict : viable pour équipes IT matures avec compétences infra. Contre-productif pour les équipes dev ou les PME sans dédié OPS. Le temps passé à maintenir un jump box coûte plus cher que les 140€/mois de Bastion.
Alternative 3 : VPN Point-to-Site ou Site-to-Site
Coût : VPN Gateway Basic = ~33€/mois. VPN Gateway Standard (meilleure performance) = ~135€/mois
Avantages :
- Accès réseau complet au VNet (pas seulement RDP/SSH)
- Latence excellente une fois le tunnel établi
- Compatible avec tous les protocoles (pas limité à RDP/SSH)
Inconvénients :
- Configuration initiale complexe (certificats, profils VPN clients)
- Nécessite installer un client VPN sur chaque poste utilisateur
- Split-tunneling peut exposer le réseau d'entreprise si mal configuré
- Coût similaire ou supérieur à Bastion pour VPN Gateway performant
Verdict : pertinent si vous avez déjà un VPN pour d'autres usages (accès à des services privés, bases de données). Overkill si le seul besoin est RDP/SSH occasionnel.
Alternative 4 : Azure Just-In-Time (JIT) VM Access
Coût : inclus dans Microsoft Defender for Cloud (anciennement Azure Security Center). Plan 2 : ~13€/VM/mois
Principe : ouvre temporairement les ports RDP/SSH dans le NSG uniquement quand un utilisateur autorisé en fait la demande, pour une durée limitée (1-3h). IP source lockée.
Avantages :
- Exposition minimale (ports fermés 99% du temps)
- Coût inférieur à Bastion pour <10 VMs
- Logs d'accès intégrés dans Defender
Inconvénients :
- VM conserve une IP publique (surface d'attaque réduite mais existante)
- Nécessite Defender for Cloud activé
- Latence : 30-60 secondes pour obtenir l'accès après la demande
Verdict : excellent complément ou alternative pour des environnements petits/moyens. Peut se combiner avec Bastion (JIT + connexion via Bastion = double sécurité).
Tableau comparatif synthétique
SolutionCoût/moisSécuritéComplexitéCas d'usage idéalIP publique directe4€⚠️ FaibleSimpleDev/test jetableJIT VM Access13€/VM✓ MoyenneMoyennePME <10 VMsJump box manuel38€✓ BonneÉlevéeÉquipe IT matureBastion Developer0€✓✓ BonneTrès simpleDev/test 1 VMBastion Basic140€✓✓ Très bonneSimpleProd <20 VMsVPN Gateway33-135€✓✓ Très bonneÉlevéeAccès réseau completBastion Premium200€+✓✓✓ ExcellenteSimpleCompliance/Audit
Cas d'usage où Azure Bastion est le bon choix
1. Conformité réglementaire stricte (santé, finance, gouvernement)
Contexte : secteurs HIPAA, PCI-DSS, HDS, SecNumCloud nécessitent des preuves d'accès sécurisé et auditable aux serveurs.
Pourquoi Bastion :
- Bastion Premium avec Session Recording enregistre toutes les sessions admin en vidéo
- Logs détaillés dans Azure Monitor (qui s'est connecté, à quelle VM, quand, durée)
- Pas d'IP publique exposée = conformité immédiate aux exigences "pas d'accès direct Internet"
- Certificats fournis : ISO 27001, SOC 2, répondent aux audits sans documentation supplémentaire
ROI : passer un audit de conformité sans Bastion = 5-10 jours/homme de préparation (logs manuels, jump boxes durcies, documentation). Bastion = 0 jour. L'investissement de 200€/mois s'amortit en 1 audit.
2. Entreprises sans équipe infrastructure dédiée
Contexte : startup tech, PME, équipes dev autonomes. Pas de ressources pour maintenir un jump box.
Pourquoi Bastion :
- Zero-ops : Microsoft gère patching, HA, scaling, sécurité
- Déploiement 5 minutes (vs 2h pour un jump box bien configuré)
- Pas de formation nécessaire : UX identique au portail Azure standard
ROI : temps d'un ingénieur = 60€/h. Maintenir un jump box = 3h/mois (patching, monitoring) = 180€. Bastion Basic à 140€/mois = économie + sécurité supérieure.
3. Environnements multi-régions avec VNet peering
Contexte : infrastructure distribuée, VMs dans 5 régions Azure avec peering hub-and-spoke.
Pourquoi Bastion Standard :
- IP-based connection : un seul Bastion dans le hub VNet accède aux VMs de tous les spokes peered
- Pas besoin de déployer 5 Bastion régionaux (économie de 4 x 140€ = 560€/mois)
- Gestion centralisée des accès
Architecture : Bastion dans Hub VNet (région primaire) → connexion à 200 VMs réparties sur 5 régions via peering. Économie : 1 Bastion à 140€ vs 5 Bastion à 700€ = 560€/mois d'économie.
4. Travail à distance massif (COVID-like scenarios)
Contexte : 100 employés doivent accéder aux VMs Azure depuis chez eux, IPs dynamiques imprévisibles.
Pourquoi Bastion :
- Pas de whitelist IP source à maintenir (cauchemar avec IPs dynamiques résidentielles)
- Authentification Azure AD : MFA automatique, Conditional Access policies
- Connexion HTTPS/443 : passe tous les firewalls corporate et résidentiels
Alternative VPN : nécessite installer et configurer 100 clients VPN, gérer certificats, support utilisateurs. Bastion = 0 installation client.
Limites, frustrations et situations où Bastion n'est PAS la solution
1. Le coût pour les petits environnements
Problème : 140€/mois pour protéger 2 VMs dev utilisées 5h/semaine = 700€/an pour un problème inexistant.
Réalité : pour <5 VMs non-critiques, Bastion Developer gratuit ou JIT VM Access à 13€/VM/mois sont infiniment plus pertinents.
Erreur fréquente : DSI impose "tout doit passer par Bastion" sans analyser le besoin. Résultat : 3 environnements dev avec Bastion Basic = 420€/mois de gaspillage.
2. Performance dégradée pour le graphisme intensif
Problème : RDP via Bastion compresse agressivement le flux vidéo. Applications CAO, design 3D, montage vidéo = expérience catastrophique.
Tests utilisateurs : ingénieur CAO rapportant latence de 200-400ms et pixellisation lors de rotations 3D dans SolidWorks via Bastion. En IP publique directe : latence 20ms, fluidité parfaite.
Workaround : utiliser Bastion uniquement pour l'administration, déployer une VM dédiée GPU avec IP publique + NSG ultra-restrictive pour le travail graphique.
3. Connexions multiples simultanées depuis un poste
Limitation : connexion via portail Azure = 1 session par navigateur. Pour ouvrir 5 VMs en parallèle, il faut 5 fenêtres de navigation privée ou 5 navigateurs différents.
Solution partielle : passer en client natif avec Bastion Standard, mais nécessite Azure CLI et commandes az network bastion rdp/ssh
.
Frustration utilisateur : administrateurs habitués à MultiTab RDP (connexions multiples dans un seul client) doivent changer leurs workflows.
4. IPv6 non supporté
État : octobre 2025, Bastion ne supporte que IPv4. Impossible d'assigner une IP publique IPv6 ou de se connecter à des VMs dual-stack en IPv6.
Impact : organisations migrant vers IPv6-only sont bloquées. Microsoft dit "roadmap future", pas de date annoncée.
5. Pas de support Azure Virtual Desktop (AVD)
Limitation officielle : Azure Bastion ne fonctionne pas avec AVD (anciennement Windows Virtual Desktop). Documenté dans la FAQ.
Confusion utilisateurs : "Pourquoi je peux me connecter à une VM Windows via RDP mais pas à un AVD qui est... aussi Windows RDP ?" Différence d'architecture : AVD utilise son propre gateway.
6. Transfert de fichiers limité
Via portail : impossible de transférer des fichiers (pas de drag-and-drop, pas de lecteurs partagés).
Via client natif : transfert possible mais max 100 Mo par fichier avec Standard SKU. Pour des ISO de 4 Go ou des dumps SQL de 20 Go, utilisez Azure Files/Blob Storage.
Frustration : admin qui veut juste "copier un fichier config de 50 Ko" doit passer par un client natif + commande CLI complexe au lieu d'un simple Ctrl+C / Ctrl+V.
Déploiement : guide pragmatique pour ne pas foirer
Prérequis techniques
VNet dimensionné correctement :
- Subnet /26 minimum pour AzureBastionSubnet = 64 IPs
- Recommandé /25 ou /24 si vous prévoyez du scaling (50 instances max)
- Le subnet ne peut contenir AUCUNE autre ressource (NSG Ok, UDR interdit, VMs interdites)
Nom du subnet : doit s'appeler exactement AzureBastionSubnet
(casse importante). azurebastionsubnet
ou Azure-Bastion-Subnet
= erreur de déploiement.
IP publique Standard SKU : Basic/Standard/Premium nécessitent une IP publique Standard (pas Basic). Static allocation. Developer n'en a pas besoin.
Permissions RBAC : Microsoft.Network/virtualNetworks/write
, Microsoft.Network/virtualNetworks/subnets/join/action
, Microsoft.Network/publicIPAddresses/*
. Sans ces perms, le déploiement échoue silencieusement.
Stratégie de choix de SKU
Utilisez Developer si :
- Environnement dev/test
- Connexions occasionnelles (<10h/semaine)
- Budget serré
- Une seule personne se connecte à la fois
Utilisez Basic si :
- Production PME
- <20 VMs
- Connexions via portail suffisent
- Pas besoin d'audit vidéo
Utilisez Standard si :
20 VMs ou multi-régions peered
- Connexion via client natif nécessaire
- Transfert de fichiers régulier
- Scaling prévu (>20 connexions concurrentes)
Utilisez Premium si :
- Compliance nécessitant enregistrement des sessions
- Secteur régulé (finance, santé, défense)
- Architecture Private-only (zéro IP publique)
Checklist de déploiement
- Créer le subnet : VNet > Subnets > Add > Nom =
AzureBastionSubnet
, Taille /26 - Provisionner IP publique : Standard SKU, Static, même région que le VNet
- Déployer Bastion : Azure Portal > Create Resource > Bastion > Sélectionner SKU
- Attendre 5-10 minutes : déploiement des instances managed
- Tester connexion : VM > Connect > Bastion > Enter credentials
- Configurer NSG sur AzureBastionSubnet (optionnel mais recommandé) :
- Inbound : Allow HTTPS (443) from GatewayManager tag
- Outbound : Allow RDP (3389) and SSH (22) to VirtualNetwork tag
- Activer Diagnostic Logs : Bastion > Diagnostic settings > Send to Log Analytics
Monitoring et optimisation post-déploiement
Métriques clés à surveiller :
- Sessions actives : tendance croissante = besoin de scaling
- Taux d'erreur connexion : >5% = problème config NSG ou VM
- Bande passante utilisée : anticiper les coûts transfert données
Alertes à configurer :
- Utilisation instances >80% (proche saturation)
- Échec authentification répétés (tentative d'intrusion)
- Changement configuration Bastion (audit modifications non autorisées)
Optimisation coûts :
- Supprimez Bastion dans les environnements non-utilisés (dev le week-end)
- Utilisez Azure Automation pour déployer/supprimer Bastion selon un schedule (working hours only)
- Consolidez plusieurs petits Bastion régionaux en un seul hub avec peering
Conclusion : Bastion vaut-il le coup en 2025 ?
Azure Bastion n'est ni un miracle universel ni une arnaque Microsoft. C'est un outil de sécurité spécialisé qui excelle dans des contextes précis et devient un boulet budgétaire mal utilisé.
Bastion vaut l'investissement si :
- Vous avez des exigences compliance strictes (audit, enregistrement sessions)
- Votre équipe n'a pas les compétences ou le temps pour maintenir un jump box
- Vous gérez 20+ VMs en production avec multiples administrateurs
- Vous devez supporter des utilisateurs nomades avec IPs dynamiques
- Votre DSI refuse catégoriquement les IP publiques exposées (et il a raison)
Bastion est du gaspillage si :
- Vous avez 2-3 VMs dev utilisées sporadiquement → utilisez Developer gratuit
- Vous avez déjà un VPN fonctionnel et performant → pas besoin de Bastion
- Vous gérez <10 VMs sans contraintes réglementaires → JIT VM Access suffit
- Vous avez une équipe OPS compétente et du temps → jump box manuel coûte 4x moins cher
- Vous faites du travail graphique intensif (CAO, 3D) → latence inacceptable
Erreurs fatales à éviter :
- Déployer Bastion Basic pour tester → oublier → payer 1680€/an pour rien
- Imposer Bastion partout "par principe" sans analyse coût/bénéfice
- Choisir Premium sans besoin de Session Recording (surcoût 60€/mois inutile)
- Déployer 1 Bastion par région alors qu'un seul suffit avec peering
Stratégie optimale 2025 :
- Dev/Test : Bastion Developer gratuit
- Production <20 VMs : Bastion Basic ou JIT VM Access (selon compliance)
- Production >20 VMs : Bastion Standard avec IP-based connection
- Secteurs régulés : Bastion Premium avec Session Recording
- Cas spéciaux : combiner JIT + Bastion (JIT ouvre l'accès temporaire, Bastion achemine la connexion sécurisée)
Le vrai ROI de Bastion ne se mesure pas en euros économisés sur les licences, mais en risques évités (intrusion, compromission), temps gagné (pas de maintenance jump box), et conformité facilitée (audit sans souffrance).
Si un seul incident de sécurité vous coûte 50k€ en investigation + remédiation + perte de confiance clients, les 1680€/an de Bastion Basic sont une assurance bon marché. Mais si vous sécurisez des VMs dev jetables sans données sensibles, c'est comme assurer une Twingo au tarif Ferrari.
Prochaines étapes :
- Listez toutes vos VMs exposées avec IP publiques + RDP/SSH ouvert
- Catégorisez : critique (prod, données sensibles) vs non-critique (dev, test)
- Déployez Bastion Developer gratuit sur les non-critiques pour tester
- Calculez le coût d'un incident de sécurité (ransom, downtime, juridique)
- Décidez : Bastion Basic (140€/mois) ou risque d'incident (potentiellement 50k€+)
Azure Bastion est une solution adulte pour des problèmes adultes. Si votre infrastructure Azure est un hobby, vous n'en avez pas besoin. Si c'est votre business, 140€/mois pour dormir tranquille est une évidence.