Nous allons essayer de faire le tour du service Azure Bastion.
En effet, ce “petit” service Azure est à mon gout assez peu utilisé et maitrisé alors qu’il offre de nombreux avantages. Que ce soit point de vue sécurité en limitant l’exposition des ports d’administration (SSH 22 et RDP 3389), de l’utilisation de MFA pour sécuriser les accès (Azure Portal oblige) et par ça simplicité de mise en place.
Sommaire
Depuis la mise à jour de novembre 2021, quelques changements ont eu lieux :
- AzureBastionSubnet, le masque est passé à minima de “/27” à “/26”.
- La version “Standard” a quitté la preview pour passer en GA.
Qu'est ce qu'Azure Bastion ?
Azure Bastion est un service SaaS proposé dans Azure. Ce service permet d’administrer les ressources de type IaaS via les protocoles :
- RDP 3389 pour Windows.
- SSH 22 pour Linux.
Azure Bastion est instancié au sein d’un vNet dans un subnet dédié (AzureBastionSubnet /26). L’ensemble des ressources du vNet ou des vNet routés sur le vNet hébergeant Azure Bastion sont accessibles via celui-ci.
Azure Bastion n’offre pas la possibilité d’enregistrer les sessions. Cette feature a été évoquée courant l’année 2019, mais à ce jour elle n’a pas encore vu le jour et n’est pas non plus dans la roadmap du produit.
Prix et SKU
Deux versions d’Azure Bastion sont disponibles :
- Basic
- Standard (en GA depuis novembre 2021)
Généralement la version Basic répond à bon nombre des besoins.
La différence entre les deux versions est essentiellement sur la mise à l’échelle en cas d’utilisation intensive de la solution et la configuration du port et protocoles pour manager les machines.
En version Basic, 2 hôtes sont déployés lors du déploiement d’Azure Bastion (pas plus pas moins). Microsoft estime que chaque hôte peut supporter 10 à 12 connexions. Ce qui donne environ 20 connexions maximum pour la version Basic (accès à 20 VM simultanément).
Concernant le prix du service, il faut compter environ 138€/mois pour la version Basic. Et 211€ pour la version Standard + env 100€ par hôte supplémentaire.
Portée du Bastion
Quid du filtrage du protocole via NSG ou autre solution de firewalling, Azure Bastion permet d’administrer l’ensemble des machines dans un Azure via les protocoles RDP et SSH à condition que ces machines soit soit dans le même vNet ou dans un vNet voisin qui lui est routé.
Pour faire simple, il est conseillé de déployer Azure Bastion au sein du Hub si votre architecture réseau le permet. Azure Bastion supporte depuis peu le vNet peering. Cependant il ne supporte pas les scénarios avec routage /UDR.
Dans le cas d’environnement applicatif autonome, il convient de déployer un Azure Bastion dédié par silo applicatif.
Azure Bastion doit avoir un subnet dédié nommé “AzureBastionSubnet” possédant un masque à minima en “/26”.
Dans l’exemple ci-dessous, la machine “Front01-App01” ne sera pas accessible depuis un Azure Bastion qui serait hébergé dans le Hub.
Azure Bastion supporte :
- vNet peering.
- NSG.
- JIT (peut devenir assez complexe).
Ne supporte pas :
- UDR /Routage.
- Machine non Azure.
Déploiement
Nous allons déployer Azure Bastion dans une petite maquette.
La maquette est composée d’un Hub et de 2 Spokes.
L’objectif est de déployer Azure Bastion dans le Hub pour permettre l’accès aux ressources hébergé sur le Hub et dans les Spokes.
La première étape est de créer un sous-réseau nommé “AzureBastionSubnet” dont le masque est à minima “/26”.
En cas d’utilisation de la version “Premium” d’Azure Bastion Microsoft recommande d’utiliser un masque en “/26” ou “/25” afin de permettre la mise à l’échelle de la solution (max 50 hôtes).
Se rendre dans la partie “Subnets” du vNet “vNet-Hub” et ajouter un nouveau subnet.
Renseigner la plage d’adressage du subnet. Il conviendra peut-être selon votre infrastructure de choisir une plage différente de votre “Adress Space”. Il faut impérativement que le subnet soit nommé “AzureBastionSubnet” et que le masque de sous-réseau soit à minima en “/26”.
Ensuite depuis la barre de recherches, rechercher “Azure Bastion“.
Cliquer sur “Create” pour ajouter un nouveau Bastion.
Renseigner les informations inhérentes à la “Subscription” et au “Ressources group”, le nom du Bastion et ça région Azure.
Sélectionner le SKU souhaité, ici “Basic”.
Puis les informations concernant le vNet et le subnet qui a préalablement été créé.
Azure Bastion nécessite l’ajout d’une Adresse IP Public.
Dès lors que toutes les informations ont été renseignées, cliquer sur “Review + Create”.
Après quelques minutes de déploiement, le Bastion est déployé.
Administration
En termes d’administration, deux parties attirent l’attention.
- Sessions
Cette section offre la possibilité de voir les sessions hébergées par le Bastion. Il est possible de mettre fin à l’une d’entre elles en cliquant sur “Delete” en bout de ligne.
- Configuration
Cette section offre quant à elle la possibilité de modifier le SKU du bastion de Basic à Standard. En version Standard, il est possible de modifier le nombre d’hôtes présent.
Utilisation
Pour se connecter à une ressource via Azure Bastion, deux possibilités sont disponibles. Soit depuis le menu connexion, sélectionner “Bastion”. Soit directement dans la section “Bastion” de la ressource.
Dans les 2 cas, il est nécessaire de sélectionner le bastion à utiliser dans le cas à plusieurs Bastion soient disponibles.
Machines Windows
Saisir les credentials pour se connecter à une machine de type Windows.
En cas de première connexion, il convient d’autoriser Azure à ouvrir des fenêtres pop-up.
Puis un nouvel onglet dans le navigateur s’ouvre affichant l’interface de la machine.
Machines Linux
Pour les machines de type Linux, une fonctionnalité supplémentaire et particulièrement intéressante est présente.
En plus de la connexion par mot de passe, il est possible de se connecter à l’aide d’une clef RSA.
Azure Bastion offre la possibilité d’aller lire une clef RSA certes depuis un poste de travail, mais surtout depuis un Azure KeyVault.
Conclusion
Azure Bastion est un produit simple à mettre en place que demande une très faible charge de travail. Dès lors que la portée du service est identifiée, que le subnet est créé. Le déploiement est très simple.
Le service en version “Basic” n’est pas très onéreux, il est possible pour les très petit environnement avec un nombre restreint d’administrateurs de supprimer le Bastion en fin de journée et de le regréer au besoin à partir d’un template ARM ou manuellement moyennant quelques minutes d’attentes le temps du build.